ASP NET 2 0 AJAX Zaawansowane programowanie asajzp

background image

Wydawnictwo Helion

ul. Koœciuszki 1c

44-100 Gliwice

tel. 032 230 98 63

e-mail: helion@helion.pl

ASP.NET 2.0 AJAX.

Zaawansowane

programowanie

Autor: Matt Gibbs, Dan Wahlin

T³umaczenie: Krzysztof B¹bol

ISBN: 978-83-246-1300-7

Tytu³ orygina³u:

Professional ASP.NET 2.0 AJAX

Format: B5, stron: 328

Œmia³o wkraczaj w nowoczesne technologie,

aby tworzyæ interaktywne aplikacje internetowe!

Jak zarz¹dzaæ odwo³aniami do strony?

Jak osadzaæ skrypty w kontrolkach serwerowych?

Jak u¿ywaæ narzêdzia Fiddler do kontroli komunikatów?

ASP.NET AJAX to nazwa stworzonego przez Microsoft rozwi¹zania AJAX. Odnosi siê

do zestawu technologii klienckich i serwerowych, które koncentruj¹ siê na ulepszaniu

programowania WWW pod Visual Studio. Jest to jedna z najpopularniejszych,

a równoczeœnie najbardziej docenianych – zarówno przez u¿ytkowników,

jak i programistów – technologii do tworzenia interaktywnych witryn internetowych.

ASP.NET AJAX dysponuje miêdzy innymi serwerowymi us³ugami aplikacyjnymi, takimi

jak uwierzytelnianie i przechowywanie profilu u¿ytkownika, oraz zawiera zestaw kontrolek

u³atwiaj¹cych asynchroniczn¹ aktualizacjê stron i korzystanie z zasobów serwera.
Ksi¹¿ka

ASP.NET 2.0 AJAX. Zaawansowane programowanie

szczegó³owo ukazuje,

na czym polega tworzenie aplikacji WWW nowej generacji. Dziêki temu podrêcznikowi

bêdziesz wiedzia³, jak korzystaæ z ró¿nych bibliotek, jak u¿ywaæ zaawansowanych

kontrolek z pakietu AJAX Toolkit, a tak¿e jak budowaæ w³asne kontrolki. Nauczysz siê

asynchronicznie uaktualniaæ fragmenty stron i zarz¹dzaæ skryptami u¿ywanymi

w przegl¹darce, dowiesz siê, jak testowaæ takie aplikacje i usuwaæ z nich b³êdy.

Z t¹ ksi¹¿k¹ zdobêdziesz wiedzê potrzebn¹ do kreowania nowoczesnych,

interaktywnych aplikacji.

Czêœciowe aktualizacje stron

Pobieranie kodu JavaScript

Biblioteka kliencka ASP.NET AJAX

U¿ywanie prototypów

Elementy DOM

U¿ycie kontrolki ScriptManager

Dodawanie odwo³añ do skryptów

Zaawansowane kontrolki z pakietu AJAX Toolkit

Efekty interfejsu u¿ytkownika

Testowanie, debugowanie i wdra¿anie aplikacji ASP.NET AJAX

Korzystaj z nowoczesnych technologii

podczas tworzenia interaktywnych aplikacji internetowych!

background image

Spis treci

O autorach .................................................................................................................................................11

Wstp ........................................................................................................................................................ 13

Rozdzia 1. Tworzenie nowej generacji aplikacji WWW ......................................................................... 17

Wzbogacanie aplikacji internetowych .............................................................................. 18
Kto skorzysta z technologii AJAX .................................................................................... 19

Dlaczego uytkownicy chc aplikacji AJAX .................................................................. 19
Dlaczego programici chc stosowa AJAX ................................................................ 20

Czym jest ASP.NET AJAX ............................................................................................... 22

Komponent ASP.NET ............................................................................................... 24
Komponent JavaScript ............................................................................................. 25
Komponent usug sieci WWW ................................................................................... 28
Komponent dynamicznego HTML .............................................................................. 29

Inne biblioteki AJAX ...................................................................................................... 29
Zachowywanie równowagi midzy programowaniem klienckim

a serwerowym dziki ASP.NET AJAX ............................................................................. 31

Podsumowanie ............................................................................................................ 32

Rozdzia 2. Czciowe aktualizacje stron ............................................................................................. 33

Kontrolka UpdatePanel ................................................................................................. 33

Wyzwalanie aktualizacji ............................................................................................ 36
Wywoywanie metody Update z serwera ..................................................................... 40
Cykl ycia czciowej aktualizacji strony .................................................................... 41
Przestrogi i objanienia zawioci zwizanych z UpdatePanel ....................................... 42

Kontrolka UpdateProgress ............................................................................................ 43
Automatyczne aktualizacje z kontrolk Timer .................................................................. 47
Zarzdzanie odwoaniami do strony ................................................................................ 49

Cykl wywoania strony .............................................................................................. 50
Anulowanie wywoania ............................................................................................. 53
Wykrywanie bdów ................................................................................................. 54
Praca z aktualizacjami ............................................................................................. 55

AJAX a dostpno ....................................................................................................... 56
Podsumowanie ............................................................................................................ 57

background image

6

ASP.NET 2.0 AJAX. Zaawansowane programowanie

Rozdzia 3. JavaScript dla programisty ASP.NET ................................................................................. 59

Uycie JavaScriptu po stronie klienta ............................................................................. 60

Pobieranie kodu JavaScript do przegldarki ............................................................... 60
Odczuwana wydajno ............................................................................................. 61
Zasoby skryptu ....................................................................................................... 62

Typy zmiennych w JavaScripcie ...................................................................................... 63
Anomalie jzyka ........................................................................................................... 66

Co to jest równo? ................................................................................................ 66
Null, undefined albo co innego ............................................................................... 69

Zakres zmiennych ........................................................................................................ 70
Uywanie prototypów .................................................................................................... 73
Wicej o domkniciach ................................................................................................. 76

Odmiecanie .......................................................................................................... 79
Elementy DOM ........................................................................................................ 80
Unikanie wycieków pamici ...................................................................................... 80

Ewaluacja eval ............................................................................................................. 81
Obsuga wyjtków ......................................................................................................... 82
Pobieranie fragmentów acucha tekstowego .................................................................. 84
Lepszy JavaScript ......................................................................................................... 85

Redukcja skryptów .................................................................................................. 85
Uywanie zmiennych buforujcych ............................................................................ 86

Podsumowanie ............................................................................................................ 87

Rozdzia 4. Zrozumie bibliotek klienck ASP.NET AJAX ..................................................................... 89

Cykl ycia strony w przegldarce .................................................................................... 90
Uywanie systemu typów ............................................................................................... 91

Deklarowanie przestrzeni nazw ................................................................................. 91
Tworzenie klas ........................................................................................................ 94
Uywanie interfejsów ............................................................................................... 99
Definiowanie wylicze i flag .................................................................................... 101

Base Class Library ..................................................................................................... 105

Klasa String ......................................................................................................... 105
Daty i liczby .......................................................................................................... 106
Tablice ................................................................................................................. 108

Obsuga Intellisense ................................................................................................... 110
Bdy i debugowanie ................................................................................................... 113

Konsola ledzenia bdów ..................................................................................... 113
Tworzenie bdów .................................................................................................. 114
Parametry walidacyjne ........................................................................................... 115

Obiekt Browser .......................................................................................................... 117
Podsumowanie .......................................................................................................... 118

Rozdzia 5. Uycie kontrolki ScriptManager .........................................................................................121

Wszechobecny ScriptManager ..................................................................................... 121

Dodawanie odwoa do skryptów ............................................................................ 123
Ustawianie ScriptMode .......................................................................................... 125
Osadzanie zasobów skryptowych ............................................................................ 126
Lokalizacja skryptów .............................................................................................. 130
Globalizacja skryptów ............................................................................................ 132
Odwoania do usug ............................................................................................... 134

background image

Spis

treci

7

Usugi aplikacyjne ASP.NET ......................................................................................... 137

Uwierzytelnianie przy uyciu formularzy .................................................................... 137
Usuga profili ........................................................................................................ 140

Obsuga bdów ......................................................................................................... 144

Dopuszczalno niestandardowych bdów .............................................................. 144
Obsuga bdów w czasie asynchronicznego odesania ............................................. 145
Limit czasowy w wywoaniach asynchronicznych ....................................................... 146

Zmiana lokalizacji skryptów ......................................................................................... 146

Ustawianie cieki do skryptu ................................................................................ 147
Rozwizywanie odwoa do skryptów ....................................................................... 147
ScriptManagerProxy .............................................................................................. 148
Kompresja skryptów .............................................................................................. 148

Zgodno .................................................................................................................. 148
Podsumowanie .......................................................................................................... 149

Rozdzia 6. Praca w sieci z ASP.NET AJAX .............................................................................................151

Obiekt XMLHttpRequest .............................................................................................. 151

Bezpieczestwo XMLHttpRequest ........................................................................... 152
Waciwoci i metody obiektu ................................................................................ 152

