ASP.NET to najnowsza technologia Microsoftu, będąca łącząca Active Server Pages (ASP) z platformą .NET. Umożliwia ona pisanie wydajnych aplikacji WWW, korzystających z zawansowanych możliwości środowiska .NET.
Jeśli specjalizujesz się w tworzeniu takich aplikacji i chcesz nadążać za nowymi trendami w tej dziedzinie, "ASP.NET. Vademecum profesjonalisty" jest książką dla Ciebie. Znajdziesz tu w zwięzłej i przystępnej formie kompletny opis ASP.NET, a także innych powiązanych z nią technologii.
Książka opisuje między innymi:
* Klasy bazowe i podstawowe obiekty ASP.NET
* Szczegółowe wskazówki dotyczące projektowania i konfigurowania aplikacji ASP.NET
* Nową technologię tworzenia interfejsu użytkownika: WebForms i zaawansowane aspekty jej użycia
* Dostęp do danych za pomocą ADO.NET
* Użycie języka XML w połączeniu z ASP.NET
* Tworzenie usług sieciowych (web services), użycie protokołów SOAP i UDDI
* Model bezpieczeństwa aplikacji ASP.NET
* Obsługiwanie wiadomości
* Użycie usług katalogowych Active Directory
* Programowanie urządzeń przenośnych w ASP.NET
Książkę uzupełniają dodatki omawiające architekturę platformy .NET, najczęściej używane obiekty ASP.NET i ADO -- kontrolki serwera i Microsoft Mobile Internet Toolkit. Zawarta jest w niej także przykładowa kompletna aplikacja, w praktyczny sposób ilustrująca działanie ASP.NET.
Jeśli programowałeś wcześniej w ASP, "ASP.NET. Vademecum profesjonalisty" to jedyna książka, która jest Ci potrzebna, by w pełni wykorzystać możliwości tej technologii. To książka napisana przez profesjonalistów dla profesjonalistów. To książka dla Ciebie.
1. IDZ DO
PRZYK£ADOWY ROZDZIA£
ASP .NET.
SPIS TRE CI
Vademecum
KATALOG KSI¥¯EK profesjonalisty
Autor: Scott Worley
KATALOG ONLINE T³umaczenie: Pawe³ Janociñski
ISBN: 83-7197-691-7
ZAMÓW DRUKOWANY KATALOG Tytu³ orygina³u: Inside ASP.NET
Format: B5, stron: 482
TWÓJ KOSZYK Przyk³ady na ftp: 385 kB
ASP .NET to najnowsza technologia Microsoftu, bêd¹ca ³¹cz¹ca Active Server Pages
DODAJ DO KOSZYKA (ASP) z platform¹ .NET. Umo¿liwia ona pisanie wydajnych aplikacji WWW,
korzystaj¹cych z zawansowanych mo¿liwo ci rodowiska .NET.
CENNIK I INFORMACJE Je li specjalizujesz siê w tworzeniu takich aplikacji i chcesz nad¹¿aæ za nowymi
trendami w tej dziedzinie, „ASP .NET Vademecum profesjonalisty” jest ksi¹¿k¹ dla
Ciebie. Znajdziesz tu w zwiêz³ej i przystêpnej formie kompletny opis ASP .NET,
ZAMÓW INFORMACJE a tak¿e innych powi¹zanych z ni¹ technologii.
O NOWO CIACH
Ksi¹¿ka opisuje miêdzy innymi:
ZAMÓW CENNIK • Klasy bazowe i podstawowe obiekty ASP .NET
• Szczegó³owe wskazówki dotycz¹ce projektowania i konfigurowania aplikacji
ASP .NET
CZYTELNIA • Now¹ technologiê tworzenia interfejsu u¿ytkownika: WebForms i zaawansowane
aspekty jej u¿ycia
FRAGMENTY KSI¥¯EK ONLINE • Dostêp do danych za pomoc¹ ADO .NET
• U¿ycie jêzyka XML w po³¹czeniu z ASP .NET
• Tworzenie us³ug sieciowych (web services), u¿ycie protoko³ów SOAP i UDDI
• Model bezpieczeñstwa aplikacji ASP .NET
• Obs³ugiwanie wiadomo ci
• U¿ycie us³ug katalogowych Active Directory
• Programowanie urz¹dzeñ przeno nych w ASP .NET
Ksi¹¿kê uzupe³niaj¹ dodatki omawiaj¹ce architekturê platformy .NET, najczê ciej
u¿ywane obiekty ASP .NET i ADO — kontrolki serwera i Microsoft Mobile Internet
Toolkit. Zawarta jest w niej tak¿e przyk³adowa kompletna aplikacja, w praktyczny
sposób ilustruj¹ca dzia³anie ASP .NET.
Wydawnictwo Helion Je li programowa³e wcze niej w ASP, „ASP .NET. Vademecum profesjonalisty”
ul. Chopina 6 to jedyna ksi¹¿ka, która jest Ci potrzebna, by w pe³ni wykorzystaæ mo¿liwo ci tej
44-100 Gliwice technologii. To ksi¹¿ka napisana przez profesjonalistów dla profesjonalistów.
tel. (32)230-98-63
To ksi¹¿ka dla Ciebie.
e-mail: helion@helion.pl
2. 5RKU VTG EK
1 #WVQTG
9RTQYCFGPKG
%ú è + 9RTQYCFGPKG FQ #520'6
4QFKC 2TGINæF #520'6
ASP.NET ...............................................................................................................................17
Biblioteki klas bazowych .NET .............................................................................................19
Konfiguracja aplikacji sieciowych ASP.NET .......................................................................22
Zarządzanie sesjami i stanem ................................................................................................22
Zarządzanie buforowaniem....................................................................................................22
Warstwy aplikacji WWW w ASP.NET .................................................................................23
Web Forms.............................................................................................................................24
Usługi sieciowe XML ............................................................................................................25
Współpraca z COM/COM+ i usługi składników...................................................................26
ADO.NET ..............................................................................................................................26
Przejście z klasycznego ASP do ASP.NET ...........................................................................26
Globalizacja i lokalizacja.......................................................................................................27
Poprawione bezpieczeństwo ..................................................................................................28
4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
Pliki ustawień aplikacji ..........................................................................................................29
Składnia strony ......................................................................................................................32
Najczęściej stosowane obiekty i klasy ASP.NET..................................................................44
Śledzenie aplikacji ASP.NET ................................................................................................48
Przechodzenie do ASP.NET ..................................................................................................54
4QFKC -QPHKIWTQYCPKG CRNKMCELK #520'6
Poło enie pliku konfiguracyjnego web.config ......................................................................59
Stosowanie sekcji konfiguracyjnej appSettings ................................................................62
Analiza sekcji konfiguracyjnych system.web........................................................................63
%ú è ++ 4FG #520'6
4QFKC 2TQITCOQYCPKG QRCTVG PC 9GD (QTOU
Wprowadzenie do Web Forms ..............................................................................................77
Architektura Web Forms .......................................................................................................82
Oddzielanie kodu od interfejsu u ytkownika ........................................................................86
Kontrolki serwera ..................................................................................................................87
Kontrolki sprawdzania poprawności ...................................................................................125
4QFKC CTæFCPKG UVCPGO Y #520'6
Czym jest zarządzanie stanem? ...........................................................................................135
Stosowanie zarządzania stanem aplikacji w ASP.NET .......................................................138
3. #520'6 8CFGOGEWO RTQHGULQPCNKUV[
%ú è +++ QUVúR FQ FCP[EJ Y #520'6
4QFKC 5VQUQYCPKG #10'6 Y CRNKMCELCEJ #520'6
Dostęp do danych z perspektywy strony internetowej ........................................................151
ADO i ADO.NET ................................................................................................................153
Praca z podstawowymi obiektami ADO.NET .....................................................................160
Tworzenie Web Forms orientowanych na dane ..................................................................179
Aplikacje ASP.NET z obsługą transakcji ............................................................................191
4QFKC 5VQUQYCPKG Lú[MC :/. Y CRNKMCELCEJ #520'6
Struktura dokumentu XML..................................................................................................196
Stosowanie języka XML w ASP.NET.................................................................................199
Inne technologie oparte na XML .........................................................................................201
Stosowanie języka XML w aplikacjach...............................................................................206
Przykłady z ycia wzięte......................................................................................................207
%ú è +8 CCYCPUQYCPG VGEJPQNQIKG
4QFKC 2TQLGMVQYCPKG WU WI UKGEKQY[EJ :/. Y #520'6
Wprowadzenie do usług sieciowych XML..........................................................................229
Stosowanie SOAP Toolkit w usługach sieciowych XML ...................................................242
XML Web Service Discovery — reklamowanie serwisu....................................................252
Stosowanie usług sieciowych XML na stronach ASP.NET ................................................255
4QFKC CDGRKGECPKG CRNKMCELK #520'6
Przegląd funkcji bezpieczeństwa ASP.NET ........................................................................259
Stosowanie zabezpieczeń w aplikacjach ASP.NET ............................................................265
Wewnątrz zabezpieczeń ASP.NET......................................................................................282
Inne aspekty bezpieczeństwa ...............................................................................................287
4QFKC 5VQUQYCPKG WU WI UM CFPKMÎY Y #520'6
Czym są usługi składników?................................................................................................289
Stosowanie usług składników w aplikacjach ASP.NET......................................................291
Obiekt roboczy.....................................................................................................................296
Stosowanie obiektu roboczego ............................................................................................300
Komponenty usługowe ........................................................................................................306
4QFKC 5VQUQYCPKG WU WI QDU WIK YKCFQOQ EK Y #520'6
Wprowadzenie do systemów obsługi wiadomości ..............................................................311
Zarządzanie kolejkami wiadomości MSMQ w Windows 2000 ..........................................314
Architektura usług obsługi wiadomości w .NET.................................................................315
Wykonywanie zadań za pomocą MSMQ ............................................................................318
4QFKC 5VQUQYCPKG WU WI MCVCNQIQY[EJ Y #520'6
Wprowadzenie do usług katalogowych ...............................................................................325
Jak działa Active Directory?................................................................................................327
Korzyści ze stosowania Active Directory............................................................................328
Podsumowanie technologii Active Directory ......................................................................330
4QFKC .QMCNKCELC K INQDCNKCELC CRNKMCELK #520'6
Czym jest lokalizacja? .........................................................................................................337
Lokalizowanie aplikacji ASP.NET......................................................................................340
4. 5RKU VTG EK
%ú è 8 CCYCPUQYCPG 9GD (QTOU
4QFKC -QPVTQNC DWHQTQYCPKC Y #520'6
Zarządzanie buforowaniem w ASP.NET.............................................................................359
Buforowanie stron wychodzących.......................................................................................360
Buforowanie fragmentów (częściowe buforowanie strony) ................................................366
Buforowanie ądań ..............................................................................................................369
4QFKC 6YQTGPKG MQPVTQNGM W [VMQYPKMC
K MQPVTQNGM FQUVQUQYCP[EJ FNC #520'6
Kontrolki u ytkownika ........................................................................................................375
Wprowadzenie do kontrolek dostosowanych ......................................................................391
4QFKC 2TQITCOQYCPKG WTæFG RTGPQ P[EJ Y #520'6
WAP (Wireless Application Protocol) ................................................................................414
WML (Wireless Markup Language)....................................................................................415
Wprowadzenie ASP.NET ....................................................................................................416
%ú è 8+ 2QFUWOQYCPKG
4QFKC 2QFUWOQYCPKG
Czym jest ProjectPal? ..........................................................................................................437
Instalacja aplikacji ProjectPal ..............................................................................................439
Krótki przegląd aplikacji .....................................................................................................445
Architektura aplikacji ..........................................................................................................447
Warstwy usług w ProjectPal ................................................................................................450
Interfejsy u ytkownika ProjectPal .......................................................................................451
Baza danych ProjectPal .......................................................................................................451
Komponenty ProjectPal .......................................................................................................454
Wewnątrz kodu ProjectPal...................................................................................................456
QFCVMK
QFCVGM # 2TGINæF 0'6
Programowanie wielu platform ...........................................................................................489
Wiele języków programowania ...........................................................................................489
Biblioteki klas bazowych .NET ...........................................................................................490
Wspólne środowisko uruchomieniowe ................................................................................494
Wspólny system typów ........................................................................................................495
Produkty dla serwerów .NET...............................................................................................495
QFCVGM $ 0CLEú EKGL W [YCPG QDKGMV[ #520'6
Obiekt HttpContext (statyczna kontrolka Context) .............................................................497
Klasa HttpApplication .........................................................................................................498
Klasa HttpApplicationState (statyczny obiekt Application)................................................499
Klasa HttpSessionState (statyczny obiekt Session) .............................................................500
Klasa HttpRequest (statyczny obiekt Request)....................................................................501
Klasa HttpResponse (statyczny obiekt Response)...............................................................502
Klasa Server (HttpServerUtility) .........................................................................................504
SMTPMail API ....................................................................................................................504
QFCVGM % 0CLEú EKGL W [YCPG QDKGMV[ #1
Obiekt DataSet .....................................................................................................................507
Obiekt DataTable .................................................................................................................508
5. #520'6 8CFGOGEWO RTQHGULQPCNKUV[
Obiekt DataColumn .............................................................................................................510
Klasa DataRow ....................................................................................................................511
Obiekt DataRelation ............................................................................................................512
Obiekt DataView .................................................................................................................512
Klasa DataRowView............................................................................................................513
Obiekty OLEDB ..................................................................................................................514
Obiekty SQLData... .............................................................................................................517
QFCVGM -QPVTQNMK *6/. UGTYGTC
Obiekt HtmlForm — element form.................................................................................523
Obiekt HtmlInputText — element input .........................................................................525
Obiekt HtmlInputHidden — element input type=hidden ............................................526
Obiekt HtmlInputCheckbox — element input type=checkbox....................................526
Obiekt HtmlInputRadioButton — element input type=radiobutton ............................527
Obiekt HtmlInputFile — element input type=file........................................................528
Obiekt HtmlTextArea — element textarea .....................................................................529
Obiekt HtmlButton — element button ............................................................................531
Obiekt HtmlInputButton — element input type=button ..............................................532
Obiekt HtmlAnchor — element a ...................................................................................532
Obiekt HtmlImage — element img .................................................................................533
Obiekt HtmlInputImage — element input type=image ...............................................534
Obiekt HtmlSelect — elementy select i option ..........................................................535
Obiekt HtmlTable — element table ................................................................................537
Obiekt HtmlTableRow — element tr ..............................................................................538
Obiekt HtmlTableCell — element td ..............................................................................539
QFCVGM ' -QPVTQNMK #52 UGTYGTC
Najczęściej stosowane właściwości klasy Webcontrol .......................................................542
Kontrolka Label ...................................................................................................................544
Kontrolka Image ..................................................................................................................544
Kontrolka TextBox ..............................................................................................................544
Kontrolka DropDownList ....................................................................................................545
Kontrolka ListBox ...............................................................................................................545
Kontrolka CheckBox ...........................................................................................................546
Kontrolka CheckBoxList .....................................................................................................546
Kontrolka RadioButton........................................................................................................547
Kontrolka RadioButtonList..................................................................................................548
Kontrolka Button .................................................................................................................548
Kontrolka LinkButton..........................................................................................................549
Kontrolka ImageButton .......................................................................................................549
Kontrolka HyperLink...........................................................................................................550
Kontrolka Table ...................................................................................................................550
Kontrolka TableCell ............................................................................................................551
Kontrolka TableRow............................................................................................................551
Kontrolka Panel ...................................................................................................................551
Kontrolka Repeater ..............................................................................................................552
Kontrolka DataList ..............................................................................................................552
Kontrolka DataGrid .............................................................................................................554
Kontrolka AdRotator ...........................................................................................................556
Kontrolka Calendar..............................................................................................................557
QFCVGM ( /KETQUQHV /QDKNG +PVGTPGV 6QQNMKV
Grupy kontrolek ...................................................................................................................559
Kontrolki formularza i układu strony ..................................................................................560
Kontrolki prezentacyjne.......................................................................................................564
6. 5RKU VTG EK
Kontrolki nawigacyjne.........................................................................................................565
Kontrolki wprowadzania danych .........................................................................................567
Kontrolki sprawdzania poprawności ...................................................................................570
QFCVGM ) .KUVC CUQDÎY 0'6
Witryny działające na bazie ASP.NET................................................................................579
Witryny dotyczące ASP.NET ..............................................................................................579
Witryny dotyczące C# .........................................................................................................580
Witryny dotyczące Visual Basic .NET ................................................................................580
Witryny dotyczące .NET .....................................................................................................580
Usługi sieciowe XML ..........................................................................................................581
Witryny firmy Microsoft dotyczące .NET...........................................................................581
Grupy dyskusyjne dotyczące .NET .....................................................................................581
Listy wysyłkowe dotyczące .NET .......................................................................................582
Magazyny.............................................................................................................................582
5MQTQYKF
7. 4QFKC
2TQLGMVQYCPKG
CRNKMCELK #520'6
Ten rozdział wprowadza kilka tematów związanych z tworzeniem aplikacji ASP.NET.
Są to:
Pliki ustawień aplikacji
Składnia stron WWW
Najczęściej stosowane obiekty i klasy w ASP.NET
Funkcje śledzenia
Sprawy dotyczące migracji do ASP.NET
2NKMK WUVCYKG CRNKMCELK
Aplikacje ASP.NET mogą być konfigurowane za pomocą dwóch mechanizmów, opartych
na plikach:
global.asax — plik globalnych ustawień aplikacji.
web.config — plik w formacie XML zawierający konfigurację aplikacji.
2NKM INQDCNCUCZ
Plik global.asax słu y dwóm głównym celom:
Umo liwia definiowanie zmiennych, obiektów i danych o zasięgu aplikacji i sesji.
Umo liwia definiowanie procedur obsługi zdarzeń, które mają miejsce w zakresie
aplikacji, na poziomie sesji i aplikacji.
[TGMV[Y[ UVQUQYCPG Y RNKMW INQDCNCUCZ
Plik global.asax mo e zawierać następujące elementy:
8. %ú è + 9RTQYCFGPKG FQ #520'6
dyrektywę #UUGODN[ — stosowana do rejestrowania skompilowanych zbiorów
zawierających aplikacje WWW; innym sposobem rejestrowania zbiorów jest u ycie
pliku web.config, który jest omówiony później w podrozdziale „Plik konfiguracyjny
web.config”
#UUGODN[ 0COG /[#UUGODN[FNN
dyrektywę +ORQTV — importuje jawnie do aplikacji przestrzeń nazw. Wszystkie
klasy i interfejsy zdefiniowane w tej przestrzeni stają się dostępne dla aplikacji
+ORQTV 0COGURCEG 5[UVGO+1
+ORQTV 0COGURCEG 5[UVGO%QNNGEVKQPU
dyrektywę #RRNKECVKQP — definiuje specyficzną dla aplikacji informację u ywaną
przez aplikację ASP.NET; jedyną funkcją tej dyrektywy jest dziedziczenie
właściwości innego obiektu. Ma dwa atrybuty — pierwszy to +PJGTKVU, gdzie
podaje się nazwę klasy, którą rozszerzamy, zaś drugi — GUETKRVKQP, zawiera
tekstowy opis aplikacji (opis ten jest ignorowany zarówno przez parser, jak
i kompilator, programista mo e go jednak u yć do własnych celów).
#RRNKECVKQP +PJGTKVU O[%NCUU GUETKRVKQP GUETKRVKQP
OKGPPG Q CMTGUKG CRNKMCELK NWD UGULK
Zmienne o zakresie aplikacji mogą być tworzone za pomocą obiektów #RRNKECVKQP, zaś
te o zakresie sesji za pomocą obiektu 5GUUKQP. Dokładniejszy opis tych obiektów i ich
pozostałych zastosowań znajduje się w dalszej części tego rozdziału.
Aby zadeklarować zmienną:
#RRNKECVKQP
O[#RRNKECVKQP5EQRG8CT /[8CNWG
5GUUKQP
/[5GUUKQP5EQRG8CT /[8CNWG
Aby pobrać wartość zmiennej:
/[8CNWG #RRNKECVKQP
O[#RRNKECVKQP5EQRG8CT
/[8CNWG 5GUUKQP
/[5GUUKQP5EQRG8CT
Obiekty statyczne i komponenty COM/COM+ mogą być deklarowane w pliku global.
asax za pomocą znacznika 1DLGEV. Takie obiekty i komponenty mogą mieć zakres sesji
lub aplikacji.
Zakres RKRGNKPG określa, e obiekt lub komponent nale ą do bie ącej instancji *VVR#RRNK
ECVKQP i nie są współdzielone.
1DLGEV KF KF TWPCV UGTXGT ENCUU O[%NCUU0COG UEQRG RKRGNKPG
1DLGEV KF KF TWPCV UGTXGT RTQIKF O[%1/2TQI+ UEQRG UGUUKQP
1DLGEV KF KF TWPCV UGTXGT ENCUUKF O[%1/%NCUU+ UEQRG CRRNKECVKQP
FCTGPKC UGULK
W pliku global.asax mo na zdefiniować obsługę następujących zdarzeń sesji:
5GUUKQPA1P5VCTV — zdarzenie generowane, gdy klient rozpoczyna sesję,
5GUUKQPA1P'PF — zdarzenie generowane, gdy klient zamyka sesję.
9. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
$NQMK UMT[RVW
W pliku global.asax mo na u ywać tak e bloków skryptu. Generalnie jednak bloki
skryptu w global.asax słu ą do deklarowania zmiennych aplikacji i sesji oraz do obsługi
zdarzeń dla platformy .NET. Przeanalizujcie przykład pliku global.asax umieszczony
na wydruku 2.1.
Wprowadzanie zmian do pliku global.asax
Gdy zmienia się aktywny plik global.asax, ASP.NET wykrywa zmianę pliku, kończy obsługę
wszystkich bieżących żądań, generuje zdarzenie #RRNKECVKQPA1P'PF do wszystkich odbiorców i re-
startuje aplikację.
W efekcie następuje zresetowanie aplikacji WWW lub witryny, zamknięcie wszystkich sesji i wy-
czyszczenie wszystkich informacji o stanie.
Gdy nadchodzi nowe żądanie, ASP.NET kompiluje ponownie plik global.asax i generuje zdarzenie
#RRNKECVKQPA1P5VCTV.
Z oczywistych powodów zmian w pliku global.asax należy dokonywać, gdy aplikacja WWW jest
w okresie braku lub niewielkiego poziomu ruchu.
Poni ej, na wydruku 2.1 przedstawiono przykład pliku global.asax.
9[FTWM Przykładowy plik global.asax
5ETKRV NCPIWCIG 8$ TWPCV UGTXGT
-QF Y[MQP[YCP[ PC UVCTEKG CRNKMCELK
5WD #RRNKECVKQPA1P5VCTV
#RRNKECVKQP
/[#RRNKECVKQP5EQRG8CT /[8CNWG
5GUUKQP
/[5GUUKQP5EQRG8CT /[8CNWG
'PF 5WD
-QF URTæVCLæE[ RQ CRNKMCELK
5WD #RRNKECVKQPA1P'PF
'PF 5WD
-QF Y[MQP[YCP[ PC RQEæVMW UGULK
5WD 5GUUKQPA1P5VCTV
'PF 5WD
-QF URTæVCLæE[ RQ UGULK
5WD 5GUUKQPA1P'PF
'PF 5WD
UETKRV
Wprowadzanie zmian w pliku global.asax
Zmiany w plikach konfiguracyjnych ASP.NET są automatycznie wykrywane przez system i natychmiast
stosowane.
10. %ú è + 9RTQYCFGPKG FQ #520'6
Kluczowe informacje o pliku global.asax
Plik global.asax musi znajdować się w katalogu bazowym witryny lub aplikacji WWW.
Aplikacja WWW czy witryna mogą mieć tylko jeden plik global.asax.
Plik global.asax jest kompilowany przez ASP.NET do klasy (dziedziczącej po *VVR#RRNKECVKQP)
w momencie pierwszej aktywacji zasobów czy żądania URL należącego do aplikacji.
Plik global.asax jest skonfigurowany tak, że bezpośrednie żądanie URL dotyczące tego pliku jest
automatycznie odrzucane; blokuje to nieautoryzowany dostęp do pliku global.asax.
2NKM MQPHKIWTCE[LP[ YGDEQPHKI
Informacje konfiguracyjne ASP.NET są przechowywane w pliku konfiguracyjnym w for-
macie XML. Oznacza to, e u ytkownik mo e go przeglądać i edytować. Dzięki temu
administratorzy i programiści mogą w łatwy sposób zmieniać ustawienia konfiguracji apli-
kacji WWW czy witryny. Programiści nie muszą czekać, a administrator zmieni ustawienia
IIS (Internet Information Server) i uruchomi ponownie serwer WWW, aby zmiany odniosły
skutek. Jest więc oczywiste, e zwiększa to wydajność pracy programisty.
System konfiguracji jest w pełni rozszerzalny, poniewa daje mo liwość umieszczania
własnych danych konfiguracyjnych dla własnych aplikacji WWW i witryn w zaprojekto-
wanym dla nich pliku web.config. Hierarchiczna infrastruktura konfiguracji pozwala na
definiowanie i u ywanie w ASP.NET dodatkowych danych konfiguracyjnych. ASP.NET
zawiera równie bogaty zestaw wstępnych ustawień konfiguracyjnych.
Szczegółowy opis pliku web.config znajduje się w rozdziale 3., „Konfigurowanie aplikacji
ASP.NET”.
5M CFPKC UVTQP[
Przy programowaniu form WWW wa na jest znajomość składni strony w pliku ASP.NET.
W ASP.NET istnieje dziesięć ró nych elementów składni. Zostały one omówione poni ej.
[TGMV[Y[ UVTQP[
Dyrektywy strony pozwalają na podanie opcjonalnych ustawień u ywanych przez kompi-
lator stron podczas przetwarzania plików ASP.NET. Mogą one być umieszczone w dowol-
nym miejscu pliku .aspx. Ka da dyrektywa mo e zawierać jeden lub więcej atrybutów lub
par wartości specyficznych dla tej dyrektywy.
Ogólna składnia dyrektywy strony ma postać:
FKTGEVKXG CVVTKDWVGXCNWG =CVVTKDWVGXCNWG ?
Formy WWW obsługują następujące dyrektywy:
2CIG
%QPVTQN
11. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
+ORQTV
4GIKUVGT
#UUGODN[
1WVRWV%CEJG
[TGMV[YC 2CIG
Dyrektywa 2CIG definiuje atrybuty strony stosowane przez parser i kompilator stron
ASP.NET. Ma ona następującą składnię:
2CIG CVVTKDWVGXCNWG =CVVTKDWVGXCNWG ?
W pliku .aspx mo e znajdować się tylko jedna dyrektywa 2CIG. Aby zdefiniować wiele
atrybutów, nale y wymienić je, oddzielając spacjami, bez spacji przy znaku równości, jak
w 64#%' 6TWG .
Dyrektywa 2CIG ma następujące atrybuty:
#UR%QORCV — określa, czy strona jest kompatybilna wstecz z ASP. Jeśli nie jest
ustawiony na VTWG, biblioteki DLL ActiveX napisane dla ASP nie będą działać.
Atrybut ten nale y ustawić na VTWG, jeśli strona musi być wykonywana w wątku STA
lub wywołuje komponent COM+ 1.0 wymagający dostępu do wbudowanych cech
ASP przez kontekst obiektu lub przez 1P5VCTV2CIG. Wartością domyślną jest HCNUG.
$WHHGT — definiuje semantykę buforowania odpowiedzi HTTP. Jeśli buforowanie
ma być dostępne, ma wartość VTWG, w przeciwnym wypadku HCNUG. Wartością
domyślną jest VTWG.
%QFG2CIG — określa wartość strony kodowej dla strony ASP.NET. Obsługuje
wszystkie prawidłowe wartości strony kodowej.
%QPVGPV6[RG — definiuje typ zawartości HTTP w odpowiedzi, zgodny z typami
MIME (Multipurpose Internet Mail Extension). Obsługuje wszystkie wartości
definiujące prawidłowe typy zawartości HTTP.
%WNVWTG — wskazuje ustawienia kulturowe dla strony. Obsługuje wszystkie
wartości definiujące prawidłowe ustawienia kulturowe.
GUETKRVKQP — dostarcza tekstowego opisu strony. Mo e zawierać dowolny tekst.
'PCDNG8KGY5VCVG — wskazuje, czy informacja o właściwościach strony ma być
przechowywana pomiędzy ądaniami strony. Jeśli ma wartość VTWG — informacja
będzie przechowywana; jeśli HCNUG — nie będzie. Wartością domyślną jest VTWG.
'PCDNG5GUUKQP5VCVG — definiuje wymagania stanu sesji dla strony. Jeśli VTWG,
stan sesji jest dostępny, 4GCF1PN[ określa, e stan sesji mo e być czytany, ale nie
zmieniany, w innych przypadkach HCNUG. Wartością domyślną jest VTWG.
'TTQT2CIG — definiuje docelowy URL dla przekierowania, jeśli wystąpi błąd
braku strony.
+PJGTKVU — zewnętrzna klasa, po której strona dziedziczy. Mo e to być dowolna
klasa dziedzicząca po klasie 2CIG.
12. %ú è + 9RTQYCFGPKG FQ #520'6
.CPIWCIG — język stosowany do kompilacji wszystkich bloków i
wewnątrz strony. Mo e to być Visual Basic, C# lub JScript.
.QECN KFGPVKHKGT
.%+ — definiuje identyfikator lokalizacji dla kodu strony.
4GURQPUG'PEQFKPI — kodowanie zawartości zwracanej strony. Obsługuje wartości
z 'PEQFKPI)GV'PEQFKPI.
54% — zewnętrzna klasa do skompilowania (nazwa pliku źródłowego).
6TCEG — wskazuje, czy śledzenie jest włączone. VTWG, jeśli śledzenie jest dostępne,
w przeciwnym wypadku HCNUG. Wartością domyślną jest HCNUG.
6TCPUCEVKQP — wskazuje, czy strona obsługuje transakcje. Mo liwymi wartościami
są 0QV5WRRQTVGF, 5WRRQTVGF, 4GSWKTGF i 4GSWKTGU0GY.
9CTPKPI.GXGN — definiuje poziom ostrzegawczy kompilatora, którego osiągnięcie
powoduje przerwanie kompilacji strony. Mo liwe są wartości od do .
[TGMV[YC %QPVTQN
Jako dodatek do istniejących kontrolek HTML i serwera WWW, mo na zdefiniować kon-
trolki u ytkownika (user controls). Tworzy się je przy u yciu tych samych technik, które
słu ą do projektowania stron za pomocą form WWW.
Kontrolki u ytkownika oferują łatwy sposób na podzielenie i wielokrotne wykorzystywanie
najpowszechniejszych funkcji interfejsu u ytkownika w ró nych aplikacjach ASP.NET.
Podobnie jak w przypadku form WWW mo na je tworzyć za pomocą edytora tekstowego
lub projektować z zastosowaniem gotowych klas. Analogicznie jak w przypadku form,
kontrolki u ytkownika są kompilowane w momencie wystąpienia pierwszego ądania,
które ich dotyczy, i przechowywane w pamięci serwera, co pozwala skrócić czas reakcji
przy następnych ądaniach. W przeciwieństwie do form WWW kontrolki u ytkownika
nie mogą być wywoływane samodzielnie; aby działać, muszą być umieszczone w stronie
formy WWW.
Szersze omówienie kontrolek u ytkownika mo na znaleźć w rozdziale 15., „Tworzenie
kontrolek u ytkownika i kontrolek dostosowanych dla ASP.NET”.
Dyrektywa %QPVTQN pozwala na zdefiniowanie atrybutów kontrolki stosowanych przez
parser stron ASP.NET i kompilator. Dyrektywę tę mo na stosować tylko z kontrolkami
u ytkownika. Ma ona następującą składnię:
%QPVTQN CVVTKDWVGXCNWG =CVVTKDWVGXCNWG ?
Dyrektywa %QPVTQN obsługuje te same atrybuty co 2CIG, oprócz #UR%QORCV i 6TCEG.
Aby umo liwić śledzenie, nale y zdefiniować atrybut 6TCEG dla dyrektywy 2CIG w pliku
definiującym formę WWW zawierającą kontrolkę u ytkownika. W jednym pliku .ascx mo e
się znajdować tylko jedna dyrektywa %QPVTQN.
Dyrektywa %QPVTQN ma następujące atrybuty:
#WVQ'XGPV9KTGWR — wskazuje, czy zdarzenia strony są powiązane z tą stroną.
VTWG oznacza mo liwość powiązania, HCNUG przeciwny przypadek. Wartością
domyślną jest VTWG.
13. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
%NCUU0COG — pozwala na podanie nazwy klasy automatycznie kompilowanej
dynamicznie podczas wystąpienia ądania strony. Wartością mo e być dowolna
prawidłowa nazwa klasy.
%QORKNGT1RVKQPU — łańcuch znaków zawierający opcje kompilacji dla strony.
GDWI — określa, czy strona ma być kompilowana z symbolami debuggera.
VTWG oznacza włączenie tych symboli, HCNUG — wyłączenie.
GUETKRVKQP — dostarcza tekstowego opisu strony. Mo e zawierać dowolny tekst.
'PCDNG5GUUKQP5VCVG — definiuje dla strony wymagania dotyczące stanu sesji.
Wartość VTWG oznacza, e stan sesji jest dostępny, wartość 4GCF1PN[ — e stan
sesji mo e być odczytywany, ale nie modyfikowany, zaś wartość HCNUG odpowiada
pozostałym przypadkom. Wartością domyślną jest VTWG.
'ZRNKEKV — określa, e strona powinna być kompilowana w trybie Visual Basic
Option Explicit. VTWG oznacza włączenie tej opcji, HCNUG — wyłączenie. Wartością
domyślną jest HCNUG.
+PJGTKVU — zewnętrzna klasa, po której strona dziedziczy. Mo e to być dowolna
klasa dziedzicząca po klasie 2CIG.
.CPIWCIG — język stosowany do kompilacji wszystkich bloków i
wewnątrz strony. Mo e to być Visual Basic, C# lub JScript.NET.
5VTKEV — określa, e strona powinna być kompilowana w trybie Visual Basic
Option Strict. VTWG oznacza włączenie tej opcji, HCNUG — wyłączenie. Wartością
domyślną jest HCNUG.
54% — zewnętrzna klasa do skompilowania (nazwa pliku źródłowego).
9CTPKPI.GXGN — definiuje poziom ostrzegawczy kompilatora, którego osiągnięcie
powoduje przerwanie kompilacji kontrolki u ytkownika. Mo liwe są wartości
od do .
[TGMV[YC +ORQTV
Dyrektywa +ORQTV dołącza jawnie do strony przestrzeń nazw, co umo liwia elementom
strony dostęp do wszystkich klas i interfejsów zdefiniowanych w tej przestrzeni. Impor-
towana przestrzeń mo e być częścią biblioteki klas platformy .NET lub przestrzenią zdefi-
niowaną przez u ytkownika.
Dyrektywa +ORQTV ma następującą składnię:
+ORQTV PCOGURCEG VJG PCOGURCEG VQ DG KORQTVGF
Dyrektywa +ORQTV ma tylko jeden atrybut, PCOGURCEG, który zawiera nazwę przestrzeni
nazw importowanej do strony.
Zwróćcie uwagę na fakt, e dyrektywa +ORQTV ma tylko jeden atrybut PCOGURCEG. Aby
zaimportować większą liczbę przestrzeni nazw, nale y u yć wielu dyrektyw +ORQTV.
14. %ú è + 9RTQYCFGPKG FQ #520'6
Poni sze przestrzenie nazw są automatycznie importowane do wszystkich stron:
5[UVGO
5[UVGO%QNNGEVKQPU
5[UVGO%QNNGEVKQPU5RGEKCNKGF
5[UVGO%QPHKIWTCVKQP
5[UVGO+1
5[UVGO6GZV
5[UVGO6GZV4GIWNCT'ZRTGUUKQPU
5[UVGO9GD
5[UVGO9GD%CEJKPI
5[UVGO9GD5GEWTKV[
5[UVGO9GD5GUUKQP5VCVG
5[UVGO9GD7+
5[UVGO9GD7+*VON%QPVTQNU
5[UVGO9GD7+9GD%QPVTQNU
Poni szy przykładowy kod przedstawia zaimportowanie przestrzeni nazw klas bazowych
platformy .NET, 5[UVGO0GV i zdefiniowanej przez u ytkownika przestrzeni 9GD6QQNU:
+ORQTV 0COGURCEG 5[UVGO0GV
+ORQTV 0COGURCEG 9GD6QQNU
[TGMV[YC 4GIKUVGT
Dyrektywa 4GIKUVGT pozwala na określenie aliasów przestrzeni nazw i nazw klas dla
skrócenia notacji składni własnych kontrolek serwera. Dyrektywa ta ma następującą składnię:
4GIKUVGT 6CIRTGHKZ VCIRTGHKZ 0COGURCEG PCOGURCEG
4GIKUVGT 6CIRTGHKZ VCIRTGHKZ 6CIPCOG VCIPCOG 5TE RCVJPCOG
Dyrektywa 4GIKUVGT ma następujące atrybuty:
6CIRTGHKZ — alias powiązany z przestrzenią nazw;
6CIPCOG — alias powiązany z klasą;
0COGURCEG — przestrzeń nazw powiązana z VCIRTGHKZ;
54% — ście ka (względna lub bezwzględna) kontrolki u ytkownika powiązanej
z VCIRTGHKZVCIPCOG.
Poni szy przykładowy fragment kodu ilustruje zastosowanie dyrektyw 4GIKUVGT
do zadeklarowania aliasów VCIRTGHKZ i VCIPCOG dla kontrolek serwera i u ytkownika.
Pierwsza dyrektywa deklaruje alias /[6CI jako prefiksu dla wszystkich kontrolek znaj-
dujących się w przestrzeni nazw /[%QORCP[/[0COG5RCEG. Druga dyrektywa deklaruje
15. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
#EOG#F4QVCVQT jako parę VCIRTGHKZVCIPCOG dla kontrolek u ytkownika znajdujących
się w pliku adrotator.ascx. Aliasy te są później u yte w składni kontrolek serwera wewnątrz
formy do wstawiania instancji ka dej z kontrolek serwera.
4GIKUVGT 6CIRTGHKZ /[6CI 0COGURCEG /[%QORCP[/[0COG5RCEG
4GIKUVGT 6CIRTGHKZ #EOG
6CIPCOG #F4QVCVQT 5TE #F4QVCVQTCUEZ
*6/.
HQTO TWPCV UGTXGT
/[6CI/[%QPVTQN KF %QPVTQN TWPCV UGTXGT $4
#EOG#F4QVCVQT HKNG O[CFUZON TWPCV UGTXGT
HQTO
*6/.
[TGMV[YC #UUGODN[
Dyrektywa #UUGODN[ deklaruje stworzenie połączenia pomiędzy zbiorem a bie ącą stroną,
co pozwala na wykorzystywanie na stronie klas i interfejsów zdefiniowanych w tym zbiorze.
Dyrektywy tej mo na równie u yć do rejestrowania zbiorów w pliku konfiguracyjnym,
co umo liwi dostęp do nich w całej aplikacji.
Dyrektywa ta ma następującą składnię:
#UUGODN[ 0COG CUUGODN[PCOG
lub
#UUGODN[ 5TE RCVJPCOG
Dyrektywa ta ma atrybuty 0COG i 5TE. 0COG oznacza łańcuch określający nazwę zbioru łą-
czonego ze stroną. 5TE zawiera ście kę dostępu do pliku źródłowego, który ma być dyna-
micznie skompilowany i dołączony.
Zbiory znajdujące się w katalogu bin aplikacji są automatycznie łączone ze stronami tej
aplikacji. Takie zbiory nie wymagają dyrektywy #UUGODN[.
Automatyczne łączenie mo e zostać wyłączone przez usunięcie z sekcji CUUGODN[ pliku
web.config następującego wiersza:
CFF CUUGODN[
16. Jako alternatywę u ycia dyrektywy #UUGODN[ , zbiory mo na zarejestrować w pliku
web.config, co spowoduje ich połączenie z całą aplikacją.
Poni szy fragment kodu ilustruje u ycie dyrektywy #UUGODN[ do stworzenia połą-
czenia z MyAssembly.dll:
#UUGODN[ 0COG O[CUUGODN[FNN
[TGMV[YC 1WVRWV%CEJG
Dyrektywa 1WVRWV%CEJG deklaruje sposób obsługi buforowania wyjścia dla strony. Skład-
nia wygląda następująco:
17. %ú è + 9RTQYCFGPKG FQ #520'6
1WVRWV%CEJG WTCVKQP QHUGEQPFU
.QECVKQP #P[ ^ %NKGPV ^ QYPUVTGCO ^ 5GTXGT ^ 0QPG 8CT[$[%QPVTQN EQPVTQNPCOG
8CT[$[%WUVQO DTQYUGT ^ EWUVQOUVTKPI 8CT[$[*GCFGT JGCFGTU
8CT[$[2CTCO RCTCOGVGTPCOG
Dyrektywa ta ma następujące atrybuty:
WTCVKQP — czas buforowania strony lub kontrolki u ytkownika w sekundach.
Ustawienie tego atrybutu dla strony lub kontrolki u ytkownika ustala ustawienia
wygasania odpowiedzi HTTP generowanej przez obiekt i automatycznie buforuje
wyjście strony lub kontrolki u ytkownika.
Atrybut ten jest wymagany. Jego brak spowoduje zgłoszenie błędu parsera.
.QECVKQP — jedna z listy wartości OutputCacheLocation. Wartością domyślną
jest #P[.
Uwaga: atrybut ten jest wymagany dla buforowania wyjścia strony ASP.NET
lub kontrolki u ytkownika. Jego brak spowoduje zgłoszenie błędu parsera.
8CT[$[%WUVQO — dowolny tekst reprezentujący własne wymagania dotyczące
buforowania wyjścia. Jeśli atrybut ma wartość DTQYUGT, buforowanie jest uzale nione
od informacji o nazwie i wersji przeglądarki. Jeśli podano własny łańcuch, w pliku
global.asax aplikacji nale y nadpisać metodę *VVR#RRNKECVKQP)GV8CT[$[%WUVQO5VTKPI.
8CT[$[*GCFGT — lista oddzielonych przecinkami nagłówków HTTP stosowanych
dla zró nicowania buforowania wyjścia. Jeśli w tym atrybucie podano kilka
nagłówków, bufor wyjścia zawiera ró ne wersje ądanego dokumentu dla ka dego
z podanych nagłówków.
Warto zauwa yć, e ustawienie atrybutu 8CT[$[*GCFGT umo liwia buforowanie
we wszystkich buforach HTTP/1.1 a nie tylko w buforach ASP.NET. Atrybut ten
nie jest obsługiwany przez dyrektywy 1WVRWV%CEJG w kontrolkach u ytkownika.
8CT[$[2CTCO — lista oddzielonych przecinkami łańcuchów ró nicujących
buforowanie wyjścia. Domyślnie łańcuchy te odpowiadają wartościom zapytania
przesłanego przez atrybuty metody )'6 lub parametrom wysłanym przez metodę
2156. Jeśli atrybut ten zawiera wiele parametrów, bufor wyjścia zawiera ró ne wersje
ądanego dokumentu dla ka dego podanego parametru. Mo liwymi wartościami
są PQPG,
18. oraz wszystkie poprawne zapytania i nazwy parametru 2156.
Uwaga: atrybut ten jest konieczny do buforowania wyjścia stron ASP.NET
i kontrolek u ytkownika. Jego brak spowoduje zgłoszenie błędu parsera. Jeśli nie
chcecie podać parametrów ró nicujących buforowaną zawartość, nale y ustawić
wartość na PQPG. Jeśli buforowanie wyjścia ma być uzale nione od wszystkich
wartości parametrów, wartość nale y ustawić na
19. .
8CT[$[%QPVTQN — lista oddzielonych przecinkami łańcuchów ró nicujących
buforowanie wyjścia. Łańcuchy te reprezentują pełne ścisłe nazwy właściwości
kontrolek u ytkownika. Jeśli atrybut ten zostanie zastosowany do kontrolki
u ytkownika, jej wyjście jest buforowane w zale ności od wartości podanych
właściwości.
1WVRWV%CEJG WTCVKQP
20. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
$NQM FGMNCTCELK
Fragmentem składni strony stosowanym niemal zawsze jest blok deklaracji. Blok deklaracji
definiuje wewnętrzne zmienne i metody które są kompilowane podczas tworzenia dynamicz-
nej klasy 2CIG reprezentującej stronę ASP.NET.
UETKRV TWPCV UGTXGT NCPIWCIG EQFGNCPIWCIG 5TE RCVJPCOG
6WVCL WOKGUECO[ MQF
UETKRV
Blok deklaracji ma następujące atrybuty:
NCPIWCIG — podaje język u ywany w tym bloku deklaracji. Wartość mo e
reprezentować dowolny kompatybilny z .NET język programowania, taki jak
Visual Basic, C# czy JScript.NET. Jeśli nie podano języka, wartością domyślną
jest język podany w dyrektywie 2CIG. Jeśli tak e ta dyrektywa nie zawiera
informacji o języku, domyślnie jest u ywany Visual Basic.
UTE — podaje ście kę dostępu i nazwę pliku zawierającego skrypt do wczytania. Jeśli
zastosowano ten atrybut, pozostały kod zawarty w bloku deklaracji jest ignorowany.
$NQM QFT[UQYCPKC
Blok odrysowania definiuje kod lub wyra enie wstawiane (inline), które będą wykonywane
w momencie odrysowywania strony. Istnieją dwa style — kod i wyra enie. U ywając zwy-
kłego stylu, mo na zdefiniować zwykły blok kodu lub blok kontroli przepływu. Drugi mo e
być stosowany jako skrót dla wywołania 4GURQPUG9TKVG.
Kod wstawiany ma następującą składnię:
+PNKPG EQFG QT GZRTGUUKQP
Warto zauwa yć, e w bloku odrysowania nie mo e wystąpić jawnie sekwencja znaków .
Mo e być ona zastosowana tylko do zakończenia tego bloku. Przykładowo, poni szy frag-
ment kodu spowoduje błąd:
4GURQPUG9TKVG
Aby osiągnąć ten efekt mo na zbudować łańcuch znaków zawierający niedozwolony łańcuch:
KO U #U 5VTKPI
4GURQPUG9TKVG
U
-QOGPVCTG RQ UVTQPKG UGTYGTC
Komentarze po stronie serwera pozwalają na umieszczanie komentarzy wewnątrz plików
.aspx. Jakikolwiek tekst zawarty pomiędzy znacznikami otwierającym i zamykającym
komentarza, czy będzie to kod ASP.NET czy zwykły tekst, nie będzie przetwarzany przez
serwer ani wypisany na wynikowej stronie.
#PWNQYCP[ MQF NWD KPPC CYCTVQ è
21. %ú è + 9RTQYCFGPKG FQ #520'6
Bloki komentarza po stronie serwera w ASP.NET mają te same zastosowania co bloki
komentarza w językach programowania, łącznie z dokumentacją i testowaniem.
Wewnątrz bloków UETKRV TWPCV UGTXGT UETKRV i mo na stosować składnię
komentarza języka programowania, w którym napisano ten kod.
Jeśli wewnątrz zostanie zastosowany komentarz serwera, kompilator zgłosi błąd.
Otwierający i zamykający znacznik komentarza mogą pojawiać się w tym samym wierszu
kodu lub mogą być oddzielone wierszami anulowanego kodu.
Komentarze po stronie serwera nie mogą być zagnie d ane.
Poni szy przykład ilustruje usunięcie kodu kontrolki definiującego przycisk HTML:
DWVVQP TWPCV UGTXGT KF /[$WVVQP 1P5GTXGT%NKEM /[$WVVQPA%NKEM
%NKEM JGTG HQT GPNKIJVGOGPV
DWVVQP
5M CFPKC PKGUVCPFCTFQY[EJ MQPVTQNGM UGTYGTC
Niestandardowe kontrolki serwera są najczęściej stosowane do enkapsulowania podobnych
funkcji programistycznych. Mo na tworzyć własne niestandardowe kontrolki serwera lub
u ywać kontrolek dostarczonych z platformą .NET.
Poni ej przedstawiono szczegółowo składnię stosowaną przy niestandardowych kontrol-
kach serwera.
5M CFPKC FGMNCTCELK PKGUVCPFCTFQY[EJ MQPVTQNGM 9GD (QTOU
Kontrolki Web Form mogą być deklarowane przez wymienienie tych elementów w pliku
.aspx. Znacznik otwierający takiego elementu musi zawierać atrybut lub parę wartości TWPCV
UGTXGT . Aby umo liwić programistyczne odwoływanie się do kontrolki, nale y nadać jej
unikalną wartość atrybutu KF.
Aby umieścić w Web Form kontrolkę serwera (włączając kontrolki stworzone przez
u ytkownika i wszystkie kontrolki sieci WWW), nale y zastosować następującą składnię:
VCIRTGHKZVCIPCOG KF 1RVKQPCN+ CVVTKDWVGPCOG XCNWG CVVTKDWVGPCOG
RTQRGTV[PCOG XCNWG GXGPVPCOG GXGPVJCPFNGTOGVJQF TWPCV UGTXGT
lub
VCIRTGHKZVCIPCOG KF 1RVKQPCN+ TWPCV UGTXGT VCIRTGHKZVCIPCOG
Mo liwe są następujące atrybuty:
VCIRTGHKZ — alias pełnej nazwy przestrzeni nazw kontrolki. Aliasy kontrolek
stworzonych przez u ytkownika są deklarowane w dyrektywie 4GIKUVGT.
VCIPCOG — nazwa klasy zawierającą kontrolkę.
22. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
KF — unikalny identyfikator umo liwiający programistyczne odnoszenie się
do kontrolki.
CVVTKDWVGPCOG — nazwa atrybutu.
RTQRGTV[XCNWG — wartość przypisana do CVVTKDWVGPCOG.
RTQRGTV[PCOG — nazwa definiowanej właściwości.
UWRTQRGTV[XCNWG — wartość przypisana do RTQRGTV[PCOG.
GXGPVPCOG — nazwa zdarzenia kontrolki.
GXGPVJCPFNGTOGVJQF — nazwa metody obsługi zdarzenia zdefiniowanej w kodzie
Web Form.
Przykładowo, poni szy kod wstawia kontrolkę sieciową 6GZV $QZ:
#526GZV$QZ KF /[6GZV$QZ TWPCV UGTXGT
9[TC GPKC YKæ æEG FCPG
Wyra enia wią ące dane tworzą połączenia pomiędzy kontrolkami serwera i źródłami da-
nych. Wyra enia wią ące dane mogą być umieszczane po stronie wartości atrybutu lub pary
wartości w znaczniku otwierającym kontrolki Web Form lub w dowolnym miejscu strony.
Wyra enie wią ące dane ma następującą składnię:
VCIRTGHKZVCIPCOG RTQRGTV[ FCVCDKPFKPI GZRTGUUKQP TWPCV UGTXGT
lub
NKVGTCN VGZV FCVCDKPFKPI GZRTGUUKQP
Mo liwe są następujące parametry:
VCIRTGHKZ — alias pełnej nazwy przestrzeni nazw kontrolki. Aliasem dla kontrolki
sieciowej jest #52. Aliasy dla kontrolek stworzonych przez u ytkownika są
deklarowane za pomocą dyrektywy 4GIKUVGT.
VCIPCOG — nazwa klasy platformy .NET zawierającej kontrolkę.
RTQRGTV[ — właściwość kontrolki, dla której deklarowane jest powiązanie danych.
GZRTGUUKQP — dowolne wyra enie spełniające wymienione poni ej wymagania.
Wszystkie wyra enia wią ące dane, bez względu na miejsce ich umieszczenia, muszą być
zawarte pomiędzy a .
ASP.NET obsługuje hierarchiczny model wiązania danych, który umo liwia asocjacyjne
łączenie właściwości kontrolek serwera i nadrzędnych źródeł danych. Ka da właściwość
kontrolki serwera mo e być powiązana z danymi. Właściwości kontrolek mogą być po-
wiązane z dowolnymi publicznymi polami lub właściwościami zarówno na zawierającej
je stronie, jak i w bezpośrednio wymienionym pojemniku.
23. %ú è + 9RTQYCFGPKG FQ #520'6
5VQUQYCPKG CVC$KPFGT'XCN
Platforma Web Form obsługuje równie statyczną metodę wykonującą wyra enie wią ące
dane i opcjonalnie formatującą wynik jako łańcuch tekstowy. Metoda CVC$KPFGT'XCN
jest wygodna, poniewa eliminuje konieczność jawnego rzutowania koniecznego dla skon-
wertowania wartości do konkretnego typu danych. Jest to szczególnie u yteczne dla list
kontrolek nale ących do szablonu list, poniewa często zarówno wiersz danych, jak i pole
danych muszą być rzutowane.
W poni szym przykładzie liczba całkowita jest wyświetlana w notacji walutowej. Przy
standardowej składni wiązania danych w ASP.NET nale y najpierw zrzutować typ danych,
aby otrzymać wartość pola +PVGIGT8CNWG. Wartość ta jest następnie argumentem metody
5VTKPI(QTOCV:
5VTKPI(QTOCV
]E_
CVC4QY8KGY%QPVCKPGTCVC+VGO= +PVGIGT8CNWG ?
Powy szy kod mo e być zło ony i trudny do zapamiętania. Dla kontrastu, CVC$KPFGT'XCN
jest po prostu metodą z trzema argumentami: nazwą pojemnika zawierającego dane, nazwą
pola danych i łańcuchem formatującym. W szablonach list, takich jak klasy CVC.KUV,
CVC)TKF czy 4GRGCVGT, nazwą pojemnika jest zawsze %QPVCKPGTCVC+VGO. Innym po-
jemnikiem, który mo na stosować w CVC$KPFGT'XCN, jest 2CIG.
CVC$KPFGT'XCN
%QPVCKPGTCVC+VGO +PVGIGT8CNWG ]E_
Argument zawierający łańcuch formatujący jest opcjonalny. Jeśli nie zostanie podany,
CVC$KPFGT'XCN zwróci wartość obiektu V[RG. Przykładowo:
DQQNCVC$KPFGT'XCN
%QPVCKPGTCVC+VGO $QQN8CNWG
5M CFPKC PCEPKMÎY QDKGMVÎY UGTYGTC
Znaczniki obiektów serwera deklarują i tworzą instancje obiektów COM i .NET. Składnia
wygląda następująco:
QDLGEV KF KF TWPCVUGTXGT ENCUU 0'6 (TCOGYQTM %NCUU 0COG
QDLGEV KF KF TWPCVUGTXGT ENCUU %1/ 2TQI+
QDLGEV KF KF TWPCVUGTXGT ENCUU %1/ %NCUU+
Dostępne są następujące parametry:
+F 7PKSWG PCOG — referencja do obiektu w późniejszym kodzie.
0'6 (TCOGYQTM ENCUU PCOG — identyfikuje nazwę klasy platformy .NET,
której instancję tworzymy.
%1/ 2TQI+ — identyfikuje komponent COM, którego instancję tworzymy.
%1/ %NCUU+ — identyfikuje komponent COM, którego instancję tworzymy.
Gdy parser lub kompilator strony napotka znacznik obiektu serwera w pliku ASP.NET,
generuje na stronie właściwość odczytu (read) lub zapisu (write), u ywając atrybutu KF
znacznika jako jej nazwy. Właściwość odczytu jest skonfigurowana tak, aby stworzyć
instancję obiektu w momencie pierwszego u ycia. Otrzymana instancja nie jest dodawana
jako obiekt do hierarchicznego drzewa kontrolek serwera tej strony; jest traktowana jako
deklaracja zmiennej nie nale ącej do interfejsu u ytkownika.
24. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
Atrybuty ENCUUKF, RTQIKF i ENCUU wykluczają się wzajemnie. Błędem jest u ycie więcej ni
jednego z tych atrybutów w jednym znaczniku obiektu serwera.
Poni szy kod prezentuje przykład zastosowania znacznika obiektu serwera:
JVON
QDLGEV KF /[CVCDCUG ENCUU /KETQUQHV1.'$#FCRVQT TWPCV UGTXGT
UETKRV NCPIWCIG 8$ TWPCVUGTXGT
5WD 2CIGA.QCF
5GPFGT CU 1DLGEV G CU 'XGPV#TIU
KO 5VQEMGVCKNU CU 4GEQTF5GV
5GV 5VQEMGVCKNU /[CVCDCUG'ZGEWVG
50OQPG[ UGNGEV
25. HTQO UVQEMU
'PF 5WD
UETKRV
JVON
5M CFPKC F[TGMV[Y[ FQ æECPKC RQ UVTQPKG UGTYGTC
Dyrektywy dołączania po stronie serwera wstawiają zawartość podanego pliku do strony
ASP.NET.
KPENWFG RCVJV[RG HKNGPCOG
Parametr RCVJV[RG podaje typ ście ki do pliku HKNGPCOG. Mo e mieć wartość (KNG lub
8KTVWCN.
Jeśli RCVJV[RG ma wartość (KNG, nazwa pliku zawiera ście kę względem katalogu zawie-
rającego dokument z dyrektywą KPENWFG. Włączany plik mo e być w tym samym katalogu
lub w podkatalogu; nie mo e jednak znajdować się w katalogu powy ej zawierającego
stronę z dyrektywą KPENWFG.
Jeśli RCVJV[RG ma wartość 8KTVWCN, nazwa pliku jest pełną wirtualną ście ką do wirtualnego
katalogu wewnątrz serwisu WWW.
Parametr HKNGPCOG podaje nazwę dołączanego pliku. HKNGPCOG musi zawierać rozszerzenie
pliku i musi być ujęty w cudzysłów ( ).
Zwróćcie uwagę na fakt, e znacznik dołączania pliku jest wykonywany przed urucho-
mieniem dynamicznego kodu (działa podobnie do preprocesora C).
Znacznik KPENWFG musi być ujęty w znaki komentarza HTML lub XML; w przeciwnym
wypadku zostanie zinterpretowany jako tekst.
Poni szy kod przedstawia przykład zastosowania dyrektywy dołączania po stronie serwera:
JVON
DQF[
+PENWFG HKNG JGCFGTKPE
1VQ I ÎYPC CYCTVQ è RNKMW
(QT + VQ
+PENWFG XKTVWCN +PENWFGU(QQDCTKPE
0GZV
+PENWFG XKTVWCN HQQVGTKPE
DQF[
JVON
26. %ú è + 9RTQYCFGPKG FQ #520'6
0CLEú EKGL UVQUQYCPG QDKGMV[ K MNCU[ #520'6
Do tej pory poznaliście pliki u ywane w aplikacjach ASP.NET i zaznajomiliście się z pod-
stawami Visual Basica. Nadszedł więc czas, aby poznać niektóre podstawowe obiekty
stosowane w aplikacjach ASP.NET.
5VCV[EP[ QDKGMV #RRNKECVKQP
-NCUC *VVR#RRNKECVKQP
Klasa *VVR#RRNKECVKQP definiuje metody, właściwości i zdarzenia wspólne dla wszystkich
obiektów *VVR#RRNKECVKQP w platformie ASP.NET.
Klasa *VVR#RRNKECVKQP zawiera wiele innych klas jako właściwości, które rozpoznają u yt-
kownicy klasycznego ASP, oraz inne, które nie są im znane. Poniewa obiekt #RRNKECVKQP
stanowi integralną część projektu aplikacji czy witryny WWW, jego opisowi poświęcono
wiele miejsca.
9 C EKYQ EK QDKGMVW #RRNKECVKQP
Obiekt #RRNKECVKQP ma kilka właściwości wykorzystywanych przez system:
#RRNKECVKQP — zwraca referencję do instancji *VVR#RRNKECVKQP5VCVG, obiektu
u ywanego w pliku global.asax oraz w ka dym Web Form w ASP.NET. Jest to
zbiór zawierający zmienne, obiekty i komponenty o zasięgu aplikacji.
Klasa *VVR#RRNKECVKQP5VCVG umo liwia programistom współdzielenie globalnych
informacji pomiędzy wieloma ądaniami, sesjami i potokami wewnątrz aplikacji
ASP.NET. (Aplikacja ASP.NET to suma wszystkich plików, stron, procedur obsługi
zdarzeń, modułów i kodu w wirtualnym katalogu i jego podkatalogach na jednym
serwerze WWW).
%QPVGZV — umo liwia dostęp do obiektu *662%QPVGZV bie ącej instancji aplikacji.
4GSWGUV — umo liwia dostęp do obiektu *VVR4GSWGUV +PVTKUKE, który udostępnia
dane nadchodzących ądań HTTP.
4GURQPUG — umo liwia dostęp do obiektu *VVR4GURQPUG +PVTKUKE, który umo liwia
transmisję danych odpowiedzi HTTP do klienta.
5GTXGT — umo liwia dostęp do obiektu 5GTXGT +PVTKPUKE.
5GUUKQP — umo liwia dostęp do obiektu 5GUUKQP +PVTKUKE.
FCTGPKC CRNKMCELK
Przez system u ywane są następujące zdarzenia aplikacji:
#RRNKECVKQP1P5VCTV
— zdarzenie generowane, gdy aplikacja jest uruchamiana
na serwerze WWW.
#RRNKECVKQP1P'PF
— zdarzenie generowane, gdy aplikacja kończy działanie
lub przetwarzanie na serwerze WWW.
27. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
#RRNKECVKQP1P'TTQT
— zdarzenie generowane, gdy aplikacja napotyka błąd;
mo e być zastosowane do stworzenia lub przypisania nowej procedury obsługi
błędów dla aplikacji WWW.
#RRNKECVKQP$GIKP4GSWGUV
— zdarzenie generowane, gdy aplikacja odbiera
nowe ądanie.
#RRNKECVKQP'PF4GSWGUV
— zdarzenie generowane, gdy aplikacja kończy obsługę
nowego ądania.
#WVJGPVKECVG4GSWGUV
— zdarzenie generowane, gdy aplikacja otrzymuje nowe
ądanie i jest gotowa do uwierzytelnienia.
5VCV[EP[ QDKGMV 4GSWGUV
-NCUC *VVR4GSWGUV
Fakt dotarcia klienta do strony sieci WWW na serwerze WWW nazywa się ądaniem,
poniewa — technicznie rzecz ujmując — u ytkownik ąda od serwera przesłania strony
do jego przeglądarki. Obiekt 4GSWGUV jest stosowany do pobierania informacji z serwera
WWW i przeglądarki klienta.
9 C EKYQ EK QDKGMVW 4GSWGUV
Obiekt 4GSWGUV posiada następujące właściwości:
#EEGRV6[RGU — zwraca tablicę łańcuchów znaków obsługiwanych przez klienta
typów MIME. Jest to właściwość tylko do odczytu.
#RRNKECVKQP2CVJ — zwraca ście kę do katalogu głównego wirtualnej aplikacji.
$TQYUGT — dostarcza informacji na temat mo liwości przeglądarki przychodzącego
klienta.
%NKGPV%GTVKHKECVG — zwraca informacje o certyfikacie bezpieczeństwa klienta,
który zgłosił bie ące ądanie.
%QPVGPV'PEQFKPI — opisuje zestaw znaków dostarczanych przez klienta.
Jest to właściwość tylko do odczytu.
%QPVGPV6[RG — opisuje typ zawartości MIME odebranego ądania.
Jest to właściwość tylko do odczytu.
%QQMKGU — zwraca zbiór zmiennych cookie klienta.
(KNG2CVJ — wskazuje wirtualną ście kę bie ącego ądania. Jest to właściwość
tylko do odczytu.
(KNGU — zwraca zbiór plików przekazanych przez klienta (w formacie MIME
multipart).
(QTO — zwraca zbiór zmiennych formularza.
*VVR/GVJQF — opisuje metodę transferu danych u ytą przez klienta ()'6, 2156).
+PRWV5VTGCO — umo liwia dostęp do surowych składników nadchodzącej encji HTTP.
+U#WVJGPVKECVGF — wskazuje, czy nastąpiło uwierzytelnienie połączenia HTTP.
28. %ú è + 9RTQYCFGPKG FQ #520'6
+U5GEWTG%QPPGEVKQP — wskazuje, czy połączenie HTTP jest bezpieczne (HTTPS).
2CVJ — wskazuje wirtualną ście kę bie ącego ądania. Jest to właściwość tylko
do odczytu.
3WGT[5VTKPI — zwraca zbiór zmiennych 3WGT[5VTKPI.
4GSWGUV6[RG — opisuje metodę transferu danych u ytą przez klienta ()'6, 2156).
5GTXGT8CTKCDNGU — zwraca zbiór zmiennych serwera WWW. (Stosowany ze
względu na kompatybilność; generalnie lepiej jest u ywać zdefiniowanych
właściwości obiektu 4GSWGUV).
6QVCN$[VGU — zwraca liczbę bajtów w bie ącym strumieniu wejściowym.
7TN — zwraca informację dotyczącą URL bie ącego ądania.
7TN4GHGTTGT — zwraca informację dotyczącą URL poprzedniego ądania klienta,
które doprowadziło do bie ącego URL.
7UGT#IGPV — zwraca surowy User Agent String przeglądarki klienta.
7UGT*QUV#FFTGUU — zwraca adres IP zdalnego klienta.
7UGT*QUV0COG — zwraca nazwę DNS zdalnego klienta.
7UGT.CPIWCIGU — zwraca posortowaną tabelę preferencji językowych klienta.
/GVQF[ QDKGMVW 4GSWGUV
Obiekt 4GSWGUV ma następujące metody:
$KPCT[4GCF
KPV PWO$[VGU — odczytuje binarnie podaną liczbę bajtów z bie ącego
strumienia wejściowego.
/CR2CVJ
5VTKPI 8KTVWCN2CVJ — przekłada wirtualną ście kę (w ądaniu URL)
na fizyczną ście kę na serwerze dla bie ącego ądania.
5CXG#U
5VTKPI HKNGPCOG, $QQNGCP KPE*GCFGTU — zapisuje ądanie HTTP na dysk.
5VCV[EP[ QDKGMV 4GURQPUG
-NCUC *VVR4GURQPUG
Obiekt 4GURQPUG jest stosowany do wysyłania informacji z serwera sieci WWW do prze-
glądarki klienta.
9 C EKYQ EK QDKGMVW 4GURQPUG
Obiekt 4GURQPUG ma następujące właściwości:
$WHHGT — umo liwia dostęp do bufora *VVR4GURQPUG, co pozwala na zło enie
całej strony na serwerze i wysłanie jej w całości do klienta, zamiast przesyłania
przetworzonych sekcji z osobna.
$WHHGT1WVRWV — ustawia wartość wskazującą, czy wyjście HTTP jest buforowane.
%CEJG — zwraca informacje o buforowaniu strony WWW (czas wygaśnięcia,
prywatność, klauzule warunkowe).
29. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
%JCTUGV — ustala zestaw znaków dla wyjścia HTTP.
%QPVGPV'PEQFGT — umo liwia dostęp do bie ącego kodera zawartości.
%QPVGPV'PEQFKPI — ustala zestaw znaków dla wyjścia HTTP.
%QPVGPV6[RG — ustawia typ MIME wyjścia HTTP.
%QQMKGU — pobiera zbiór *VVR%QQMKG wysłany przez bie ącą odpowiedź.
'ZRKTGU — ustala ustawienia wygasania dla klienta.
+U%NKGPV%QPPGEVGF — pobiera wartość wskazującą, czy klient jest jeszcze
połączony z serwerem.
5VCVWU%QFG — ustala kod stanu HTTP dla wyjścia zwracanego do klienta.
5VCVWUGUETKRVKQP — ustala komunikat stanu HTTP zwracany do klienta.
/GVQF[ QDKGMVW 4GURQPUG
Obiekt *VVR4GURQPUG ma następujące metody:
#RRGPF6Q.QI
5VTKPI .QI'PVT[ — dodaje własną informację do pliku dziennika IIS.
2KEU
5VTKPI 2KEU8CNWG — dodaje etykietę PICS (Platform for Internet Content
Selection) nagłówka HTTP do strumienia wyjściowego.
4GFKTGEV
5VTKPI PGY74. — przekierowuje przeglądarkę klienta na nowy adres URL.
9TKVG
5VTKPI QWVRWV5VTKPI — zapisuje wartość do strumienia wyjściowego
zawartości HTTP.
9TKVG(KNG
(KNGPCOG — zapisuje plik bezpośrednio do strumienia wyjściowego
zawartości HTTP.
-NCUC 5GTXGT
-NCUC *VVR5GTXGT7VKNKV[
Obiekt 5GTXGT7VKNKV[ jest niemal zupełnie tym samym co obiekt 5GTXGT klasycznego ASP.
Umo liwia dostęp do u ytecznych narzędzi po stronie serwera do stosowania w aplikacjach
ASP.NET.
9 C EKYQ EK QDKGMVW 5GTXGT
Krótki spis właściwości obiektu 5GTXGT zawiera:
/CEJKPG0COG — pobiera nazwę serwera sieci WWW.
5ETKRV6KOGQWV — wymaga podania w sekundach limitu czasu dla skryptów serwera.
/GVQF[ MNCU[ *VVR5GTXGT7VKNKV[
Poni ej przedstawiono krótki przegląd metod klasy *VVR5GTXGT7VKNKV[:
%TGCVG1DKGEV
5VTKPI RTQIKF — tworzy instancję obiektu COM identyfikowanego
przez progid.
30. %ú è + 9RTQYCFGPKG FQ #520'6
'ZGEWVG — uruchamia inną stronę WWW na tym serwerze, wstrzymując
wykonywanie bie ącej strony do momentu, a serwer zakończy przetwarzanie nowej.
)GV.CUV'TTQT — zwraca ostatni odnotowany wyjątek bie ącej aplikacji WWW
lub strony.
*VON'PEQFG — koduje łańcuch i zwraca zakodowany łańcuch.
*VONGEQFG — dekoduje łańcuch i zwraca zdekodowany łańcuch.
/CRRCVJ — przekłada ście kę wirtualną na ście kę fizyczną.
6TCPUHGT — kończy wykonywanie bie ącej strony i rozpoczyna wykonywanie
nowego ądania, u ywając podanej ście ki URL.
7TN'PEQFG — koduje łańcuch.
7TNGEQFG — dekoduje łańcuch.
7TN2CVJ'PEQFG — koduje część łańcucha URL zawierającego ście kę i zwraca
zakodowany łańcuch.
NGFGPKG CRNKMCELK #520'6
Podczas projektowania aplikacji ASP.NET macie mo liwość śledzenia stanu lub postępu
działania aplikacji w czasie rzeczywistym. Jest to mo liwe dzięki funkcjom śledzenia
ASP.NET.
Zwykłą metodą osiągnięcia tego efektu w aplikacjach klasycznego ASP było umieszczanie
niemal w ka dym miejscu kodu instrukcji TGURQPUGYTKVG
. Technika ta jednak wpływa na:
wydajność — większa ilość kodu na stronie WWW powoduje, e wczytuje się
on wolniej;
czytelność i łatwość obsługi kodu — częste stosowanie w kodzie strony
internetowej funkcji TGURQPUGYTKVG
, zarówno do wypisywania treści strony,
jak i informacji słu ącej do kontroli działania, mo e początkowo uczynić kod
trudnym do czytania i obsługi;
mo liwość wyłączania — prawdopodobnie najwa niejszą mo liwością, której
brakuje metodzie TGURQPUGYTKVG, jest włączanie i wyłączanie wyjścia do przeglądarki.
ASP.NET pozwala na dynamiczne śledzenie stanu aplikacji WWW dzięki swojemu syste-
mowi śledzenia. System, w który wyposa ony jest ASP.NET, wykonuje dwa typy operacji:
śledzenie na poziomie strony (Page-level Tracing) — pozwala na śledzenie na
poziomie strony WWW na podstawie systemu „strona po stronie”;
śledzenie na poziomie aplikacji (Application-level Tracing) — pozwala na śledzenie
na poziomie aplikacji.
Oba typy śledzenia są konfigurowane za pomocą pliku konfiguracyjnego web.config.
31. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
+PHQTOCELG NGFGPKC
Na razie omówiliśmy śledzenie na poziomie abstrakcyjnym. ASP.NET automatycznie
śledzi stan aplikacji i stron WWW na serwerze sieci WWW i gdy śledzenie jest włączone,
większość z tych informacji jest dostępnych dla programisty. Dostępne informacje po-
chodzące z operacji śledzenia są omówione w następnych podrozdziałach.
Przed szczegółowym przedstawieniem ka dej sekcji wyników śledzenia warto stworzyć
prostą stronę internetową z włączonym śledzeniem. Aby to zrobić, wystarczy umieścić na
początku strony .aspx dyrektywę:
RCIG 6TCEG VTWG
Podczas przetwarzania generowana jest lista śledzenia, umieszczona później na końcu
strony. Lista ta składa się z wymienionych poni ej sekcji.
Sekcja Request Details (szczegóły ądania) zawiera następujące elementy:
5GUUKQP + Identyfikator sesji dla podanego ądania.
6KOG QH 4GSWGUV Czas pojawienia się ądania.
4GSWGUV 'PEQFKPI Kodowanie znaków zastosowane w ądaniu.
4GSWGUV 6[RG )'6 ^ 2156
5VCVWU %QFG Wartość kodu stanu powiązanego z odpowiedzią. Więcej informacji na ten
temat mo na znaleźć pod adresem http://www.w3c.org w dokumencie
RFC 2616 dla HTTP 1.1
4GURQPUG 'PEQFKPI Kodowanie znaków dla odpowiedzi
Sekcja Trace Information (informacje śledzenia) zawiera następujące elementy:
%CVGIQT[ Kategoria śledzenia podana za pomocą metody 6TCEG9CTP
lub 6TCEG9TKVG.
/GUUCIG Wiadomość śledzenia podana za pomocą metody 6TCEG9CTP
lub 6TCEG9TKVG.
(TQO (KTUV
U Czas w sekundach od wyświetlenia pierwszej informacji.
(TQO .CUV
U Czas w sekundach od wyświetlenia ostatniej informacji.
Sekcja Control Tree (drzewo kontrolek) zawiera następujące elementy:
%QPVTQN + Identyfikator kontrolki. Jeśli nie podano ID kontrolki, ASP.NET
wygeneruje je automatycznie za pomocą właściwości %NKGPV+.
6[RG Pełna nazwa typu kontrolki.
4GPFGT 5KG $[VGU Rozmiar w bajtach odrysowywanej kontrolki (włącznie z kontrolkami
potomnymi).
8KGY5VCVG 5KG $[VGU Rozmiar w bajtach informacji o wartościach atrybutów kontrolki
(wyłączając kontrolki potomne).
32. %ú è + 9RTQYCFGPKG FQ #520'6
Sekcja Session State (stan sesji) zawiera następujące elementy:
5GUUKQP -G[ Klucz stanu sesji.
6[RG Typ danych składowanego obiektu.
8CNWG Aktualnie składowany obiekt.
Sekcja Application State (stan aplikacji) zawiera następujące elementy:
#RRNKECVKQP -G[ Klucz stanu aplikacji.
6[RG Typ danych składowanego obiektu.
8CNWG Aktualnie składowany obiekt.
Sekcja Cookies Collection (zbiór cookies) zawiera następujące elementy:
0COG Nazwa cookie.
8CNWG Dane przechowywane w cookie.
5KG Rozmiar cookie w bajtach.
Sekcja Headers Collection (zbiór nagłówków) zawiera następujące elementy:
0COG Nazwa elementu nagłówka.
8CNWG Dane elementu nagłówka.
Sekcja Form Collection (zbiór formularza) zawiera następujące elementy:
0COG Nazwa zmiennej formularza.
8CNWG Dane zmiennej formularza.
Sekcja Server Variables (zmienne serwera) zawiera następujące elementy:
0COG Nazwa zmiennej serwera.
8CNWG Dane zmiennej serwera.
5VCV[EP[ QDKGMV 6TCEG
-NCUC 6TCEG%QPVGZV
Obiekt 6TCEG jest nową wbudowaną kontrolką ASP.NET. Słu y on do zmieniania ustawień
śledzenia strony WWW lub do wysyłania informacji śledzenia z aplikacji WWW do sys-
temu śledzenia.
9 C EKYQ EK MNCU[ 6TCEG%QPVGZV
Poni ej przedstawiono właściwości obiektu 6TCEG:
+U'PCDNGF — wskazuje, czy dla bie ącego ądania WWW śledzenie jest włączone.
6TCEG/QFG — ustawia porządek, w jakim wiadomości śledzenia będą przekazywane
do ądającej przeglądarki.
33. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
/GVQF[ QDKGMVW 6TCEG
Obiekt 6TCEG ma następujące metody:
9TKVG — zapisuje informacje śledzenia do dziennika śledzenia.
9CTP — zapisuje informacje śledzenia do dziennika śledzenia. W przeciwieństwie
do 9TKVG, wszystkie ostrze enia będą oznaczone w dzienniku kolorem czerwonym.
5VQUQYCPKG QDKGMVW 6TCEG
Obiekt 6TCEG jest stosowany w Web Forms tylko do czterech zadań. Są to:
zmiana porządku wyświetlania informacji śledzenia — temu celowi słu y
właściwość VTCEG6TCEG/QFG. Poni ej przedstawiono przykład, który ilustruje
uporządkowanie informacji śledzenia według kategorii:
6TCEG6TCEG/QFG UQTV$[%CVGIQT[
sprawdzenie, czy śledzenie bie ącej strony jest włączone — w tym celu stosuje
się właściwość VTCEGKU'PCDNGF obiektu 6TCEG. Poni ej przedstawiono przykład
takiego zastosowania, gdzie flaga VTCEG działa jako przełącznik dla własnego kodu
słu ącego do usuwania błędów:
+H VTCEGGPCDNGF VJGP
MQF U W æE[ FQ WUWYCPKC D úFÎY
'PF KH
wysyłanie informacji (Trace Information) do systemu śledzenia — za pomocą
metody VTCEGYTKVG
mo na wysłać tekst do systemu śledzenia. Metoda ta pozwala
na podanie samego łańcucha oraz kategorii, w której zostanie on umieszczony.
Poni szy przykład ilustruje dodanie informacji do kategorii 75'4 '(+0+' :
6TCEGYTKVG
75'4 '(+0+' VJKU KU C WUGT FGHKPKGF VTCEG UVTKPI
wysyłanie ostrze eń (Warning Trace Information) do systemu śledzenia
— działa tak samo jak metoda 9TKVG, z jednym wyjątkiem — wysłany łańcuch
będzie wyświetlony w wypisanej informacji śledzenia na czerwono. Oto przykład
ilustrujący to zastosowanie:
6TCEGYCTP
75'4 '(+0+' VJKU KU C WUGT FGHKPKGF VTCEG UVTKPI
5VQUQYCPKG NGFGPKC PC RQKQOKG UVTQP[
Aby stosować śledzenie na poziomie strony, nale y umieścić atrybut 6TCEG w dyrektywie
2CIG. Oto przykład:
2CIG 6TCEG VTWG
Po umieszczeniu tego kodu strona WWW wypisuje całą informację śledzenia na końcu
dyrektywy podczas jej działania.
Gdy atrybut 6TCEG jest ustawiony na VTWG, właściwość 6TCEGKU'PCDNGF jest równie
ustawiona na VTWG.
34. %ú è + 9RTQYCFGPKG FQ #520'6
Dyrektywa 2CIG obsługuje jeszcze jeden atrybut do stosowania w systemie śledzenia
— 6TCEG/QFG. Atrybut ten jest stosowany do ustawiania kolejności wyświetlenia infor-
macji systemu śledzenia. Ma on tylko dwa mo liwe atrybuty:
5QTV$[6KOG
5QTV$[%CVGIQT[
Poni szy przykład ilustruje u ycie atrybutu 6TCEG/QFG w dyrektywie 2CIG:
2CIG .CPIWCIG 8$ 6TCEG 6TWG 6TCEG/QFG 5QTV$[%CVGIQT[
Gdy dla strony włączono śledzenie, informacje śledzenia są wyświetlane w ka dej przeglą-
darce, która ąda od serwera tej strony.
Przykład śledzenia na poziomie strony przedstawiono na wydruku 2.2.
9[FTWM Przykład śledzenia strony (trace01.aspx)
2CIG 6TCEG 6TWG 6TCEG/QFG 5QTV$[6KOG
5ETKRV TWPCV 5GTXGT
5WD 2CIGA.QCF
U #U 1DLGEV G #U 'XGPV#TIU
VTCEGYCTP
75'4 '(+0+' 64#%' 9#40 5VTQPC C CFQYCPC
VTCEGYTKVG
75'4 '(+0+' 64#%' 94+6' 5VTQPC C CFQYCPC
'PF 5WD
5ETKRV
JVON
DQF[
D 2QFCL UYQLG KOKúD
DT
HQTO TWPCV UGTXGT
CURVGZVDQZ KF O[PCOG TWPCV UGTXGT
CURDWVVQP KF O[DWVVQP VGZV Y[ NKL TWPCV UGTXGT
DT
HQTO
DQF[
JVON
W kodzie przedstawionym na wydruku 2.2 system śledzenia zostaje uruchomiony z porząd-
kiem wyświetlania wyników zale nym od czasu. Następnie w obsłudze zdarzenia RCIGANQCF
tworzona jest informacja i ostrze enie systemu śledzenia. Wynik działania tego kodu przed-
stawiono na rysunku 2.1.
NGFGPKG PC RQKQOKG CRNKMCELK
Aby umo liwić śledzenie na poziomie aplikacji, nale y dodać do pliku web.config sekcję
6TCEG.
35. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
4[UWPGM
Przykład
zastosowania
śledzenia na
poziomie strony
Sekcja 6TCEG słu y do konfigurowania systemu śledzenia ASP.NET:
EQPHKITCVKQP
U[UVGOYGD
EWUVQO'TTQTU OQFG 1HH
VTCEG
GPCDNGF VTWG
TGSWGUV.KOKV
RCIG1WVRWV VTWG
VTCEG/QFG 5QTV$[6KOG
NQECN1PN[ VTWG
U[UVGOYGD
EQPHKIWTCVKQP
Poni ej przedstawiono składnię sekcji 6TCEG:
GPCDNGF — nale y ustawić na VTWG, jeśli mo liwe jest śledzenie aplikacji;
w przeciwnym wypadku HCNUG. Wartością domyślną jest HCNUG.
TGSWGUV.KOKV — liczba śledzonych ądań składowanych na serwerze. Wartością
domyślną jest .
RCIG1WVRWV — jeśli informacja śledzenia ma być wyświetlana zarówno na stronie
aplikacji, jak i w narzędziu śledzenia, .axd nale y ustawić na VTWG; w przeciwnym
wypadku na HCNUG.
Opcja ta nie ma wpływu na strony z włączonym śledzeniem.
VTCEG/QFG — wskazuje, czy informacja śledzenia powinna być wyświetlona
w kolejności, w jakiej była przetwarzana, według czasu (5QTV$[6KOG) czy
w kolejności alfabetycznej zgodnie z kategorią zdefiniowaną przez u ytkownika
(5QTV$[%CVGIQT[).
NQECN1PN[ — jeśli podgląd śledzenia (trace.axd) ma być dostępny tylko na
komputerze, na którym działa serwer, nale y ustawić na VTWG; w przeciwnym
wypadku na HCNUG.
36. %ú è + 9RTQYCFGPKG FQ #520'6
7 [EKG RQFINæFW NGFGPKC
VTCEGCZF
Po włączeniu śledzenia dla całej aplikacji WWW ka da strona przetwarza ądania stron tak,
jakby włączone było ich śledzenie. ądania te są przechowywane na serwerze i mogą być
przeglądane za pomocą aplikacji podglądu śledzenia (trace.axd). Jest to plik umieszczony
w katalogu głównym aplikacji, tworzony w momencie, gdy w pliku konfiguracyjnym web.
config umieszczana jest zdefiniowana powy ej sekcja. Działanie podglądu przedstawiają
rysunki 2.2 i 2.3.
4[UWPGM
Strona śledzenia
aplikacji
4[UWPGM
Strona szczegółów
żądania
2TGEJQFGPKG FQ #520'6
Jednym z problemów, z którymi spotka się większość u ytkowników, jest przejście z kla-
sycznego ASP do ASP.NET. Ten podrozdział ma na celu przedstawienie obszarów mo liwej
niekompatybilności pomiędzy tymi odmianami ASP.
ASP i ASP.NET mogą bez problemu działać obok siebie na jednym serwerze IIS; nie istnieje
zatem mo liwość zniszczenia aplikacji ASP przez instalację ASP.NET.
37. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
Niezale ność ta jest osiągnięta przez zastosowanie ró nych rozszerzeń plików dla stron
ASP i ASP.NET. Oznacza to, e migracja będzie w większości polegała na skopiowaniu
plików .asp do plików .aspx, przetestowaniu ich, wyeliminowaniu problemów i publikacji.
Poni ej wymieniono listę mo liwych problemów z kompatybilnością pomiędzy klasycz-
nym ASP i ASP.NET.
OKCP[ Y UETKRV K
Wszystkie procedury i zmienne globalne muszą być deklarowane wewnątrz bloków UETKRV
TWPCVUGTXGT , a nie w blokach odrysowujących ASP: .
Strona mo e zawierać więcej ni jeden blok UETKRV , ale we wszystkich blokach na stronie
musi być stosowany ten sam język programowania.
Cały kod umieszczony w bloku UETKRV UETKRV , oprócz definicji globalnych zmien-
nych, musi być zawarty wewnątrz procedur.
W klasycznym ASP kod był umieszczony pomiędzy znacznikami i , a wszystkie
elementy strony umieszczone przed pierwszym znacznikiem były wykonywane zaraz
po załadowaniu się strony. Aby uzyskać kod wykonujący się zaraz po załadowaniu strony
w ASP.NET, nale y zastosować obsługę zdarzenia RCIGANQCF.
(WPMELG QFT[UQYWLæEG UMT[RVW
Funkcje odrysowujące nie są obsługiwane przez ASP.NET. W klasycznym ASP mo na
było umieszczać kod HTML wewnątrz ciała funkcji, jak przedstawiono w poni szym
przykładzie:
(WPEVKQP O[4GPFGT(WPEVKQP
VCDNG
VT
VF
4GURQPUG9TKVG 4GPFGT HWPEVKQP UCORNG VGZV
VF
VT
VCDNG
'PF (WPEVKQP
Na stronie ASP.NET taki kod wywołałby błąd. Aby tego uniknąć, nale ałoby zapisać ten
skrypt następująco:
5%4+26 .#0)7#)' 8$ TWPCVUGTXGT
(WPEVKQP O[4GPFGT(WPEVKQP
4GURQPUG9TKVG
VCDNG VT VF
4GURQPUG9TKVG
4GPFGT HWPEVKQP UCORNG VGZV
4GURQPUG9TKVG
VF VT VCDNG
'PF (WPEVKQP
5%4+26
Aby wygenerować ten fragment kodu HTML, wystarczy teraz wywołać powy szą funkcję.
38. %ú è + 9RTQYCFGPKG FQ #520'6
1DU WIKYCPG Lú[MK UVTQP KPVGTPGVQY[EJ
Cały kod na stronie ASP.NET musi być napisany w tym samym języku programowania.
Obecnie ASP.NET obsługuje Visual Basic, C# i JScript. Przykładowo:
.CPIWCIG ,UETKRV
Nazwa języka mo e być zadeklarowana jako atrybut znacznika UETKRV , jeśli jest to
wymagane, ale musi być to ten sam język, w którym napisano resztę kodu na stronie.
Jeśli w ró nych blokach skryptu na tej same stronie podano ró ne języki, zostanie zgłoszony
błąd, poniewa na jednej stronie dopuszczalny jest tylko jeden język. Mo na jednak stosować
kontrolki u ytkownika napisane w dowolnym języku kompatybilnym z ASP.NET.
0KIF[ YKúEGL 8$5ETKRV
VBScript nie jest ju obsługiwany, ale jego składnia jest bardzo podobna do składni Visual
Basic.NET. Poni ej przedstawiono najwa niejsze ró nice pomiędzy nimi:
Nie istnieje ju typ danych 8CTKCPV. Został on zastąpiony przez typ QDLGEV. Typy
obiektowe muszą być rzutowane jawnie na którykolwiek podstawowy typ danych.
Lista parametrów wywołania ka dej funkcji musi być ujęta w nawiasy. Dotyczy to
równie funkcji bez parametrów.
Domyślnie, argumenty są przekazywane przez wartość, a nie przez referencję,
jak w poprzednich wersjach Visual Basica.
Obiekty nie mają ju domyślnych właściwości. Wszystkie właściwości muszą być
podane jawnie. Przykładowo, do tekstu zapisanego w polu tekstowym nale y się
odwoływać następująco:
KO UVT #U 5VTKPI 6GZV$QZ6GZV
Typ danych +PVGIGT ma teraz 32 bity, typ .QPI zaś ma 64 bity.
Typy danych powinny zawsze być jawnie rzutowane na inne typy danych.
Rzutowanie niejawne jest niebezpieczne. Przykładowo, jeśli konieczna jest wartość
łańcuchowa, liczbę nale y zrzutować jawnie:
4GURQPUG9TKVG
0WODGT 'PVGTGF KU
%V[RG
EQWPV UVTKPI
Zmienne wymienione w tej samej instrukcji KO będą tego samego typu.
Przykładowo, w instrukcji KO K L M #U +PVGIGT, zmienne K, L i M będą typu
+PVGIGT. W poprzednich wersjach Visual Basica zmienne K i L byłyby typu 8CTKCPV,
zaś M typu +PVGIGT.
Nie są obsługiwane polecenia 5GV i .GV. Przypisywanie obiektów odbywa się
za pomocą prostej operacji przypisania:
O[1DLGEV O[1DLGEV
Zmieniła się składnia właściwości klas. Nie ma ju 2TQRGTV[ .GV, 2TQRGTV[ )GV
ani 2TQRGTV[ 5GV.
39. 4QFKC 2TQLGMVQYCPKG CRNKMCELK #520'6
2WDNKE 2TQRGTV[ O[2TQRGTV[ #U 5VTKPI
)GV
O[2TQRGTV[ A8CNWG
'PF )GV
5GV
A8CNWG O[2TQRGTV[
'PF 5GV
'PF 2TQRGTV[
Podczas konkatenacji łańcuchów znaków po obu stronach operatora muszą
wystąpić spacje. VBScript umo liwiał zapis C D E; teraz jednak, aby uniknąć
wystąpienia błędu składni, nale y zapisać C D E.
Wszystkie instrukcje +H muszą składać się z wielu wierszy. W języku VBScript
mo liwe było napisanie +H w jednym wierszu.
[TGMV[Y[ UVTQP UKGEK 999
Poprzednie wersje ASP wymagały umieszczania dyrektyw stron, jeśli występowały, w pierw-
szym wierszu strony wewnątrz tego samego bloku. Przykładowo:
.#0)7#)' 8$5ETKRV %1'2#)'
W ASP.NET dodano kilka nowych dyrektyw. Atrybut .CPIWCIG musi być teraz umieszczony
wewnątrz dyrektywy 2CIG. Ilustruje to poni szy przykład:
2CIG .CPIWCIG 8$ %QFGRCIG
1WVRWV%CEJG WTCVKQP 8CT[$[2CTCO NQECVKQP
Dyrektywy mogą być umieszczone w dowolnym miejscu strony .aspx, jednak standardową
praktyką jest umieszczanie ich na początku strony. W dyrektywach ASP.NET wielkość
znaków nie ma adnego znaczenia; nie jest równie wymagane ujmowanie wartości atry-
butów w cudzysłowy.
9URÎ RTCEC %1/
Większość komponentów COM współpracuje z ASP.NET. Mo liwe jest równie im-
plementowanie powiązań za pomocą 5GTXGT%TGCVG1DLGEV, podobnie jak w poprzednich
wersjach ASP.