[ Pobierz całość w formacie PDF ]

ScriptManager.RegisterStartupScript(this,
typeof(Widgets_FastFlickrWidget),
"LoadFlickr",
string.Format("
var flickrLoader{0} =
new FastFlickrWidget( '{1}', '{2}', '{3}', '{4}' );
flickrLoader{0}.load( );",
this.UniqueID,
this.GetPhotoUrl( ),
this.FlickrPhotoPanel.ClientID,
this.ShowPrevious.ClientID,
this.ShowNext.ClientID),
true);
this.ShowPrevious.OnClientClick =
string.Format("flickrLoader{0}.previous( ); return false;", this.UniqueID);
this.ShowNext.OnClientClick =
string.Format("flickrLoader{0}.next( ); return false;", this.UniqueID);
}
}
Procedura obsługi zdarzenia Page_Load generuje blok skryptu potrzebny do inicjalizacji klasy
FlckrRssWidget po stronie klienta i wywołania funkcji load. Podobnie jak w przypadku wi-
dżetu RSS funkcja load klasy klienckiej jest wywoływana podczas procedury obsługi zdarzenia
OnPreRender. Zatem w przypadku asynchronicznej aktualizacji danych skrypt JavaScript może
odświeżyć interfejs użytkownika z wykorzystaniem nowych parametrów, zgodnie z kodem
zamieszczonym w listingu 5.15.
Listing 5.15. Zdarzenie OnPreRender kontrolki sieciowej FastFlickrWidget.
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if( !this._Host.IsFirstLoad )
ScriptManager.RegisterStartupScript(this,
typeof(Widgets_FastFlickrWidget), "LoadFlickr",
string.Format("
flickrLoader{0}.url = '{1}';
flickrLoader{0}.load( );",
160 | Rozdział 5. Widżety klienckie
this.UniqueID,
this.GetPhotoUrl( ),
this.FlickrPhotoPanel.ClientID),
true);
}
Przygotowany w ten sposób widżet kliencki ma kilka zalet w porównaniu z widżetem ser-
werowym. Oto one:
" Nie są pobierane żadne dane mechanizmu ViewState, ponieważ kontrolka sieciowa nie
obejmuje prawie żadnych elementów interfejsu użytkownika. Ilość danych przeka-
zywanych podczas pierwszego ładowania i w czasie asynchronicznych uaktualnień
jest niewielka.
" Dokument XML serwisu Flickr jest buforowany w pamięci przeglądarki, co pozwala
na zmniejszenie liczby odwołań sieciowych.
" Wykorzystywane jest buforowanie danych po stronie serwera Proxy (dzięki czemu tysiąc
użytkowników żądających dostarczenia tych samych zdjęć nie prześle tysiąca żądań do
serwisu Flickr).
" Stronicowanie zdjęć jest wykonywane bezzwłocznie ponieważ zależy jedynie od skryptu
klienckiego, co czyni tę wersję kontrolki znacznie szybszą w działaniu.
Podsumowanie
W tym rozdziale zostały omówione zagadnienia szybszego wyświetlania stron przez opóz-
nienie ładowania jej komponentów. Zaprezentowane rozwiązania pozwalają na łatwe skró-
cenie czasu pobierania dokumentów. Jednak jeszcze większą szybkość działania aplikacji
i lepsze wykorzystanie pamięci podręcznej przeglądarki można uzyskać przez zastosowanie
widżetów klienckich, które udostępniają użytkownikom wiele rozbudowanych funkcji, ale
nie wymagają asynchronicznej aktualizacji. W rozdziale tym zostały również omówione za-
sady przygotowania jednego z najważniejszych komponentów strony startowej  pośrednika
w dostępie od danych. W kolejnym rozdziale zostaną opisane niektóre problemy związane ze
skalowalnością witryn Ajax, których funkcjonowanie w dużym stopniu zależy od usług sie-
ciowych i wymaga komunikacji z wieloma zewnętrznymi serwisami.
Podsumowanie | 161 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • glaz.keep.pl