Wykonywanie wywoa WebRequest ............................................................................. 154

Ustawianie metody HTTP ....................................................................................... 155
Ustalanie limitów czasu ......................................................................................... 157
Dodawanie niestandardowych nagówków ............................................................... 158
Przesyanie dodatkowych danych ............................................................................ 161
Rozwizywanie penego adresu URL ........................................................................ 162

Zarzdzanie daniami WWW ...................................................................................... 162

Domylny limit czasu ............................................................................................. 162
Globalna obsuga da WWW ............................................................................... 165
WebRequestExecutor ............................................................................................ 167

Przesyanie danych ..................................................................................................... 168

Serializacja ........................................................................................................... 168
Format JSON ........................................................................................................ 169
Serializacja JSON .................................................................................................. 172
PageMethods ....................................................................................................... 176
Praca z datami ...................................................................................................... 178
Pomijanie serializacji ............................................................................................. 178
Konfiguracja serializera JSON ................................................................................. 179
Niestandardowa serializacja ................................................................................... 180

Podsumowanie .......................................................................................................... 180

Rozdzia 7. Usugi aplikacyjne w ASP.NET AJAX ...................................................................................183

Uwierzytelnianie uytkowników ..................................................................................... 183

Konfiguracja uwierzytelniania na bazie formularzy .................................................... 184
Niestandardowe uwierzytelnianie ............................................................................ 185
Uwierzytelnianie w kodzie JavaScript ....................................................................... 187
Dostp do statusu uytkownika .............................................................................. 189
Wylogowanie ......................................................................................................... 190

Dane profilu uytkownika ............................................................................................ 191

Definiowanie danych profilu ................................................................................... 192
Dostp do waciwoci profilu ................................................................................ 194
Dostp do danych profilu z przegldarki .................................................................. 195

background image

8

ASP.NET 2.0 AJAX. Zaawansowane programowanie

Wstpne adowanie waciwoci profili .................................................................... 197
adowanie waciwoci profilu ................................................................................ 198
Zapisywanie danych profilu .................................................................................... 201

Podsumowanie .......................................................................................................... 204

Rozdzia 8. Zaawansowane kontrolki z pakietu AJAX Toolkit ............................................................ 205

Kontrolowanie ukadu strony ....................................................................................... 206

Accordion ............................................................................................................. 206
AlwaysVisibleControlExtender ................................................................................. 209
CollapsiblePanelExtender ...................................................................................... 211
ResizableControlExtender ...................................................................................... 212
Zakadki ............................................................................................................... 214

Efekty interfejsu uytkownika ....................................................................................... 216

Animacje .............................................................................................................. 217
UpdatePanelAnimationExtender .............................................................................. 218
DropShadowExtender ............................................................................................ 219
RoundedCornersExtender ...................................................................................... 220

Kontrolki pojawiajce si na ekranie ............................................................................ 221

CalendarExtender .................................................................................................. 221
ConfirmButtonExtender .......................................................................................... 222
HoverMenuExtender .............................................................................................. 223
PopupControlExtender ........................................................................................... 224
ModalPopupExtender ............................................................................................. 224
CascadingDropDownExtender ................................................................................. 225

Podsumowanie .......................................................................................................... 227

Rozdzia 9. Testowanie i debugowanie aplikacji ASP.NET AJAX .......................................................... 229

Skrypty produkcyjne i diagnostyczne ............................................................................ 229
Uywanie klasy Error ................................................................................................... 232
Uywanie klasy Sys.Debug .......................................................................................... 235

Wykonywanie operacji ledzenia ............................................................................. 236
Dokonywanie asercji .............................................................................................. 239

Wczanie debugowania w przegldarce Internet Explorer .............................................. 240

Debugowanie za pomoc Internet Explorera i Visual Studio .NET 2005 ...................... 241

Debugowanie za pomoc Internet Explorera i programu Microsoft Script Debugger .......... 245
Debugowanie za pomoc Firefoksa i Firebug ................................................................. 246
Przegldanie komunikatów da i odpowiedzi w ASP.NET AJAX ..................................... 249

Uywanie narzdzia Fiddler do kontroli komunikatów ................................................ 249
Uycie programu Web Development Helper do kontroli komunikatów ......................... 252

Podsumowanie .......................................................................................................... 254

Rozdzia 10. Wdraanie aplikacji ASP.NET AJAX .................................................................................. 255

Instalacja poszczególnych fragmentów ......................................................................... 255

ASP.NET AJAX ....................................................................................................... 256
ASP.NET AJAX Control Toolkit ................................................................................. 256
ASP.NET Futures CTP ............................................................................................ 257

Przygotowanie do wdroenia na farmie serwerów WWW ............................................... 258

Ustawianie MachineKey ......................................................................................... 258
Obsuga stanu sesji .............................................................................................. 259

background image

Spis

treci

9

Korzystanie z innej platformy ....................................................................................... 260
Unikanie typowych problemów w konfiguracji ................................................................ 260

Wyczenie debugowania ....................................................................................... 261
Wczenie niestandardowych bdów ...................................................................... 261
Wyczenie ledzenia ............................................................................................ 262
Ustalanie trybu wdroenia ...................................................................................... 263

Tworzenie projektów wdroenia w sieci WWW ................................................................ 264
Po wdroeniu ............................................................................................................. 266

Monitorowanie wydajnoci ..................................................................................... 267
Sterowanie funkcjami AJAX .................................................................................... 268
Konfiguracja IIS7 .................................................................................................. 269

Korzystanie z kompresji skryptów ................................................................................ 270

Kompresja skryptów dynamicznych ......................................................................... 270
Kompresja skryptów statycznych ............................................................................ 271
Warto rozway uycie skryptów wspódzielonych ..................................................... 272
Nie warto zmienia wersji zawartych w ciekach dostpu ........................................ 272

Podsumowanie .......................................................................................................... 273

Rozdzia 11. Budowanie wasnych kontrolek ........................................................................................ 275

Budowanie kontrolek klienckich ASP.NET AJAX ............................................................. 276

Rozszerzanie jzyka JavaScript ............................................................................... 276
Rejestracja przestrzeni nazw .................................................................................. 279
Tworzenie konstruktora kontrolki ............................................................................ 279
Uywanie wzorca projektowego prototypu z notacj JSON ......................................... 281
Definiowanie waciwoci kontrolki ......................................................................... 283
Inicjalizacja kontrolki i obsuga zdarze ................................................................... 286
Definiowanie metod kontrolki ................................................................................. 289
Pozbywanie si zasobów kontrolki .......................................................................... 299
Rejestrowanie klasy niestandardowej kontrolki ........................................................ 300
Tworzenie egzemplarza kontrolki klienckiej .............................................................. 300

Budowanie serwerowej kontrolki ASP.NET AJAX ............................................................ 303

Osadzanie skryptów w kontrolkach serwerowych ...................................................... 304
Tworzenie klasy kontrolki i implementacja IScriptControl .......................................... 305
Przesanianie metod Render i OnPreRender ............................................................ 307
Uycie wasnej kontrolki ASP.NET AJAX na stronie ASP.NET ...................................... 311

Podsumowanie .......................................................................................................... 312

Skorowidz ..............................................................................................................................................313

background image

1

Tworzenie nowej generacji

aplikacji WWW

Aplikacje internetowe nie byy dotd tak zaawansowane i interaktywne jak zwyke progra-
my. Uytkownik kocowy niekoniecznie musi mie szczegóow wiedz na temat dziaania
aplikacji, ale wie, e kontakt ze stron w przegldarce zasadniczo róni si od korzystania
z lokalnie zainstalowanego programu. Kiedy zespó programistów przymierza si do nowego
projektu, jednym z pierwszych pyta, na które musi odpowiedzie, jest to, czy uytkownicy
bd w stanie zaakceptowa ograniczenia sieci WWW, czy potrzebuj instalacji tradycyjnego
programu. Aplikacje WWW s dostpne z prawie kadej przegldarki, waciwie wszdzie, ale
ograniczaj si do tego, co mona zrobi z kodem znaczników i skryptami dziaajcymi
w przegldarce.

Tradycyjne aplikacje, okrelane te mianem „cikich klientów” (ang. fat client), wymagaj
zainstalowania na komputerze uytkownika, ale pozwalaj programicie skorzysta z wbu-
dowanych w system operacyjny zaawansowanych moliwoci grafiki i sterowania, które
niezwykle trudno zaimplementowa w przegldarce WWW, a take wykorzysta zasoby
komputera do zada takich jak zapisywanie danych. Z drugiej strony, aplikacje internetowe
wystarczy zaktualizowa na serwerze, a uytkownicy automatycznie bd mieli dostp do
najnowszej wersji. O wiele trudniej zaktualizowa zwyky program, poniewa trzeba przekona
uytkowników, eby zainstalowali now wersj, lub wprowadzi do aplikacji inteligentny
system automatycznych aktualizacji.

