Kurs ASP_NET.docx

(1648 KB) Pobierz

Spis treści

01. ASP.NET - co to właściwie jest?              3

02. Gdzie te obiekty?              8

03. Przykłady zastosowania popularnych kontrolek - część I              13

04. Przykłady zastosowania popularnych kontrolek - część II              20

05. Metody nawigacji między formatkami              24

06. Zapamiętywanie stanu aplikacji - część I              29

07. Zapamiętywanie stanu aplikacji - część II              33

08. Tematy i skórki              37

09. Mechanizm Master Pages. Tworzenie mapy witryny.              42

10. Kontrolki wykorzystujące mapy witryny.              47

11. Sprawdzanie poprawności danych wejściowych              52

12. Przechwytywanie i obsługa błędów w aplikacjach ASP.NET              57

13. Tworzenie własnych kontrolek przez użytkowników. Cześć 1.              62

14. Tworzenie własnych kontrolek przez użytkowników. Cześć 2.              67

15. Tworzenie własnych kontrolek przez użytkowników. Cześć 3.              73

16. Metody dostępu do danych - wprowadzenie              79

17. Metody dostępu do danych - część 1              86

18. Metody dostępu do danych - część 2              92

19. Wprowadzenie do identyfikacji i autoryzacji użytkowników              100

20. Korzystanie z Web Service'ów              106


01. ASP.NET - co to właściwie jest?

Sieć internetowa jest przez wiele osób uważana za jeden z najważniejszych wynalazków drugiej połowy ubiegłego stulecia. Wykorzystywana jest ona w rozmaitych celach przez znaczną część ludzkiej populacji. Strony WWW (World Wide Web) są jedną z najpopularniejszych i najczęściej wykorzystywanych usług, obecnych w Internecie. W czasie swojej długiej kariery przeszły one swoistą rewolucję. Na początku zawierały one jedynie statyczny tekst natomiast później, dzięki technologiom takim jak język html, na internetowych witrynach zaczęła pojawiać się grafika, wprowadzono również rewolucyjny w swej prostocie mechanizm kiper-łączy. Podstawową wadą ówczesnych stron internetowych, był brak jakiejkolwiek możliwości wpływania użytkownika przeglądarki na ich zawartość.

Kolejnym etapem ewolucji usługi WWW było wprowadzenie mechanizmu znanego jako CGI – Common Gateway Interface. Standard ten definiował interfejs, służący do wymiany informacji między serwerami WWW, a zewnętrznymi programami i w praktyce umożliwiał tworzenie interaktywnych stron internetowych w znanych językach programowania (na przykład w C lub Perlu). Jedną z podstawowych wad omawianego interfejsu była niewielka wydajność. Czasochłonność operacji wykonywanych przez aplikacje tworzone zgodnie z tym standardem uniemożliwiała wykorzystywanie go w większych projektach. Obecnie CGI wykorzystywane jest dość rzadko - zostało wyparte przez specjalistyczne języki, służące do tworzenia stron internetowych. Doskonałym przykładem takich technologii są popularne PHP, czy ASP. Używając wspomnianych języków bardzo łatwo możemy stworzyć interaktywną stronę WWW, komunikującą się z użytkownikiem za pośrednictwem formularzy.

Wraz ze wzrostem popularności obiektowego modelu programowania, zaczęto się zastanawiać, w jaki sposób wykorzystać nową technologię przy tworzeniu stron internetowych. Bardzo szybko zorientowano się, że wykorzystując programowanie obiektowe można znacznie skrócić czas tworzenia zaawansowanych aplikacji internetowych. Obecnie jednymi z najpopularniejszych technologii, wykorzystywanymi w tym temacie są: oparta na języku Java, J2EE oraz,  będąca częścią platformy Microsoft .NET, technologia ASP.NET. Właśnie ta druga technologia zostanie omówiona w kolejnych rozdziałach naszego kursu.

