690 likes | 821 Views
Technologia ASP.NET. Zalety ASP.NET (ASPX). Kodowanie po stronie serwera Skrypty działające po stronie klienta Kompilacja kodu zapewniająca bezpieczeństwo i skalowalność. Kontrolki serwera. Pełnią podobne zadania jak kontrolki HTML
E N D
Zalety ASP.NET (ASPX) • Kodowanie po stronie serwera • Skrypty działające po stronie klienta • Kompilacja kodu zapewniająca bezpieczeństwo i skalowalność
Kontrolki serwera • Pełnią podobne zadania jak kontrolki HTML • Wykonywane są jednak po stronie serwera co eliminuje problemy niezgodności z przeglądarkami internetowymi
Struktura aplikacji • Pliki z rozszerzeniem aspx są projektami stron zawierającymi odwołania do plików z kodem wykonywanym w tle (Code Behind) • Aplikacja generuje stronę wysyłaną do klienta w kodzie html
Pozostałe składniki • Skompilowany kod aplikacji ***.dll • DLL (z ang. Dynamic Link Library lub Dynamic Linked Library - biblioteka łączona dynamicznie) - w środowisku Windows biblioteka współdzielona (z ang. shared library), która przechowuje implementacje różnych funkcji (podprogramów) programu i/lub zasoby programu. Biblioteka DLL sama nie może wywoływać swoich funkcji (wykorzystywać zasobów w niej zawartych), może to zrobić jedynie program EXE.
Pozostałe składniki • Plik konfiguracyjny Web.config • Inne pliki projektu nie wymagane do uruchomienia aplikacji
Wygenerowanie aplikacji wymaga uruchomienia serwera IIS • Serwis Internet Information Services – IIS jest składnikiem systemu Windows ale musi być specjalnie zainstalowany • Jeżeli nie zmieniono ustawień IIS jego macierzystym katalogiem jest C:\Inetpub\wwwroot • Strona startowa aplikacji musi być umieszczona w katalogu macierzystym lub w podkatalogu z nazwą aplikacji
Zasoby niezbędne do uruchomienia • Strona startowa ***.aspx • Plik ***.dll zawierający wszystkie pliki niezbędne do uruchomienia aplikacji • Składniki te mogą być umieszczone w rzeczywistym katalogu w ścieżce c:\Inetpub\wwwroot • lub w katalogu wirtualnym
Uruchamianie aplikacji z rzeczywistego katalogu • W katalogu c:\Inetpub\wwwroot tworzymy katalog DzienDobry i umieszczamy w nim plik Start.aspx
Budujemy aplikację (Build) i publikujemy ją w katalogu macierzystym
Tworzenie katalogu wirtualnego • Przed utworzeniem pliku dll ustawiamy serwer we właściwościach aplikacji na serwerze IIS • Następnie tworzymy katalog wirtualny (Create Virtual Directory) • Konfigurujemy IIS (Panel sterowania -> Narzędzia administracyjne -> Internetowe usługi informacyjne)
Składniki niezbędne do uruchomienia aplikacji z dowolnego serwera • Na komputerze musi funkcjonować odpowiednio skonfigurowany serwer IIS • W przypadku katalogu rzeczywistego - w katalogu macierzystym IIS w podkatalogu bin musi być zapisany plik dll i w miejscu wywoływania z localhost plik startowy aspx • W przypadku katalogu wirtualnego katalog aplikacji w miejscu skoordynowanym z adresem tego katalogu • środowisko .NETFramework
Łączenie aplikacji internetowych z bazą danych • W trybie debuggowania aplikacje webowe łączą się z bazą danych podobnie jak aplikacje windowsowe • Aplikacja webowa uruchamiana z sieci jest widziana przez serwer baz danych jako użytkownik ASPNET • Jeżeli w serwerze taki użytkownik nie jest widoczny to należy go uaktywnić
Uprawnienia ASPNET • Utworzony użytkownik ASPNET nie ma żadnych uprawnień • Nie można uprawnień nadać programowo, gdyż użytkownik sam sobie uprawnień nie może nadać • Uprawnienia może nadać właściciel bazy danych
Nadawanie uprawnień w SQL GRANT SELECT ON [dbo].[Studenci] TO [ASPNET]
Kod wykonywany w tle using System.Data; using System.Data.SqlClient; namespace Baza { public partial class _Default : System.Web.UI.Page { DataSet Studia = new DataSet(); DataTable Studenci = new DataTable(); protected void Page_Load(object sender, EventArgs e) { SqlDataAdapter Adapter = new SqlDataAdapter ("Select * From Studenci", "Data Source=STACJONARNY\\SQLEXPRESS;Integrated Security=True;Initial Catalog=Test"); Studia.Tables.Add(Studenci); Studia.Clear(); Adapter.Fill(Studia, "Studenci"); }
Kod wykonywany w tle - cd protected void Button1_Click(object sender, EventArgs e) { GridView1.DataSource = Studia.Tables["Studenci"]; GridView1.DataBind(); }
Przesyłanie danych pomiędzy klientem i serwerem • Do dynamicznego umieszczania na stronie klienta danych służy obiekt Response • Metoda Write obiektu Response umieszcza łańcuch w dokumencie użytkownika
Kod wykonywany w tle DataSet Studia = new DataSet(); DataTable Studenci = new DataTable(); protected void Page_Load(object sender, EventArgs e) { SqlDataAdapter Adapter = new SqlDataAdapter ("Select * From Studenci", "Data Source=STACJONARNY\\SQLEXPRESS;Integrated Security=True;Initial Catalog=Test"); Studia.Tables.Add(Studenci); Studia.Clear(); Adapter.Fill(Studia, "Studenci"); }
Kod wykonywany w tle protected void Button2_Click(object sender, EventArgs e) { int i =1; foreach(DataRow _r in Studia.Tables["Studenci"].Rows) { Response.Write(i.ToString() + ". "); Response.Write(_r["Imie"].ToString().Trim() + " "); Response.Write(_r["Nazwisko"].ToString().Trim()); Response.Write("<BR>"); i++; } }
Umieszczanie ciasteczek na dysku klienta • Ciasteczka (ang. cookies) to niewielkie informacje tekstowe, wysyłane przez serwer WWW i zapisywane po stronie użytkownika (zazwyczaj na twardym dysku). Domyślne parametry ciasteczek pozwalają na odczytanie informacji w nich zawartych jedynie serwerowi, który je utworzył. Ciasteczka są stosowane najczęściej w przypadku liczników, sond, sklepów internetowych czy stron wymagających logowania.
Wykorzystanie polecenia Response i Request • Klienci zapisani są w bazie Test w tabeli Klienci z autonumerowanym indeksem • Każdemu nowemu klientowi wysyłamy ciasteczko z jego identyfikatorem • W momencie żądania strony sprawdzamy czy klient miał wysłane ciasteczko
Kod w tle dla ładowania strony Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim Ide As String LadujKlientow() Try Ide = Request.Cookies("Klient")("Identyfikator").ToString() Catch Nowy = False Response.Write("Jesteś nowym klientem!") Response.Write("<BR>") Response.Write("Podaj nazwę i adres.") Response.Write("<BR>") End Try