Mówi si, e aplikacje internetowe nie wymagaj wdroenia, tradycyjne programy s za
pracochonne we wdroeniu i konfiguracji. Wybór midzy nimi czsto charakteryzuje si jako
kompromis midzy moliwociami a dostpnoci (w jzyku ang. gra sów rich — bogaty
i reach — siga). Aplikacje biurkowe na ogó oferuj bogatsze moliwoci w porównaniu
z tym, co daje przegldarka, ale aplikacje WWW bez wysiku moesz udostpni kademu
uytkownikowi w dowolnym systemie operacyjnym. Co wicej, w wielu firmach obowizuj
restrykcyjne zasady instalacji oprogramowania na komputerach pracowników, czsto nie
maj oni uprawnie administratora wymaganych do instalacji nowych programów, wic
aplikacje internetowe s w wielu sytuacjach jedynym sensownym rozwizaniem.

background image

18

ASP.NET 2.0 AJAX. Zaawansowane programowanie

Wzbogacanie aplikacji internetowych

W minionych latach posiadanie strony WWW byo czynnikiem wyróniajcym firm. Dzisiaj
ju tak nie jest. Teraz sama obecno w sieci nie wystarcza. Firmy staraj si odróni od
konkurencji poprzez aplikacje WWW, które odpowiadaj intuicyjnie na dziaania klientów
i przewiduj ich zachowania. Niniejsza ksika ukazuje, w jaki sposób ASP.NET AJAX od-
nosi si do specyficznych wymaga programowania WWW i zwiksza komfort uytkownika
Twoich stron. W tym rozdziale wytumacz, dlaczego potrzebujemy bardziej zaawansowa-
nych platform w programowaniu WWW. Opowiem o kluczowych elementach platformy
ASP.NET AJAX i przedstawi kilka innych opcji.

Zestaw technologii lecy u podstaw nowej generacji aplikacji internetowych nie jest wcale
nowy. Artykuy na stronach informacyjnych oraz blogi ukazuj Google, Flickr i kilka in-
nych serwisów jako najlepsze przykady wykorzystywania tych technologii w niespotykany
wczeniej sposób. Te aplikacje maj kilka unikalnych cech, ale w rzeczywistoci lece
u ich podstaw technologie s znane i uywane przez prawie dekad. Przygldajc si, w jaki
sposób Microsoft Exchange Server udostpnia w aplikacji Outlook Web Access zaawan-
sowane funkcje poczty internetowej z poziomu przegldarki, mona zobaczy, e koncepcja
wszechobecnego dostpu wykorzystujcego typowy zestaw funkcji przegldarki i dostar-
czajcego uytkownikowi bogatych wrae istniaa w praktyce od lat. Uytkownicy dostaj
naprawd penowartociow aplikacj bez potrzeby lokalnej instalacji i mog korzysta z poczty
praktycznie z kadego komputera.

Technologie uywane do budowania zaawansowanych aplikacji WWW przyjo si okre-
la mianem AJAX (ang. Asynchronous JavaScript and XML — asynchroniczny JavaScript
i XML). Chocia ten akronim mio brzmi, niewiele wyjania. Zamiast budowa aplikacje
WWW w postaci serii odson i przeadowa stron, programici wykorzystuj JavaScript do
asynchronicznej komunikacji z serwerem i dynamicznego aktualizowania czci strony.
Oznacza to, e strona potrafi dynamicznie zmienia wygld podczas interakcji z uytkowni-
kiem, a nawet moe wysya lub pobiera dane z serwera WWW w tle. Miny dni brzyd-
kiego przeadowania czyszczcego ekran uytkownika i odwracajcego jego uwag! Teraz
odsyanie do serwera jest potrzebne tylko wtedy, gdy chcemy przej na inn stron.

Mona nagi nawet t zasad. Niektóre aplikacje przekraczaj t granic i kompletnie
zmieniaj wygld ekranu uytkownika, tak jakby przeszy do nowej strony, ale robi
to, przesyajc dane asynchronicznie i zmieniajc zawarto strony bez faktycznego
przejcia do nowego adresu URL.

Akronim AJAX odnosi si do XML jako formatu danych wymienianych midzy klientem
a serwerem, ale w rzeczywistoci tworzy si aplikacje pobierajce zwyke fragmenty tek-
stu, XML oraz JSON (ang. JavaScript Object Notation — zapis obiektów JavaScript), który
omówi dokadniej w rozdziale 4. Pewna atrakcyjna cecha technologii AJAX nie jest nawet
zawarta w akronimie: oprócz nieblokujcej komunikacji z serwerem, programici wykorzy-
stuj Dynamic HTML (DHTML) i Cascading Style Sheets (CSS), aby stworzy naprawd
zdumiewajce interfejsy uytkownika. Kod JavaScript dziaajcy na kliencie komunikuje
si asynchronicznie z serwerem, a potem uywa DHTML do dynamicznego modyfikowania
strony, tworzc zaawansowane animacje, przejcia i aktualizacje treci, w czasie gdy uytkow-
nik kontynuuje interakcj ze stron. W wielu przypadkach uytkownicy nie bd nawet
zdawa sobie sprawy, e uywaj aplikacji internetowej!

background image

Rozdzia 1.

Q

Tworzenie nowej generacji aplikacji WWW

19

Kto skorzysta z technologii AJAX

AJAX oferuje korzyci zarówno uytkownikom, jak i programistom — uytkownikom, po-
niewa redukuje konflikt „dostpnoci i moliwoci”; programistom, poniewa pomaga po-
kona ograniczenia protokou HTTP.

Dlaczego uytkownicy chc aplikacji AJAX

Uytkownicy zazwyczaj patrz na tradycyjne programy jako co w rodzaju zobowizania.
Instaluj program, zazwyczaj z pyty wycignitej z kosztowego, zafoliowanego pudeka.
Program zabiera miejsce na dysku oraz pozycj w menu startowym. By moe trzeba bdzie
go co jaki czas uaktualnia lub przej póniej na wysz wersj, aby uzyska nowe funkcje.
Jeli program sam chce si aktualizowa, uytkownik jest regularnie konfrontowany z oknami
dialogowymi informujcymi o atkach lub uaktualnieniach. W zamian za zainwestowany
czas, pienidze i energi aplikacja odpaca si tym, e moe wykorzysta zasoby systemu
operacyjnego i komputera. Jest zaawansowana. Moe zapisywa dane lokalnie, szybko re-
aguje, ma interesujcy i intuicyjny interfejs graficzny.

Coraz wicej aplikacji jest dostpnych z poziomu przegldarki. Nie maj one dostpu do
penych zasobów sprztu i systemu operacyjnego, ale nie wymagaj takiego zaangaowania
jak tradycyjne programy. Przez lata korzystanie z aplikacji WWW odbywao si wedug
przewidywalnego wzoru. Uytkownik klika cze na stronie, przegldarka migocze, a uyt-
kownik czeka na odrysowanie ekranu (okropne przeadowanie). Ten cykl powtarza si po
raz kolejny. Uytkownik patrzy na prezentowan stron, nawizuje z ni interakcj i gdzie
klika. Przegldarka potwierdza to odgosem kliknicia i zaczyna kontaktowa si z serwe-
rem. Ekran przegldarki staje si czysty, jaka ikonka krci si lub miga, podczas gdy uyt-
kownik czeka, a serwer zwróci now wersj strony. W wielu przypadkach ta nowa wersja
jest prawie identyczna jak poprzednia, zmieniony jest tylko jej fragment. A potem cykl roz-
poczyna si od nowa. Powstaje wraenie powolnoci nawet przy szybkim poczeniu z In-
ternetem.

Zestaw technologii AJAX zmieni oczekiwania uytkowników wobec aplikacji internetowych.
Kod JavaScript uruchomiony w przegldarce wymienia dane z serwerem WWW asynchro-
nicznie. Nie sycha odgosu klikania, a przegldarka nie miga. Komunikacja z serwerem
nie jest blokujca, dziki czemu uytkownik moe dalej przeglda stron i nawizywa
z ni interakcj. Skrypt pobiera zaktualizowane dane z serwera i dynamicznie modyfikuje
stron, uywajc metodologii DHTML. Uytkownik moe dalej patrze na stron, podczas
gdy w tle aktualizuj si jej fragmenty. AJAX daje internautom bardziej dynamiczne wra-
enia, zbliajc zachowanie aplikacji WWW do tradycyjnych programów. JavaScript
wzbogaca dowiadczenia uytkownika dziki wsparciu mechanizmu „przecignij i upu”,
obsudze modalnych okien dialogowych i pozornie natychmiastowej aktualizacji rónych
elementów strony w zalenoci od dziaa internauty.

Dua cz sukcesów w wykorzystaniu technologii AJAX to zasuga postrzeganego wzro-
stu wydajnoci. Internauci doceniaj aplikacje, które przewiduj ich zachowania. Jeli uy-
jesz take kodu JavaScript, pobierajcego w tle obrazki i dane, które mog by potrzebne,

background image

20

ASP.NET 2.0 AJAX. Zaawansowane programowanie