Na początku wypada wspomnieć o tym, czym jest platforma Microsoft .NET. Dokładne omówienie tego zagadnienia wykracza znacznie poza zakres naszego kursu. Obecnie wystarczy nam jedynie wiedza o tym, że platforma ta, umożliwia bezpieczne i co ważniejsze bezbłędne działanie programów na wszystkich systemach operacyjnych z zainstalowanym środowiskiem uruchomieniowym. Dzięki zastosowaniu wspólnego środowiska uruchomieniowego programiści nie muszą się więcej martwić o to, czy tworzona przez nich aplikacja będzie poprawnie działać w danym systemie operacyjnym. Platforma .NET udostępnia również usługi takie jak: zarządzanie pamięcią operacyjną oraz wątkami, zawiera ona ponadto bogatą bibliotekę obiektowych klas, umożliwiających szybkie tworzenie działających aplikacji, w dowolnym wspieranym języku programowania. Dzięki technologii .NET możemy w prosty sposób tworzyć aplikacje działające w systemach Windows (a w przyszłości, dzięki dynamicznemu rozwojowi projektu Mono, także w systemach *nixowych), programy wykorzystujące jedynie wiersz poleceń, czy rozmaite aplikacje działające w Internecie.

ASP.NET jest technologią tworzenia w pełni dynamicznych stron internetowych, wykorzystującą środowisko uruchomieniowe CLR oraz ogromną funkcjonalność platformy .NET Framework. Głównym celem zespołu, tworzącego ASP.NET, było umożliwienie jak najszybszego i prostego tworzenia rozbudowanych serwisów internetowych. Zastosowanie programowania zdarzeniowego umożliwiło oddzielenie kodu aplikacji, tworzonego z językach takich jak Visual Basic czy C#, od warstwy prezentacji. Dało to programistom możliwość wielokrotnego wykorzystania tego samego kodu, oraz znacznie zwiększyło jego czytelność. Najnowsza wersja ASP.NET oznaczona jest numerem 2.0. Usprawnia ona w znaczący sposób wiele cech znanych z poprzednich wersji platformy, a także wprowadza wiele nowych elementów, wspomagających proces szybkiego tworzenia aplikacji internetowych.

Spróbujmy utworzyć naszą pierwszą aplikację w technologii ASP.NET. Do tego celu wymagane są: system Windows z zainstalowanym serwerem IIS, dostępna darmowo na stronach firmy Microsoft platforma .NET Framework oraz dowolny edytor tekstu (na przykład Notatnik). W praktyce jednak do tworzenia stron internetowych najprościej jest wykorzystać specjalistyczne środowisko programistyczne. Standartowym produktem firmy Microsoft jest środowisko Visual Studio, umożliwiające tworzenie aplikacji .NET (i nie tylko). Wszystkie przykłady, zawarte w tym kursie omawiane będą właśnie dla środowiska Visual Studio Web Developer 2005 Express Edition, które możemy ściągnąć za darmo ze stron producenta. Jeżeli najnowsza wersja Visual Studio nie przypadnie komuś do gustu może wykorzystywać w pracy inne środowiska programistyczne, takie jak Borland C# Builder, Sharp-Developer, czy ASP.NET Web Matrix. W tym przypadku, musimy się jednak liczyć z tym, że prawdopodobnie nie będziemy w stanie skorzystać z najnowszych możliwości udostępnianych przez ASP.NET w wersji 2.0.

Instalacja Visual Studio 2005 jest dość prosta i nie powinna sprawić problemów nawet początkującym użytkownikom. Po zainstalowaniu środowiska w menu Start pojawi się zakładka „Microsoft Visual Studio Web Developer 2005 Express Edition”. Ekran powitalny zainstalowanego środowiska programistycznego przedstawia się następująco:

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/01/screen01_small.JPG

Chcąc jak najszybciej utworzyć naszą pierwszą internetową aplikację, w górnym menu klikamy kolejno: File -> Web Site. Na ekranie pojawi się wówczas się okienko, w którym będziemy musieli wskazać typ szablonu, według którego chcemy tworzyć naszą aplikację. Nas interesuje oczywiście: „ASP.NET Web Site”. Zakładka Location umożliwia nam umieszczenie naszej aplikacji na lokalnym dysku twardym, bądź też zdalnym serwerze. Na początku proponuje pozostawić wybraną domyślnie opcję: File System. Poniżej możemy również wybrać język programowania, w którym będziemy pisać naszą aplikację. Standartowo, do wyboru mamy Visual Basica, C# oraz J#. W czasie kursu wszystkie omawiane przeze mnie przykłady tworzone będą w języku C#.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/01/screen02_small.JPG

