ASP.NET. Vademecum profesjonalisty
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

ASP.NET. Vademecum profesjonalisty

on

  • 2,879 views

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 ...

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.

Statistics

Views

Total Views
2,879
Views on SlideShare
2,879
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

ASP.NET. Vademecum profesjonalisty Document Transcript

  • 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 %QPVCKPGT&CVC+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 %QPVCKPGT&CVC+VGO. Innym po- jemnikiem, który mo na stosować w &CVC$KPFGT'XCN, jest 2CIG.  &CVC$KPFGT'XCN %QPVCKPGT&CVC+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:  DQQN &CVC$KPFGT'XCN %QPVCKPGT&CVC+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 5VQEM&GVCKNU CU 4GEQTF5GV  5GV 5VQEM&GVCKNU  /[&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. 5VCVWU&GUETKRVKQP — 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. *VON&GEQFG — 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. 7TN&GEQFG — 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.