uytkownicy dostan szybk odpowied bez typowej przerwy towarzyszcej ich akcjom.
Nikt nie chce czeka na wymian danych midzy klientem a serwerem, badania pokazay,
e dugi czas pomidzy dziaaniem uytkownika a nastpujcymi po nim zmianami w inter-
fejsie moe znacznie obniy produktywno i wywoa frustrujce wraenie walki z apli-
kacj. Uytkownicy chc, by aplikacje internetowe zachowyway si jak typowe programy,
ale bez obcienia zwizanego z instalacj. W sytuacji gdy coraz wicej aplikacji korzysta
z inteligentnego buforowania, przewiduje dziaania uytkownika i dostarcza bogatszego
interfejsu, zaciera si rónica pomidzy aplikacjami internetowymi a biurkowymi. Wymagania
wzgldem tych pierwszych zwikszaj si. Uytkownicy dostrzegli ju, e mona unikn
zobowiza zwizanych z instalacj tradycyjnego programu i wci mie bogate, interaktyw-
ne dowiadczenia.

Dlaczego programici chc stosowa AJAX

Czsto pierwszym pytaniem stawianym po rozpoczciu projektu jest to, jaki typ aplikacji
bdziemy tworzy. Czy to ma by aplikacja tradycyjna, czy moe internetowa? To kluczowa
decyzja, poniewa w przeszoci narzucaa w znacznym stopniu natur aplikacji i przestrze
zada zwizanych z jej rozwojem. Obecnie wielu programistów wybiera domylnie tworzenie
aplikacji WWW, jeli nie ma w tym wzgldzie adnych przeciwwskaza. Jeli aplikacja musi
dziaa bez dostpu do sieci lub wymaga interfejsu trudnego do uzyskania w jzyku HTML,
moe to wyklucza korzystanie z przegldarki i narzuca wybór pisania samodzielnej aplikacji.

Piszc nowoczesne aplikacje internetowe, programici maj trudnoci z powodu wrodzonych
ogranicze sieci WWW nakadanych przez Hypertext Transfer Protocol (HTTP) i sposób,
w jaki korzystaj z niego przegldarki. HTTP jest protokoem bezstanowym. Przegldarka
WWW wywouje stron, by moe podajc jakie parametry acucha zapytania lub da-
nych formularza, a serwer przetwarza to danie i wysya odpowied zawierajc tre opi-
san w jzyku HTML. Serwer moe tylko reagowa na informacj przesan w biecym
zleceniu i nie zna, na podstawie informacji w nim zawartych, adnych szczegóów na temat
drogi, jak internauta dotar do biecego widoku. Podczas wizualizacji odpowiedzi po-
czenie moe zosta zerwane, a serwer nie ma adnych informacji, które mógby przechowa
dla przyszego wywoania. Patrzc z perspektywy serwera, po prostu sucha wywoa nad-
chodzcych z dowolnego miejsca i dowolnej przegldarki, a nastpnie na nie reaguje. Przegl-
darka zgasza danie dostpu do strony i otrzymuje w odpowiedzi stron HTML. Uywa
otrzymanego kodu HTML do wizualizacji interfejsu uytkownika. Uytkownik nawizuje
interakcj ze stron, a w odpowiedzi przegldarka czyci ekran i zgasza do serwera nowe
danie zawierajce pewne informacje na temat danych wprowadzonych przez uytkownika
lub jego dziaa. Znowu zwracana jest kompletna strona HTML. Zasadniczo protokó HTTP
jest bezstanowy. Serwer otrzymuje wywoanie i na nie odpowiada. Wywoanie niesie ze sob
ograniczon informacj o komunikacji toczcej si midzy klientem a serwerem.

AJAX robi to duo lepiej. amie ten wzór, aktualizujc fragmenty stron oddzielnie, poprzez
czciowe odwieanie strony (ang. partial page rendering). Rysunek 1.1 pokazuje typo-
w, nie-AJAX-ow seri interakcji przegldarki i serwera. Kade wywoanie skutkuje zwró-
ceniem caoci strony, a w odpowiedzi przegldarka aktualizuje cay widok przedstawiany
uytkownikowi.

background image

Rozdzia 1.

Q

Tworzenie nowej generacji aplikacji WWW

21

Rysunek 1.1

Na rysunku 1.2 do polepszenia wrae uytkownika zastosowano AJAX. Pierwsze wywoa-
nie jest wysyane w celu pocztkowej wizualizacji strony. Potem przesyane s asynchroniczne
dania do serwera. Asynchroniczne wywoanie przesya lub odbiera dane w tle w zupenie
niewidoczny sposób. Jest ono asynchroniczne, poniewa interfejs uytkownika nie jest w tym
czasie zablokowany, a uytkownik moe kontynuowa interakcj ze stron podczas transfe-
ru danych. Tego rodzaju wywoania aktualizuj stron przyrostowo, zamiast pobiera ca-
kiem now. Kod JavaScript uruchomiony na kliencie reaguje na nowe dane i odpowiednio
aktualizuje róne fragmenty strony. Liczba wywoa serwera moe by taka sama, a w nie-
których przypadkach moe by ich nawet wicej, ale uytkownikowi wydaje si, e aplikacja
odpowiada szybciej. Nie jest zmuszany do przerwy, choby krótkiej, i oczekiwania na serwer,
gapic si na biay ekran przegldarki.

Rysunek 1.2

Prawie dziesi lat temu zespó programistów serwera Microsoft Exchange stworzy kontrol-
k ActiveX o nazwie

XmlHttpRequest

, której egzemplarze mogy by tworzone z poziomu

JavaScriptu i wykorzystywane do komunikacji z serwerem. Moga ona przebiega bez czysz-
czenia ekranu i odrysowywania strony. Uywajc obiektu

XmlHttpRequest

, moge wysya

informacje do serwera i pobiera je stamtd bez potrzeby tworzenia nowej strony HTML.
Kod JavaScript móg potem dynamicznie manipulowa zawartoci HTML na komputerze
klienckim, unikajc irytujcych migni i oczekiwa zazwyczaj wizanych z przegldaniem

background image

22

ASP.NET 2.0 AJAX. Zaawansowane programowanie

stron WWW. Ta funkcjonalno niezbyt dugo ograniczaa si tylko do Internet Explorera.
Wkrótce równie inne przegldarki zaczy obsugiwa obiekty

XmlHttpRequest

. Programici

mogli ju zacz pisa bardziej zaawansowane aplikacje dostpne dla rónych systemów
operacyjnych.

Przegldarki zaczy te uywa zaawansowanego modelu DOM (ang. Document Object
Model
— obiektowy model dokumentu) umoliwiajcego reprezentacj przegldarki, okna,
strony i zawartych w niej elementów HTML. DOM udostpnia zdarzenia i odpowiada na
akcje uytkownika, pozwalajc skryptom manipulowa stron. Dynamiczny HTML
(DHTML) otworzy drzwi do tworzenia zaawansowanych interfejsów w oknie przegldar-
ki. Programici zaczli pisa setki, a nawet tysice wierszy kodu JavaScript, aby stworzy
bogate i atrakcyjne aplikacje niewymagajce instalacji na komputerze i dostpne wszdzie
z kadej przegldarki. Aplikacje WWW wzniosy si na cakiem nowy poziom zaawanso-
wania. Bez bibliotek AJAX trzeba by byo pisa mnóstwo kodu JavaScript i szuka bdów
w czasami subtelnych rónicach midzy przegldarkami, aby osign tak wysoki poziom.

Biblioteki JAVASCRIPT a AJAX

Programici mieli dostp do technologii AJAX od lat i wielu z nich wykorzystywao AJAX
do przesuwania granic tego, co mona byo zrobi z przegldark. Ale najbardziej przyci-
gaj dzi do AJAX wszechstronne biblioteki skryptów i integracja z technologiami serwe-
rowymi. Uatwia to pisanie zaawansowanych aplikacji i pozwala unikn bycia ekspertem
od rónych wersji JavaScriptu. Do biblioteki JavaScript na stronie HTML odwoujemy si,
uywajc znacznika <script>:

<html>
<head>
<script src="http://wisniewscy.pl/jakisSkrypt.js"
type="text/javascript"></script>
</head>
...

Skrypt jest pobierany i buforowany przez przegldark. Inne strony aplikacji mog odwoy-
wa si do skryptu pod tym samym adresem URL, a przegldarka nawet nie zada sobie
trudu pobrania go ponownie z serwera. Funkcjonalno tego skryptu jest dostpna na
stronie pobranej do przegldarki. Biblioteka skryptów wysyana do przegldarki i wyko-
rzystywana do tworzenia bardziej interaktywnej aplikacji o bogatszym interfejsie jest ser-
cem wszystkich bibliotek AJAX.

Czym jest ASP.NET AJAX