Po naciśnięciu przycisku „Ok” Visual Studio utworzy nowy projekt. W środkowej części ekranu środowiska programistycznego będziemy mogli zobaczyć wygenerowany kod, zawarty w pliku Default.aspx. Plik ten możemy edytować w trybie Source, w którym formatki otwierają się domyślnie, oraz „Design”, pozwalającym na wizualną edycję strony internetowej. Po prawej stronie ekranu znajdują się okna, zatytułowane: Solution Explorer, gdzie widoczne są wszystkie pliki wchodzące w skład projektu, oraz Properties, służące do edycji parametrów aktualnie wybranego obiektu. Natomiast po lewej stronie ekranu możemy zobaczyć zakładki: Server Explorer oraz Toolbox. Naciśnięcie na którejś z nich spowoduje rozwinięcie nowych list, zawierających odpowiednie elementy. Korzystanie z elementów Toolboxa oraz Server Explorera zostanie wyjaśnione na przykładach w dalszej części kursu.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/01/screen03_small.JPG

Spróbujmy, zatem utworzyć pierwszą, prostą stronę internetową, wykorzystując Visual Studio 2005. Pierwszym krokiem, który musimy wykonać jest zmiana domyślnej nazwy strony. W wyświetlanym domyślnie na początku kodzie strony Default.aspx odnajdujemy linię wyglądającą następująco:

<title>Untitled Page</title>

Pomiędzy html-owskie znaczniki <title></title> możemy wstawić dowolny tekst. Przykładowo, w omawianej linii możemy wprowadzić następujące zmiany:

<title>Moja pierwsza strona</title>