ASP.NET AJAX to nazwa stworzonego przez Microsoft rozwizania AJAX. Odnosi si do
zestawu technologii klienckich i serwerowych, które koncentruj si na ulepszeniu progra-
mowania WWW pod Visual Studio. Inne firmy maj wasne rozwizania AJAX, czsto zu-
penie odmiennie podchodzce do zagadnienia, ale Microsoft postanowi rozszerzy popularn
technologi ASP.NET, tworzc obszerny zestaw bibliotek skryptów oraz rozszerze pro-
gramistycznych po stronie serwera. Jeden z tych elementów, Microsoft AJAX Library, jest
bibliotek JavaScript dziaajc na rozmaitych przegldarkach, suc uproszczeniu pro-
gramowania w JavaScripcie. Zapewnia moliwo prostego pisania kodu w sposób obiekto-
wy, podobnie jak w plikach kodu serwerowego ASP.NET. Mona wykorzysta moliwoci

background image

Rozdzia 1.

Q

Tworzenie nowej generacji aplikacji WWW

23

Microsoft AJAX Library do operowania na DOM, dynamicznej aktualizacji fragmentów
stron, asynchronicznej komunikacji z serwerem i tworzenia zaawansowanych animacji. Funk-
cjonalno dostpn na kliencie Czytelnik pozna w rozdziaach 6. i 7., na razie moe myle
o Microsoft AJAX Library jako o systemie typów i zestawie bibliotek klas upraszczajcych
pisanie kodu JavaScript poprawiajcego wraenia uytkownika, manipulujcego DOM i ko-
munikujcego si z serwerem WWW. Ogromn korzyci z uywania tej biblioteki jest to,
e opakowuje niskopoziomowe programowanie w DHTML w model obiektowy, z którym
duo atwiej pracowa.

Drug czci ASP.NET AJAX s serwerowe rozszerzenia ASP.NET 2.0 AJAX Exten-
sions. Opieraj si na klasach i kontrolkach ASP.NET i korzystaj z wysanej do przegldarki
biblioteki Microsoft AJAX Library. Dziki nim mona w prosty sposób wzbogaci aplika-
cj technologiami AJAX. Poprzez zestaw standardowych usug sieci Web ASP.NET AJAX
potrafi take wykorzysta serwerowe usugi aplikacyjne, takie jak uwierzytelnianie i prze-
chowywanie profilu uytkownika. Rozszerzenia ASP.NET 2.0 AJAX Extensions dodaj
nowe zachowania do istniejcych kontrolek ASP.NET, jak te wprowadzaj nowy zestaw
kontrolek serwerowych, uatwiajcych asynchroniczn aktualizacj stron i korzystanie z za-
sobów serwera.

Serwerowe i klienckie czci ASP.NET s pokazane na rysunku 1.3. ASP.NET stanowi roz-
szerzenie serwera WWW Microsoft Internet Information Services (IIS). ASP.NET AJAX
rozbudowuje to wszystko, w tym równie udostpniane przez IIS usugi sieci Web. Microsoft
AJAX Library dziaa w przegldarce, manipulujc DOM, komunikujc si asynchronicznie
z serwerem WWW i wykorzystujc usugi ASP.NET.

Rysunek 1.3

Instalacja ASP.NET AJAX

ASP.NET AJAX Extensions s dodatkiem do ASP.NET 2.0. cze do instalatora znajduje
si na stronie http://ajax.asp.net/downloads/default.aspx?tabid=47. Po uruchomieniu
zainstaluje on zestaw (ang. assembly) System.Web.Extensions.dll w buforze Global
Assembly Cache
(gac) Twojego komputera. Obecno w gac daje zestawowi uprawnienia
niezbdne do zapewnienia penej funkcjonalnoci oferowanej przez ASP.NET AJAX. Jeli
na komputerze jest obecne Visual Studio 2005 lub Visual Web Developer, instalator
doda take szablony projektów ASP.NET AJAX. Dziki temu bdzie mona stworzy now
witryn korzystajc z ASP.NET AJAX. Plik web.config i referencje kompilacji zawieraj
wszystko co niezbdne, by zacz budowa aplikacje AJAX. Pakiet narzdziowy bdzie
zawiera kontrolk

UpdatePanel omówion w rozdziale 2. oraz kontrolk ScriptManager

opisan w rozdziale 5. Informacje o tym, co zawiera nowy plik web.config, zostan przed-
stawione w rozdziale 10.

background image

24

ASP.NET 2.0 AJAX. Zaawansowane programowanie

Komponent ASP.NET

Oryginalna (ASP) technologia Active Server Pages zostaa wydana jako cz skadowa In-
ternet Information Server 3.0. Zostaa potem ulepszona przez wsparcie transakcji i dostp do
obiektów COM wraz z wydaniem NT 4.0 Option Pack prawie 10 lat temu. W tym czasie
wikszo witryn internetowych skadaa si ze statycznych stron HTML. Jeli trafiay si
jakie dynamiczne aplikacje, byy to aplikacje typu CGI (ang. Common Gateway Interface) lub
ISAPI (ang. Internet Server API) zazwyczaj napisane w C lub C++. Wraz z wydaniem Ac-
tive Server Pages (ASP) programici mogli zacz uywa jzyków JavaScript i VBScript
na serwerze, wykorzystujc zestaw wewntrznych obiektów dostarczanych przez ASP.
„Klasyczne ASP”, jak je dzisiaj nazywamy, dostarczao obiekt sesji, zatem programici nie
musieli si przejmowa bezstanow natur HTTP. Miao obiekty

Request

i

Response

za-

pewniajce atwy dostp do danych pochodzcych z formularzy na kliencie oraz metod
zwracania zaktualizowanej informacji. Obiekty

Server

i

Application

stanowiy sposób do-

stpu do informacji z serwera WWW i wykorzystania wspólnego zestawu obiektów COM
w caej aplikacji.

Chocia klasyczne ASP byo wielk wygran programistów, odkryli oni szybko, e tworze-
nie zoonych aplikacji stao si trudne. Brak wsparcia dla modularyzacji powodowa, e
aplikacje miay tak skomplikowane wspózalenoci w skryptach, e programici czsto
okrelali je jako „kod spaghetti”. W duym stopniu brakowao wsparcia dla debugowania
oraz zaawansowanych narzdzi do projektowania aplikacji. Wydajno take bya saba, bo
ASP uywao powolnego mechanizmu wykonywania skryptów, a bdy skadni mogy by
wychwycone tylko po uruchomieniu aplikacji. ASP.NET stanowi wielki krok naprzód. Za-
pewnia istniejcym aplikacjom zgodno, bo zawiera ten sam zestaw wewntrznych
obiektów co klasyczne ASP, ale zamiast interpretowa JavaScript i VBScript „w locie”, ko-
rzysta ze skompilowanego zbioru stron i moduów napisanych w C# i VB.NET. Klasyczne
ASP po prostu wykonywao skrypt po kolei od pocztku do koca strony; ASP.NET repre-
zentuje model sterowany zdarzeniami, z cyklem ycia strony, upodabniajc programowanie
WWW do pisania zwykej aplikacji. Obecnie zamiast docza oddzielne pliki JavaScript
reprezentujce obiekty biznesowe, moesz stworzy obiekty w dowolnym jzyku wspiera-
nym przez .NET i mie do nich dostp bezporednio z ASP.NET.

ASP.NET z zestawu stron zawierajcych kod i znaczniki generuje klas

Page

, która jest na-

stpnie kompilowana i buforowana. Przy kadym wywoaniu strony wytwarzany jest egzem-
plarz klasy i uruchamiany kompletny cykl ycia strony. Wykonuje si zestaw zdarze, z których
cz jest przesaniana przez wygenerowan klas

Page

. Kontrolki na stronie take uczest-

nicz w tym cyklu ycia, wic si z danymi z kocówki bazodanowej, odpowiadajc na
dziaania uytkownika i reagujc na zmiany swojego stanu, jakie zaszy od poprzedniej od-
sony strony. Aby odpowiedzie na akcj uytkownika, programista musi tylko dostarczy
dla niej procedur obsugi zdarzenia. Przykadowo kontrolka-przycisk udostpnia zdarzenie

Click

. Jeli kto chciaby je wykorzysta, nie musi pisa kodu sprawdzajcego wszystkie

zmienne formularza na stronie, by dowiedzie si, e przycisk zosta kliknity. Wystarczy, e
doda kod przesaniajcy obsug zdarzenia. Kod ten moe aktualizowa HTML strony lub
waciwoci i dane zwizane z innymi kontrolkami.

Niniejsza ksika zakada pewn znajomo rodowiska ASP.NET, niezbdn
do zrozumienia, w jaki sposób nowe funkcje ASP.NET AJAX rozbudowuj jego
funkcjonalno i dostarczaj rodków do wzbogacenia aplikacji WWW.

background image

Rozdzia 1.

Q

Tworzenie nowej generacji aplikacji WWW

25

Jeli Czytelnik nie zna jeszcze ASP.NET, warto zapozna si z zestawem podrczników
QuickStart ze strony http://www.asp.net/quickstart. Witryna ASP.NET
(http://forums.asp.net/) ma take liczne fora dyskusyjne, na których mona
porozmawia z kolegami programujcymi w ASP.NET oraz czonkami zespou
tworzcego t platform.

Komponent JavaScript

Technologie AJAX korzystaj z powszechnego wsparcia dla JavaScriptu w nowoczesnych
przegldarkach. Poniewa istnieje standard obsugiwany przez róne przegldarki, moesz
pisa skrypty, wiedzc, e bd dziaay. Ale nie zawsze tak byo.

W poowie lat 90. ubiegego wielu Netscape i Microsoft (wraz z innymi) wypracoway stan-
dard jzyka skryptowego, który zastosoway w swoich przegldarkach. Ten standard nazywa
si EcmaScript. Implementac a firmy Microsoft nosi nazw JScript, ale powszechnie ten jzyk
jest nazywany JavaScriptem, tak jak go nazwa Netscape. (Nie ma nic wspólnego z Jav, ale
widocznie kto pomyla, e takie skojarzenie bdzie korzystne dla celów marketingowych).
Fragmenty kodu JavaScript s wysyane do przegldarki wraz z HTML i uruchamiaj si
wewntrz przegldarki uytkownika, majc wpyw na przetwarzanie strony na komputerze
klienckim.

JavaScript nie jest kompilowany; jest interpretowany. Nie ma statycznego sprawdzania zgod-
noci typów jak w C++ czy C#. Mona zadeklarowa zmienn, nie okrelajc jej typu, a typ,
do którego ona si odnosi, zmieni w dowolnej chwili. Dziki temu atwo zacz progra-
mowa w JavaScripcie, ale pozwalajc na podmienianie typu zmiennej w czasie wykonania
skryptu, nieuchronnie naraamy si na pewne niebezpieczestwo. Poniszy fragment kodu
pokazuje, jak atwo zmienna moe odnosi si do dowolnego typu:

var something = 1;
something = true;
something = "acuch";

JavaScript jest jzykiem dynamicznym. Typy danych mog by rozszerzane podczas wyko-
nywania programu przez inny kod. Oznacza to, e moesz pisa kod, który tworzy typy
„w locie”. Poniewa nie mona wyegzekwowa bezpieczestwa typów danych, Twój kod
moe otrzyma te typy w postaci parametrów lub zwracanych wartoci bez adnego pro-
blemu. Zapewnia to ogromne moliwoci i elastyczno programowania.

Podstawowymi typami danych w JavaScripcie s acuchy tekstowe, liczby, wartoci lo-
giczne i funkcje. Istnieje take wsparcie dla obiektów i tablic, które s kolekcjami typów pod-
stawowych. Jzyk zawiera kilka dodatkowych obiektów uwaanych za niezbdne do wielu
zada. Mona tu wymieni wsparcie dla wyrae regularnych oraz operacji na datach i czasie.

Do czenia acuchów tekstowych w jzyku JavaScript uywa si operatora „plus”:

var theEnd = "KONIEC."
var result = "Pocztek, " + "rodek i " + theEnd;

W powyszym przykadzie zmienna

result

jest obecnie acuchem tekstowym: „

Pocztek,

rodek i KONIEC.

”.

background image

26

ASP.NET 2.0 AJAX. Zaawansowane programowanie

Interpretery JavaScript uywaj do zapisu liczb standardu zmiennoprzecinkowego IEEE. Nie
wchodzc w szczegóy, mona przyj, e w wikszoci zada nie bdzie z tym problemów.

Typ

Boolean

w jzyku JavaScript jest prawie tym, czego mona by si spodziewa, ale nie-

zupenie. Typ ten okrela, czy dane wyraenie jest prawdziwe, czy nie, jednak wzoruje si
na jzyku C, uywajc wartoci cakowitych

0

i

1

.

JavaScript dopuszcza zmienne niemajce wartoci, zmienna moe by po prostu nieokrelona,
co moe prowadzi do niespodziewanych rezultatów. W poniszym fragmencie JavaScriptu
zadeklarowane s trzy zmienne. Wszystkie z porówna zwracaj warto

true

.

<script type="text/javascript">
var one = 1;
var zero = 0;
var undefinedVar;

if(one) {
alert("1 ma warto prawdziw");
}

if(!zero) {
alert("0 ma warto faszyw");
}

if (!undefinedVar) {
// ten test mówi nam, e "undefinedVar" albo zawiera 0,
// albo jest naprawd niezdefiniowana, w obu przypadkach ma warto faszyw
alert("undefinedVar ma warto faszyw");
}

if (one != zero) {
alert("jeden i zero nie s tym samym");
}
</script>

Moesz sprawdzi, czy zmienna zostaa zdefiniowana, w nastpujcy sposób:

if ( typeof(undefinedVar ) == "undefined" ) {
alert("undefinedVar jest niezdefiniowane");
}

Zmienne mog mie te warto

null

i róni si wówczas od niezdefiniowanych, bo

null

jest jednak pewn wartoci.

Funkcje w JavaScripcie s równie prawdziwymi typami. Mog przyjmowa argumenty i zwra-
ca warto. Funkcje mog by przekazywane do innych funkcji oraz tworzone dynamicznie
przez kod skryptowy.

Oto dwie równowane definicje funkcji o nazwie

Add

pobierajcej dwie zmiennej i zwracajcej

rezultat zastosowania operatora „plus”. Prosz zauway, e nie powiedziaem, e przyjmuje
dwie liczby. Warto pamita, e zmienne JavaScript nie maj okrelonego typu, wic
mógbym równie dobrze przesa dwa acuchy znakowe, a funkcja

Add

by je poczya.

<script type="text/javascript">
function Add(x, y) {

background image

Rozdzia 1.

Q

Tworzenie nowej generacji aplikacji WWW

27

return x + y;
}
var AddAgain = function(x, y) { return x + y; };
</script>

Po stworzeniu funkcji jednym z powyszych sposobów mona j wywoa w danym (lub
dowolnym zagniedonym w stosunku do niego) zakresie w celu wykonania dodawania.
aden z tych sposobów tworzenia funkcji nie ma przewagi nad drugim. Mona po prostu
wybra bardziej odpowiadajcy.

<script type="text/javascript">
var result = Add(36, 24);
alert(result); // wywietla 60

var stringResult = Add("Witaj", "cie.");
alert(stringResult); // wywietla "Witajcie."
</script>

Obiekty i tablice s tylko kolekcjami innych typów. Typy tablicowe nie wymagaj, by wartoci
w nich przechowywane miay nazw; zamiast tego s dostpne przez indeks. Wartoci
przechowywane w obiekcie s okrelane przez nazwy pola lub waciwoci. Obiekty mog
te zawiera funkcje (które mog by akcesorami, funkcjami dajcymi publiczny dostp do
lokalnych zmiennych), co pozwala tworzy w kodzie JavaScript struktury danych reprezen-
tujce rzeczywiste obiekty. W tym swego rodzaju programowaniu obiektowym brakuje
koncepcji dziedziczenia typów. Microsoft AJAX Library dostarcza zestaw klas i rekomen-
dowanych wzorców programowania, pozwalajcych uzyska w jzyku JavaScript dziedzicze-
nie, czynic bardziej naturalnym przechodzenie pomidzy JavaScriptem a innymi jzykami wy-
sokiego poziomu. Poniszy fragment kodu zawiera definicj obiektu

Album

przechowujcego

i zwracajcego tytu i autora albumu muzycznego. Do przechowywania informacji o kilku
albumach uyta jest tablica:

<script type ="text/javascript">
// zdefiniuj obiekt o nazwie Album - prosz zauway, e nie ma on zdefiniowanego typu
Album = function (title, artist) {
var _title = title;
var _artist = artist;

this.get_title = function() { return _title; }
this.get_artist = function() {return _artist; }
}

// utwórz egzemplarz obiektu, wywoujc konstruktora
var albumA = new Album("Na wylot", "Fisz");
var albumB = new Album("Polepione dwiki", "Fisz");

// utwórz tablic przechowujc te egzemplarze (równie bez okrelonego typu)
var albumArray = new Array();

albumArray[0] = albumA;
albumArray[1] = albumB;

// przejd kolejno po tablicy, by pokaza tytuy albumów
for(var i = 0; i < albumArray.length; i++) {
alert((albumArray[i]).get_title()); // wywoaj akcesor get_title
}
</script>

background image

28

ASP.NET 2.0 AJAX. Zaawansowane programowanie

Komponent usug sieci WWW

Zasadnicza koncepcja usug sieci WWW ma ogromne moliwoci, wci si rozwija i ewolu-
uje. Oryginalny standard SOAP (ang. Simple Object Access Protocol — protokó proste-
go dostpu do obiektów) polega na wykorzystaniu protokou HTTP do przesyania danych
w formacie XML z klienta do serwera i odbierania tak samo uformowanych danych. Moe
si to odbywa z poziomu przegldarki WWW przy uyciu obiektu

XmlHttpRequest

lub bezpo-

rednio z aplikacji biurkowej lub innego serwera. Zanim usugi sieci WWW zostay powszech-
nie przyjte, nierzadko zdarzao si tworzenie programów, które pobieray stron jako dokument
HTML i wycigay z niej potrzebne dane. Ta technika nosi nazw przechwytywania danych
ekranowych
(ang. screen-scraping). Powoduje ona rónorakie frustracje, poniewa strony
s wci uaktualniane, a klienty przechwytujce dane ekranowe, by dotrzyma kroku zmianom,
musz wci modyfikowa kod analizujcy skadni, tak by odpowiada nowemu kodowi
HTML strony ródowej.

Prowadzio to do frustracji, gdy witryny prezentujce dane za pomoc wizualnych stron HTML
atwo byo modyfikowa, a to zaamywao program przechwytujcy dane ekranowe, który
spodziewa si danych w oryginalnym formacie. Usugi sieci WWW zostay pomylane jako
niewizualna metoda przesyania danych przez sie WWW i w naturalny sposób izoluj zdalne
wywoywanie metod od warstwy prezentacji. Obecnie, zamiast przechwytywa dane ekranowe,
moesz wywoa usug sieci WWW i otrzyma dane w formacie XML atwym do uycia
przez program.

Dziki przesyaniu czystych danych tekstowych w formacie XML i usuniciu elementów wizu-
alnych informacj przesyan przez usugi sieci WWW duo atwiej zanalizowa skadniowo
ni HTML. A poniewa XML moe zawiera osadzony schemat, kod moe go sprawdzi i wy-
korzysta do ustalenia uytych struktur i typów danych. Moesz rozszerza schemat wysya-
ny ze zwracanymi danymi, nie martwic si, e aplikacje konsumenckie przestan dziaa.
Dziki temu czytniki XML mog w pewnym stopniu tolerowa modyfikacje, które z pew-
noci sprawiyby programicie przechwytujcemu dane ekranowe wiele zmartwie.

Schemat danych moe by rozszerzany bez potrzeby aktualizacji wszystkich aplikacji kon-
sumenckich. Mog one w prosty sposób pozyska te czci dokumentu XML, które chc
przetwarza, i zignorowa reszt. Przekroczono te granic prostych formatów XML. Inaczej
ni w poprzednich implementacjach usug sieci WWW, obecnie mona zdefiniowa kon-
trakty usug sieci WWW, aby zastosowa wybrany format danych i uy dowolnego z licznych
protokoów sieciowych. Czynnikiem napdzajcym koncepcj usug sieci WWW jest mo-
liwo atwego dostpu do danych z rónych aplikacji w luno powizany sposób, a nowa
warstwa komunikacyjna Microsoft Windows Communication Foundation wprowadzia t
koncepcj na nowy poziom, umoliwiajc okrelenie w kontrakcie protokoów sieciowych,
regu wdraania i infrastruktury logowania, a take zapewniajc wsparcie dla transakcji.

ASP.NET AJAX dostarcza zestaw obiektów zastpczych (ang. proxy object) w celu zapewnie-
nia dostpu do niektórych nowych usug sieci WWW wbudowanych w ASP.NET. Dane profilu,
usugi czonkostwa i zarzdzanie rolami mog by atwo dostpne z poziomu klienta. Pro-
gramici nie musz tworzy wasnej infrastruktury wsparcia dla tych podstawowych usug
aplikacyjnych. Wystarczy doda kilka wierszy kodu, by wykorzysta zasoby serwera z poziomu
kodu JavaScript uruchomionego w przegldarce. Dziki temu bardzo wzrós zasig ASP.NET,
obejmujc zarówno klienta, jak i serwer. Poniewa biblioteki JavaScript zaprojektowano

background image

Rozdzia 1.

Q

Tworzenie nowej generacji aplikacji WWW

29

tak, by byy atwe w uyciu dla programistów znajcych programowanie w .NET po stronie
serwera, caa ta dodatkowa funkcjonalno jest wygodnie opakowana i atwa do wykorzy-
stania.

Komponent Dynamicznego HTML

Dynamiczny HTML nie jest oddzieln technologi, ale uyciem zestawu technologii w okrelo-
ny sposób. Po wywoaniu serwera WWW przegldarka otrzymuje dokument HTML. Na-
stpnie rysuje stron, a uytkownik moe j zobaczy. Przegldarka udostpnia równie
Document Object Model (DOM) reprezentujcy struktur wywietlanego HTML. Do DOM
moe mie dostp kod JavaScript, który jest osadzony w stronie albo strona do niego odsy-
a. Na wygld HTML wpywa zastosowanie CSS (ang. Cascading Style Sheets — kaskadowych
arkuszy stylów), które kontroluj kolory, czcionki, pozycj, widoczno itd. Moesz dowi-
za kod JavaScript do zdarze, które przegldarka wywouje, gdy uytkownicy wykonuj pew-
ne czynnoci jak na przykad najedanie mysz na okrelony element lub wprowadzanie
informacji w polu tekstowym. Kod JavaScript potrafi zmienia teksty i manipulowa usta-
wieniami CSS elementów strony. Oczywicie moe take komunikowa si z serwerem,
pogbiajc jeszcze bardziej dynamiczn natur strony WWW. Uytkownik widzi dyna-
micznie zmieniajcy si interfejs, odpowiadajcy na jego dziaania w czasie rzeczywistym,
co ogromnie wzbogaca jego dowiadczenia, a zarazem zwiksza produktywno i zadowo-
lenie z aplikacji.

Inne biblioteki AJAX

Poza ASP.NET AJAX dostpnych do uycia w ASP.NET jest równie wiele bibliotek AJAX
innych dostawców, chocia nie wszystkie byy zaprojektowane wanie w tym celu. Niektóre
z nich skupiy si gównie na dostarczeniu bibliotek JavaScript wykorzystywanych z poziomu
przegldarki dla uatwienia operacji na DOM (ang. Document Object Model). Inne maj pewn
funkcjonalno serwerow do uycia wewntrz stron ASP.NET (w których kontrolki serwerowe
s rysowane po stronie klienta). Ten punkt pobienie nawietli niektóre funkcje oferowane
przez te biblioteki. ASP.NET AJAX Framework moe koegzystowa ze skryptami i kontrolka-
mi pochodzcymi z innych bibliotek, jednak dynamiczna natura jzyka JavaScript, która po-
zwala na rozszerzanie typów, otwiera te drog do konfliktów. czenie bibliotek w wielu
zastosowaniach bdzie dobrze dziaa, ale niekiedy mog si ze sob kóci.

Q

Ajax.NET Professional: Michael Schwartz stworzy Ajax.NET Professional
jako narzdzie uywane przede wszystkim do uproszczenia mechanizmu transportu
danych, który pozwala programowi JavaScript na kliencie komunikowa si
z programem na serwerze. Kod serwerowy jest prosty w uyciu: trzeba jedynie
zarejestrowa kontrolk na stronie i oznaczy kilka metod kodu serwera
atrybutami wyznaczajcymi, które z nich mog by wywoywane z poziomu
klienta. Potem mona korzysta z biblioteki skryptów do wykonywania wywoa
i przesyania danych. Biblioteka ta jest przeznaczona dla programistów dobrze
znajcych si na DHTML, a gotowych kontrolek wizualnych nie ma zbyt wiele.
Jest to bardzo lekkie rozwizanie z minimalnym narzutem na transfer danych

background image

30

ASP.NET 2.0 AJAX. Zaawansowane programowanie

i cykle procesora zarówno na kliencie, jak i serwerze. Kod ródowy jest
dostpny, a pakiet jest darmowy (http://www.ajaxpro.info).

Q

Anthem.NET: Anthem.NET jest projektem umieszczonym na SourceForge,
gdzie uytkownicy mog pobra jego róda. Jest przeznaczony dla ASP.NET 1.1
i ASP.NET 2.0. Ma zestaw kontrolek serwerowych wykorzystujcych odpowiedni
bibliotek JavaScript do komunikacji z serwerem. Istnieje moliwo uzyskania
informacji o stanie kontrolki podczas asynchronicznego wywoania zwrotnego.
W czasie pisania tej ksiki strona WWW Anathem.NET (http://anathem-dot-net.

´sourceforge.net) wskazywaa, e uytkownik, który chce w peni wykorzysta
t bibliotek, musi by dowiadczonym programist .NET. Jednak na ogó jest
ona atwiejsza w uyciu ni Ajax.NET Professional, zwaszcza dla programistów
niezbyt biegych w DHTML. Ten projekt jest podobny w wielu aspektach do
ASP.NET AJAX, jednak nie tak wszechstronny.

Q

Dojo: zestaw narzdziowy Dojo mona znale pod adresem http://dojotoolkit.com.
Jest to kliencka biblioteka do programowania AJAX niezwizana z adn
technologi serwerow. Dojo ma system typów dla JavaScriptu i moliwo
dowizywania skryptu do zdarze pochodzcych z obiektów JavaScript i elementów
DHTML. Jedn z mocnych stron jest zaawansowane wsparcie dla dynamicznego
adowania skryptów. Mona okreli zalenoci i porzdek, w jakim skrypty bd
pobierane i przetwarzane.

Q

Prototype: biblioteka skryptów Prototype jest dostpna na stronie
http://prototype.conio.net. Nie jest nakierowana na integracj z adn
technologi serwerow

1

. Ma system typów umoliwiajcy pisanie skryptów

w bardziej obiektowy sposób oraz kilka skrótów skadniowych uatwiajcych
prac z tablicami w JavaScripcie oraz dostp do elementów HTML i manipulowanie
nimi. Prototype dostarcza funkcjonalno sieciow oraz metod automatycznej
aktualizacji elementu HTML rezultatami wywoania HTTP po podaniu URL.
Biblioteka Prototype ma te funkcje wizania obiektów i metod skryptu z obiektami
i zdarzeniami DOM. Biblioteka koncentruje si na upraszczaniu uciliwych
i mczcych zada. Nie pomaga zbytnio w tworzeniu bogatszego interfejsu
uytkownika, ale dostarcza gotowe klocki usprawniajce pisanie skryptów WWW.

Q

Script.aculo.us: biblioteka Script.aculo.us znajduje si na stronie o tej samej
nazwie: http://script.acoulo.us. Slogan jej twórców brzmi „it’s about the user
interface, baby!” („to dotyczy interfejsu uytkownika, dziecinko!”), co dokadnie
opisuje ich nastawienie. Script.aculo.us rozbudowuje bibliotek Prototype,
rozpoczynajc tam, gdzie koczy si jej zakres. Wzbogaca aplikacje o wsparcie
dla techniki „przecignij i upu”. Ma mnóstwo kodu odpowiadajcego za efekty
takie jak wygaszanie lub rozjanianie, skalowanie, przesuwanie i inne animacje
elementów DOM. Script.aculo.us ma take kontrolk suwaka i bibliotek
do operacji na listach elementów.

Q

Rico: biblioteka Rico równie rozbudowuje system Prototype. Pozwala dodawa
zachowanie „przecignij i upu” do elementów DOM przegldarki. Ma te kilka
kontrolek wicych obiekty JavaScript z elementami DOM w celu operacji na

1

Powstaa jednak jako cz pakietu Rails i jest mocno inspirowana uytym w tym pakiecie jzykiem Ruby

przyp. tum.

background image

Rozdzia 1.

Q

Tworzenie nowej generacji aplikacji WWW

31

danych. Posiada konstrukcje pokazujce i ukrywajce czci stron przy uyciu
stylu akordeonowego (ang. accordion). Ma take gotowe do uycia efekty
animacji, skalowania i wygaszania. Te skrypty wspomagajce tworzenie interfejsu
uytkownika s dostpne na stronie http://openrico.org.

Zachowywanie równowagi midzy

programowaniem klienckim

a serwerowym dziki ASP.NET AJAX

Jeli przegldarka nie wykonuje zaawansowanego kodu JavaScript, to zasadnicza cz ko-
du aplikacji WWW dziaa na serwerze. Oznacza to, e potencjalnie niewielkie aktualizacje
widoku uytkownika wymagaj wielu odwiee strony. Dziki AJAX dua cz kodu
zwizanego z interakcj uytkownika moe by przesunita do klienta. To z kolei niesie ze
sob inne wyzwania. AJAX bywa niekiedy uywany do strumieniowego przesyania obszer-
nych zestawów danych do przegldarki, zarzdzanego wycznie przez JavaScript. Chocia
JavaScript ma potne moliwoci, udogodnienia w usuwaniu bdów i opcje ich obsugi s
bardzo ograniczone. Umieszczanie zoonego kodu aplikacji na kliencie moe pochon
wiele czasu, wysiku i cierpliwoci. ASP.NET AJAX pozwala na naturaln migracj do klienta
pewnych fragmentów przetwarzania aplikacji przy wykorzystaniu czciowego generowa-
nia kodu HTML, pozwalajcego serwerowi kontrolowa niektóre aspekty widoku strony.

Na niektórych witrynach internetowych do uruchomienia caej aplikacji wystarczy pojedyncze
wywoanie strony; JavaScript i AJAX maj tam mnóstwo pracy. Niesie to ze sob par trud-
nych wyzwa. Na ogó uytkownicy spodziewaj si, e przycisk Wstecz przywróci aplika-
cj do stanu, w którym bya przed chwil, ale w przypadku aplikacji AJAX niekoniecznie tak
jest. Klient moe wysya pewne informacje do serwera dla potrzeb trwaego zarzdzania sta-
nem (na przykad w pamici serwera albo w bazie danych), ale wymaga to dodatkowego kodu
i szczególnej uwagi przy obsudze bdów i przywracaniu aplikacji.

Wydaje si, e najbardziej zaawansowane i najatwiejsze w utrzymaniu aplikacje to te, któ-
re równowa zasoby klienta i serwera tak, by zapewni szybkie czasy odpowiedzi i atwy
dostp do zasobów serwera oraz zminimalizowa operacje blokowania podczas pobierania
nowych widoków stron.

ASP.NET AJAX czy ze sob cechy programowania klienta i serwera. Microsoft AJAX
Library jest ukierunkowana na programowanie klienckie. Dostarcza systemu typów do obiek-
towego programowania w jzyku JavaScript. Uatwia rejestrowanie kodu odpowiadajcego
na zdarzenia. Dostarcza uytecznych funkcji uatwiajcych czste czynnoci, jak znajdowa-
nie elementów na stronie, doczanie procedur obsugi zdarze czy te dostp do serwera.
Funkcjonalno serwerowa obejmuje zarzdzanie kodem JavaScript wysyanym do klienta,
oznaczanie fragmentów strony, które maj by aktualizowane asynchronicznie, tworzenie
liczników dla cigych aktualizacji i dostp do usug ASP.NET, takich jak dane profilu
uytkownika i uwierzytelnianie.

background image

32

ASP.NET 2.0 AJAX. Zaawansowane programowanie

Podsumowanie

Sie WWW w ostatniej dekadzie przesza drog od zapewniania statycznej obecnoci do
bycia domylnym wyborem dla programistów piszcych aplikacje. Aplikacje internetowe
mog uzyska szeroki zasig bez potrzeby zajmowania si zagadnieniami wdraania i serwisu
typowymi dla tradycyjnych programów. Ale poprzeczka dla aplikacji WWW cigle jest pod-
noszona, a uytkownicy wci spodziewaj si wicej. Technologie AJAX prowadz aplikacje
internetowe do rywalizacji z zaawansowanymi aplikacjami biurkowymi. Mona skorzysta
z asynchronicznej komunikacji z serwerem WWW do aktualizacji fragmentów strony bez
zmuszania uytkownika do zaprzestania pracy i oczekiwania na przeadowanie i ponowne
odrysowanie strony. Dynamiczny HTML pozwala tworzy bogaty interfejs graficzny z przej-
ciami i animacjami przy wykorzystaniu CSS do kolorów, czcionek, pozycjonowania itd.

ASP.NET AJAX zawiera bibliotek Microsoft AJAX Library, która uatwia pisanie kodu
JavaScript dla przegldarki i upraszcza wiele typowych zada programowania klienckiego.
Dziki niej atwo docza kod do zdarze DOM, pisa JavaScript w sposób obiektowy i uzy-
skiwa dostp do serwera w celu uwierzytelniania, trwaego przechowywania i aktualizacji
danych.

ASP.NET AJAX zawiera take rozszerzenia do wersji 2.0 .NET Framework, które mog
znacznie ulepszy Twoj aplikacj internetow. Posiada wsparcie dla zwracania danych
w formacie JSON, atwym do zuytkowania przez JavaScript przegldarki.

Ksika ta pokazuje, e funkcje klienckie i serwerowe ASP.NET AJAX pozwalaj z atwoci
przesun granice tego, co mona zrobi z aplikacj WWW! Nauczy, jak asynchronicznie
uaktualnia fragmenty stron i jak zarzdza skryptami uywanymi w przegldarce. Poinfor-
muje, jak korzysta z udogodnie sieciowych, zgbiajc przy okazji temat dostpu do usug
ASP.NET, takich jak uwierzytelnianie i przechowywanie profili. Przedstawi bliej jzyk
JavaScript i sposób, w jaki rozbudowuje go do uatwienia zada programistycznych Micro-
soft AJAX Library. Pokae równie, co ASP.NET AJAX oferuje w dziedzinie wzbogacania
interfejsu aplikacji WWW, jak testowa takie aplikacje i usuwa z nich bdy. Zapozna te
Czytelnika z niektórymi szczegóami wdraania i debugowania aplikacji i odkryje inne zaso-
by dostpne do pracy z ASP.NET AJAX.


Wyszukiwarka

Podobne podstrony:
ASP NET AJAX Server Controls Zaawansowane programowanie w nurcie NET Framework 3 5 Microsoft NET Dev

więcej podobnych podstron