Następnie zmieniamy tryb wyświetlania dokumentu na „Design” (służy do tego zakładka, znajdująca się w lewym, dolnym rogu edytowanej strony. Po przejściu w ten tryb w Visual Studio wyświetli nam podgląd aktualnej zawartości strony. W trybie tym możemy dodawać i usuwać nowe elementy formatki, korzystając z wspomnianego wcześniej narzędzia Toolbox. Po kliknięciu lewym przyciskiem myszy na zakładkę, znajdującą się w lewej części ekranu na ekranie ujrzymy listę elementów, które możemy wykorzystać przy tworzeniu witryny.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/01/screen04.JPG

Spróbujmy, zatem wprowadzić zmiany na naszej stronie, wykorzystując do tego narzędzie Toolbox (często nazywane po prostu „Paskiem narzędzi”). W tym celu rozwijamy znajdującą się na samej górze narzędzia, zakładkę „HTML”. Na liście, która powinna pojawić się w tym momencie, dostrzeżemy standardowe elementy języka html, takie jak na przykład: tabela („Table”), pola tekstowe („Textarea”, „Input (Text)”), czy też rozmaite przyciski. Spróbujmy wybrać, naciskając lewym przyciskiem myszy, element „Input (Text)”, a następnie przeciągnąć go na edytowaną stronę Default.aspx (uwaga – strona musi być otwarta w trybie „Design”). Widzimy, że wybrany przez nas element pojawił się w środkowym oknie Visual Studio. Następnie wybieramy ponownie element (tym razem na otwartej formatce, nie na pasku narzędzi), klikając na nim lewym przyciskiem myszy. W tym momencie w prawym, dolnym oknie Visual Studio pojawią się właściwości zaznaczonego elementu. W okienku tym (zatytułowanym po prostu: Properties) odnajdujemy wartość zatytułowaną „Value”. Odpowiada ona za tekst wyświetlany w polu tekstowym po uruchomieniu strony. Wpisując w oknie właściwości wybrany tekst, ustawiamy wartość atrybutu naszego pola tekstowego.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/01/screen05.JPG

Ostatnim krokiem, będzie obejrzenie efektów naszej dotychczasowej pracy. W Visual Studio wybieramy opcje: Build - > Build Page, a następnie: Debug -> Start Without Debugging. W tym momencie Visual Studio automatycznie uruchomi proces serwera IIS oraz otworzy okno przeglądarki, w którym wyświetlona zostanie zawartość edytowanej przez nas witryny. Efekt naszej dotychczasowej pracy powinien przedstawiać się następująco:

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/01/screen06_small.JPG


02. Gdzie te obiekty?

W poprzedniej części kursu udało się nam stworzyć pierwszą, najprostszą stronę internetową, wykorzystując do tego środowisko programistyczne Visual Studio Web Developer 2005. W tym rozdziale postaram się natomiast wyjaśnić dokładniej zasady działania, oraz wzajemnej współpracy elementów, tworzących aplikację ASP.NET.

Przymnijmy, do tej pory udało się nam stworzyć stronę internetową zawierającą pole tekstowe, w którym domyślnie wyświetlany był napis „przykładowy tekst". Dokonaliśmy tego w prosty sposób, przeciągając wymagany przez nas element z paska narzędzi, a następnie edytując jego właściwości za pomocą okna Properties. W stworzonym przez nas projekcie Visual Studio, spróbujmy ponownie otworzyć plik Default.aspx, w trybie Source. Szybko spostrzeżemy, że dodanie przez nas pola tekstowego w trybie „Design" spowodowało pojawienie się w kodzie strony nowej linii:

<input id="Text1" type="text" value="przykładowy tekst" />

Linia ta, jak zapewnie zdążyliście się domyślić jest odpowiedzialna za wyświetlanie przez przeglądarkę pola tekstowego. W podobny sposób, przeciągając na edytowaną stronę inne elementy html, wyświetlane w pasku narzędzi możemy w prosty sposób edytować zawartość strony. W praktyce do tworzenia prostych serwisów WWW, ręczne edytowanie źródeł pliku Default.aspx, jest rzadko wymagane.

W poprzednim rozdziale kursu wspomniałem, że interaktywne strony ASP.NET tworzymy, wykorzystując obiektowy model programowania i języki, takie jak: Visual Basic .NET, C#, czy J#. W tym miejscu należy wyjaśnić pewną kwestię. Każda strona internetowa, stworzona w technologii ASP.NET składa się zasadniczo z dwóch warstw. Pierwsza z nich, jest to warstwa prezentacji i odpowiedzialna jest ona za to, co wyświetlane jest w oknie przeglądarki. Warstwa ta tworzona jest w języku xhtml i zawarta jest zazwyczaj w plikach z rozszerzeniem *.aspx. Natomiast druga warstwa jest to właściwy kod aplikacji, tworzony we wspomnianych wyżej językach i wykonywany po stronie serwera. Zerknijmy jeszcze raz na kod naszej strony Default.aspx. Pierwsza linia w pliku przedstawia się następująco:

<%@  Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

To, co nas w tym momencie interesuje, to atrybut dyrektywy “Page" o nazwie “CodeFile". Zawiera on nazwę pliku, w którym znajduje się właściwy kod odpowiedzialny za działanie strony. Jego zawartość możemy podejrzeć klikając dwukrotnie lewym przyciskiem myszy w oknie Visual Studio w trybie Design, klikając w tym samym miejscu prawym przyciskiem myszy i wybierając opcję: View Code, bądź też klikając na „plus" znajdujący się przy pliku Default.aspx w oknie Solution Explorera i otwierając pojawiający się wówczas w oknie plik o nazwie Default.aspx.cs.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/02/screen05_small.JPG

Po otwarciu pliku Default.aspx.cs widzimy, że została zdefiniowana w nim jedna klasa o nazwie _Default. Klasa ta dziedziczy z klasy System.Web.UI.Page, która reprezentuje pojedynczą formatkę (czyli w praktyce stronę widzianą w oknie przeglądarki). Klasa ta, zawiera aktualnie tylko jedną metodę o nazwie „Page_Load", która uruchamiana jest przy każdym załadowaniu strony w oknie przeglądarki.

public partial class _Default : System.Web.UI.Page
{
      protected void Page_Load(object sender, EventsArgs e)
      {

      }
}

Widzimy, więc że każda tworzona przez nas formatka jest oddzielnym obiektem, działającym na serwerze. Obiekt ten tworzony jest za każdym razem, w momencie zapytania klienta do serwera, jego zadaniem jest wygenerowanie odpowiedzi dla klienta. Po wykonaniu tego zadania obiekt jest niszczony. Dlatego między innymi w obiekcie tego typu nie można przechowywać wartości jako jego właściwości, między kolejnymi wywołaniami strony.

Otwórzmy ponownie w oknie środowiska programistycznego plik Default.aspx. Dotychczas, przy tworzeniu stron w technologii ASP.NET wykorzystywaliśmy kontrolkę html. Tym razem użyjemy kontrolek serwerowych. W pasku narzędzi wybierzmy grupę kontrolek „Standard". Następnie przeciągnijmy na formatkę obiekty: „Label" oraz „Buton".

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/02/screen01.JPG

Zadaniem kontrolki Label jest wyświetlanie tekstu w oknie przeglądarki. Żeby zmienić wyświetlany tekst kliknijmy na obiekcie lewym przyciskiem myszy, a następnie w oknie właściwości (Properties) zmieńmy wartość atrybutu Text. Proponuje zmienić jego wartość na: „pierwsze uruchomienie strony".

Następnie kliknijmy dwukrotnie lewym przyciskiem myszy na przycisku Button. W tym momencie zostanie ponownie otwarty plik Default.aspx.cs, gdzie wewnątrz klasy _Default, została wygenerowana nowa metoda Button1_Click. Metoda ta będzie uruchamiana w momencie naciśnięcia przez użytkownika przycisku. Załóżmy, że chcemy, aby po naciśnięciu przycisku zmieniał się tekst widoczny w przeglądarce internetowej. W tym celu musimy zmodyfikować metodę Button1_Click w następujący sposób.

protected void Button1_Click(object sender, EventsArgs e){
    this.Label1.Text = "Właśnie nacisnąłeś przycisk!";
}

Wszystkie obiekty obecne na formatce są właściwościami naszej klasy _Default, do których mamy dostęp dzięki słowu kluczowemu „this" (jego stosowanie nie jest jednak wymagane). „Label1" jest nazwą obiektu, reprezentującego pole tekstowe, natomiast Text, zmienianą już przez nas wcześniej (z wykorzystaniem okna „Properties") polem tego obiektu.

Otwierając źródło pliku Default.aspx w edytorze Visual Studio możemy dostrzec pojawienie się nowych linii kodu:

<asp:Label ID="Label1" runat="Server" Text="Pierwsze uruchomienie strony"></asp:Label>
<asp:Buton ID="Button1" runat="Server" OnClick="Button1_Click" Text="Buton"></asp:Buton>

Najważniejszą zmianą, w porównaniu ze stosowanym poprzednio polem tekstowym html, jest obecność atrybutu runat="Server" przy obu kontrolkach. Oznacza to, że działają one po stronie serwera. Wyjaśnimy to dokładnie na przykładzie stworzonej przez nas formatki. Zdefiniowany na niej Buton posiada właściwość „OnClick", która mówi o tym, jaka akcja powinna być wykonana w momencie naciśnięcia przycisku przez użytkownika. „Życie" naszej aplikacji rozpoczyna się w momencie, kiedy użytkownik zechce wyświetlić w oknie przeglądarki stronę Default.aspx. Przeglądarka wysyła zapytanie do serwera, gdzie tworzony jest obiekt klasy _Default. Następnie serwer wysyła odpowiedź do klienta (czego efektem będzie pojawienie się strony w oknie przeglądarki). Obiekt reprezentujący pojedynczą formatkę jest w tym momencie niszczony.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/02/screen02.JPG

Następnie użytkownik naciska przycisk „Button" w oknie przeglądarki. W tym momencie przeglądarka klienta wysyła ponowne zapytanie do serwera (zdarzenie to, określane jest jako „PostBack"). Tym razem zawiera ono jednak obiekt ViewState, zawierający informacje, na temat zawartości strony. Na serwerze tworzony jest ponownie obiekt klasy _Default.aspx, wywoływana jest jego metoda Button1_Click, następnie do klienta odsyłana jest odpowiedź, a sam obiekt jest ponownie niszczony. Efektem działania wspomnianej metody widoczny jest w oknie przeglądarki klienta.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/02/screen03_small.JPG

Aplikacja kończy działanie w momencie wygaśnięcia sesji użytkownika (domyślnie jest to dwadzieścia minut). W tym czasie, żaden klient nie może kierować zapytań do aplikacji. Natomiast obiekty reprezentujące poszczególne formatki tworzone są tylko w celu odpowiedzi na konkretne zapytanie klienta i po udzieleniu odpowiedzi przez serwer są natychmiast niszczone.

Oprócz plików reprezentujących poszczególne formatki w skład aplikacji WWW wchodzić może wiele innych obiektów. Aby zobaczyć ich listę w oknie Visual Studio wybieramy opcję: Website -> Add New Item. Wyświetli się wówczas okno, zawierające umożliwiające wybór obiektów, które mogą wchodzić w skład aplikacji.

http://www.centrumxp.pl/Img/Art/dotNET/AspNET/02/screen04_small.JPG

Widzimy, że środowisko programistyczne daje nam możliwość dołączenia do projektu kolejnych formatek („Web Form"), zwykłych stron html, plików zawierających szablony stylów, oraz skryptów wykonywanych po stronie klienta. W sumie do wyboru mamy prawie trzydzieści rozmaitych obiektów, począwszy od najprostszych plików tekstowych, poprzez obiekty odpowiedzialne za wygląd i działanie witryny, a skończywszy na obiektach odpowiedzialnych za pobieranie i przechowywanie danych w pamięci serwera. Spróbujmy dodać do projektu nową formatkę. W tym celu wybieramy w wyświetlonym oknie szablon „Web Form", nadajemy mu nazwę (domyślnie jest to: „Default2.aspx"), wybieramy język programowania w jakim tworzony będzie kod źródłowy strony. W końcu, musimy odpowiedzieć na pytanie czy chcemy by kod strony był umieszczany w oddzielnym pliku (jest to rozwiązanie zalecane, znacznie zwiększające przejrzystość tworzonych obiektów), oraz czy strona powinna być powiązana z obecnym w projekcie obiektem MasterPage (mechanizm ten służący do prostego ujednolicania wyglądu wszystkich formatek obecnych w projekcie zostanie omówiony w kolejnych rozdziałach kursu). Po kliknięciu „Ok", w Solution Explorerze będzie widoczny nowy obiekt reprezentujący dodaną formatkę. Jeżeli chcemy, aby nowa strona była wyświetlana jako pierwsza po uruchamianiu projektu, klikamy na nią w oknie Solution Explorera prawym przyciskiem myszy i wybieramy opcję: „Set As Start Page".


03. Przykłady zastosowania popularnych kontrolek - część I

 

Platforma .NET udostępnia pokaźną ilość kontrolek, które możemy wykorzystywać przy tworzeniu stron internetowych w technologii ASP.NET. Wiele tego typu elementów tworzonych i udostępnianych jest również (darmowo, lub za opłatą) przez niezależne firmy. W rozdziale tym, postaram się zaprezentować zasady działania i wykorzystywania kilku najpopularniejszych kontrolek.

W poprzednim rozdziale naszego kursu, wykorzystywaliśmy obiekt Label, służący do wyświetlania tekstu w oknie przeglądarki internetowej. Po naciśnięciu przycisku następowała zmiana tekstu, wyświetlanego przez tą kontrolkę. Wyobraźmy sobie sytuację, w której użytkownik musi własnoręcznie wprowadzić wymagany tekst. Dzieje się tak ogromnej większości rozmaitych formularzy, umieszczanych na stronach internetowych. Do wprowadzania danych może posłużyć kontrolka TextBox. W Visual Studio stwórzmy nową stronę, która zawierać będzie 3 obiekty typu Label, dwa TextBoxy jeden przycisk Buton. Parametry, które należy zmienić dla każdego z obiektów przedstawiam w poniższej tabeli.

Klasa obiektu

ID

 Text

Label

...
Zgłoś jeśli naruszono regulamin