Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

PLATFORMY TECHNOLOGICZNE ASP.NET mgr inż. Tomasz Gawron.

Podobne prezentacje


Prezentacja na temat: "PLATFORMY TECHNOLOGICZNE ASP.NET mgr inż. Tomasz Gawron."— Zapis prezentacji:

1 PLATFORMY TECHNOLOGICZNE ASP.NET mgr inż. Tomasz Gawron

2 Protokół HTTP Protokół zaprojektowany jako bezstanowy (brak pojęcia sesji grupującej interakcje). Interakcja przeglądarki z serwerem WWW odbywa się według schematu żądanie - odpowiedź: Serwer nadsłuchuje żądania, Klient otwiera połączenie – serwer odpowiada potwierdzeniem, Żądanie HTTP jest wysyłane przez klienta, Serwer przekazuje w odpowiedzi żądane zasoby lub informację o ich niedostępności, Połączenie zostaje zamknięte przez serwer Protokół określa format komunikatu żądania oraz odpowiedzi Domyślny numer portu: 80 2 Platformy Technologiczne 2012

3 Struktura komunikatu HTTP Formaty żądania i odpowiedzi są podobne: wiersz początkowy (zależny od typu komunikatu) dowolna liczba wierszy nagłówków typy nagłówków: General, Request, Response, Entity pusta linia (CRLF) – dla zaznaczenia końca sekcji nagłówkowej opcjonalne ciało komunikatu 3 Platformy Technologiczne 2012 Request Line Method Request URI HTTP Version Info Response Line HTTP Version Info Status Code Description Headers Message Body CRLF

4 Rodzaje metod komunikatów Platformy Technologiczne GET Do pobrania informacji poprzez podanie URI wymaganego zasobu Parametry dołączane do URI (po znaku zapytania) Jeżeli adres wskazuje na proces wykonujący przetwarzanie danych to wynikiem jest wytworzona przez ten proces informacja Możliwość warunkowego wykonania metody, gdy spełniony jest warunek podany w dodatkowych nagłówkach (If-Modified-Since, If-Match, …) Ograniczona długość przekazywanych parametrów (~240 znaków) POST Przesłanie danych do zasobu o podanym URI, dane zawarte są w treści żądania (większa ilość przesyłanych danych) Opisane dodatkowo nagłówkami Content-Type oraz Content-Length Odwołanie do zasobu (URI) wskazuje zwykle na program obsługujący, nie zaś na pobierany zasób; odpowiedź jest zwykle dokumentem generowanym HEAD Jak GET, ale służy jedynie sprawdzeniu dostępności zasobu: zwracany w odpowiedzi tylko nagłówek dokumentu

5 Rodzaje metod komunikatów Platformy Technologiczne PUT Wymusza zapisanie zawartości żądania pod wskazanym adresem URI OPTIONS Żądanie przesłania informacji o opcjach związanych z wyspecyfikowanym zasobem. Pozwala określić możliwości serwera bez wywoływania akcji na zasobie. DELETE Do usunięcia wyspecyfikowanego zasobu TRACE Do zdalnego wywoływania śledzenia wysłanego żądania. Pozwala klientowi zobaczyć co zostało odebrane po drugiej stronie; użycie nagłówka Via daje informację o ścieżce wysłanego żądania CONNECT Do użytku z serwerami proxy, które mogą się przełączać dynamicznie w stan tunelowania

6 Elementy komunikatu odpowiedzi Platformy Technologiczne Kody statusu Nagłówki odpowiedzi 1xxkody informacyjne, klient powinien odpowiedzieć na nie wykonując jakąś czynność, 2xxżądanie zostało poprawnie obsłużone 3xxplik został przeniesiony; w takim przypadku odpowiedź zazwyczaj zawiera nagłówek Location określający nowe położenie pliku 4xxbłąd klienta (np nieprawidłowe zapytanie, dostęp do zasobu zabroniony, zasób nie znaleziony) 5xxbłąd serwera Content-Encodingokreśla sposób kodowania dokumentu Content-Lengthilość bajtów przesyłanych w odpowiedzi Content-Typetyp MIME zwracanego dokumentu Expiresczas, po którym dokument należy uznać za nieaktualny i usunąć z pamięci podręcznej przeglądarki Last-Modifiedczas ostatniej modyfikacji dokumentu Locationadres URL pod który przeglądarka powinna przesłać kolejne żądanie Refreshilość sekund, po upłynięciu których przeglądarka powinna ponownie odświeżyć stronę. Nagłówek może także zawierać adres URL strony, którą przeglądarka ma pobrać Set-Cookiecookie, które przeglądarka powinna zapamiętać WWW-Authenticatetyp oraz obszar autoryzacji jaki przeglądarka powinna podać w nagłówku Authorization przesłanym w kolejnym żądaniu Serverrodzaj oprogramowania serwera (analogicznie jak User-Agent)

7 Aplikacje ASP.NET Platformy Technologiczne Obiektowe środowisko projektowania dynamicznych aplikacji WWW Rozdzielenie projektowania prezentacji strony od kodu logiki biznesowej (logika strony) Użycie komponentów dostarczanych przez.NET Framework - kontrolki Web, HTML działające po stronie serwera Kod strony jest kompilowany przy pierwszym żądaniu strony ASP.NET (.aspx) Możliwość użycia języków programowania VB.NET, C# Organizacja UI - strony główne i strony z treścią Zarządzanie stanem, bezpieczeństwem Aplikacja ASP.NET może składać się elementów: Formularze Internetowe (Web Form) – pliki z rozszerzeniem (.aspx) Usługi Web (Web services) – pliki z rozszerzeniem (.asmx) Pliki logiki aplikacji – pliki z rozszerzeniem (.vb lub.cs) Globalnej klasy aplikacji (.asax) Pliku konfiguracyjnego Web.config innych pliki typu: strona HTML, arkusz CSS Web Client Operating System ASP.NET Applications IIS Asp.Net Engine.NET Framework HTTP

8 Pliki konfiguracyjne i katalogi Platformy Technologiczne Pliki konfiguracyjne Machine.config - ustawienia dotyczą wszystkich aplikacji na komputerze lokalnym Web.config - ustawienia dotyczą tylko wybranej aplikacji Katalogi aplikacji Bin - zawiera wszystkie prekompilowane podzespoły (assemblies) wykorzystywane w aplikacji App_Browsers - zawiera tzw. Browser Capabilities – specjalne pliki, w których definiuje się, jakich funkcjonalności od klienta przesyłającego w żądaniu określony łańcuch USER- AGENT może oczekiwać serwer. App_Code - zawiera pliki źródłowe klas wykorzystywanych na stronach. App_Data - zawiera pliki z danymi dla aplikacji np. plikami baz danych Microsoft Access (.mdb), XML itp. App_Themes - zawiera pliku definiujące wygląd strony internetowej i kontrolek. App_GlobalResources - zawiera globalne pliki zasobów aplikacji (.resx) App_LocalResources - zawiera pliki zasobów dla określonej strony (.resx). App_WebReferences - zawiera pliki połączenia serwisów Web z aplikacją (.wsdl)

9 ASP.NET - od wewnątrz Platformy Technologiczne Kod zawarty w aplikacjach i usługach WWW opartych na ASP.NET jest wykonywany w pojedynczej instancji procesu roboczego aspnet_wp.exe Żądania dotyczące plików ASP.NET są obsługiwane przez rozszerzenie ASP.NET ISAPI działające w przestrzeni adresów procesu IIS (inetinfo.exe) Komunikacja pomiędzy tym procesem a procesem roboczym ASP.NET odbywa się za pomocą potoku nazwanego Izolacja aplikacji polega na utworzeniu odrębnych domen aplikacji w ramach procesu roboczego (po jednej dla każdego katalogu wirtualnego IIS lub usługi WWW opartej na ASP.NET)

10 Web Form Platformy Technologiczne Sekcja dyrektyw strony Konfigurują środowisko, w którym będzie pracowała strona. Określają sposób przetwarzania strony przez moduł wykonawczy HTTP. Umożliwiają importowanie przestrzeni nazw, ładowanie podzespołów, których nie ma w danym momencie w GAC, rejestrowanie nowych kontrolek z niestandardowymi nazwami tagów i prefiksami przestrzeni nazw. Sekcja kodu Opatrywana tagiem zawiera kod związany z daną stroną. Zawiera zwykle procedury obsługi zdarzeń i funkcje pomocnicze. Kod aplikacji może zostać umieszczony bezpośrednio w pliku.aspx tzw. Code Inline lub w dodatkowym pliku tzw. Code Behind. Sekcja układu strony Zawiera reprezentację widoku strony w postaci zbioru kontrolek serwerowych, tekstu oraz znaczników HTML, który jest uszczegóławiany przez kod. Form1.aspxForm1.aspxForm1.aspx.vb or Form1.aspx.cs code code Separate filesSingle file

11 Web Form Platformy Technologiczne Formularz Web składa się z znaczników ASP.NET oraz logiki przetwarzania Rozdzielnie kodu obsługi strony od zawartości interfejsu użytkownika Kod inline - kod znaczników i kod aplikacji (C#, VB) współistnieją w pojedynczym pliku.aspx Kod ukryty - kod znaczników i kod aplikacji są w odrębnych plikach (.aspx,.aspx.cx, dll) Kod ukryty - klasy częściowe – plik z kodem ukrytym jest implementowany za pomocą klas częściowych Programiści i projektanci UI mogą pracować niezależnie

12 Składowe strony ASP.NET Platformy Technologiczne Sekcja dyrektyw strony Konfiguruje środowisko, w którym będzie pracowała strona Określa przestrzeń nazw, języka programowania, sposób przetwarzania strony przez moduł wykonawczy HTTP (parametrów protokołu), Umożliwia importowanie przestrzeni nazw, ładowanie podzespołów, których nie ma w danym momencie w GAC, rejestrowanie nowych kontrolek z niestandardowymi nazwami tagów i prefiksami przestrzeni nazw. Sekcja kodu Opatrywana tagiem zawiera kod związany z daną stroną. Zawiera zwykle procedury obsługi zdarzeń i funkcje pomocnicze. Sekcja układu strony (page layout) Zawiera reprezentację widoku strony, który jest uszczegóławiany przez kod. Zawiera kontrolki serwerowe, ciągi tekstu oraz znaczniki języka HTML. Wygląd strony może być zdefiniowany na stronie poprzez ustawienie właściwości indywidualnych elementów lub przy pomocy arkuszy styli.

13 Model strony ASP.NET Platformy Technologiczne HTML Block Other Objects Server Control HTML Block HTML\Text This is some text link text Page Object

14 Strony ASP.NET Platformy Technologiczne Strona prezentacyjna ASP.NET: widok HTML …

15 Strony ASP.NET Platformy Technologiczne Code behind using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace WebApplication1 { /// /// Summary description for WebForm1. /// partial class WebForm1 : System.Web.UI.Page { private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here } #region Web Form Designer generated code }

16 Cykl życia strony Platformy Technologiczne Przeglądarka użytkownika odwołuje się do pliku o rozszerzeniu.aspx ASP.NET odczytuje plik z systemu plików serwera ASP.NET przegląda wszystkie znaczniki w pliku i ładuje je do pamięci jeśli znacznik zawiera atrybut runat=server, ASP.NET ładuje odpowiednią kontrolkę serwerową. Typ kontrolki jest określony przez nazwę znacznika. znaczniki niezawierające atrybutu runat=server stanowią zwykły kod HTML. ASP.NET w niezmienionej postaci przekaże je do odbiorcy Po załadowaniu wszystkich znaczników do pamięci ASP.NET wykonuje odpowiedni kod programu każdej z kontrolek serwerowych Po zakończeniu przetwarzania kodu wszystkich kontrolek serwerowych, ASP.Net wywołuje metodę Render każdej kontrolki Po wygenerowaniu strony ASP.NET uwalnia pamięć ASPXFile Request ASPXEngine Parse Gend Page Class Generate Response Request Instantiate Response Code- behind class PageDLL Instantiate, Process and Render Compile

17 Dyrektywy strony Platformy Technologiczne definiuje atrybuty strony wykorzystywane przez kompilator stron. Umożliwia określenie parametrów protokołu HTTP, określenie przestrzeni nazw, definicję języka – definiuje atrybuty kontrolki użytkownika (user – tworzy powiązanie pomiędzy nazwa pliku kontrolki użytkownika a nazwą odpowiadającego jej - dołącza jawnie do strony przestrzeń nazw, co umożliwia elementom strony dostęp do wszystkich klas i interfejsów zdefiniowanych w tej - deklaruje stworzenie połączenia pomiędzy podzespołem a bieżącą stroną, co pozwala na wykorzystywanie na stronie klas i interfejsów zdefiniowanych w - deklaruje sposób obsługi buforowania wyjścia dla strony

18 Klasyfikacja kontrolek serwerowych Platformy Technologiczne Kontrolki serwerowe HTML (HTML Server Control) - z atrybutem runat=server Kontrolki serwerowe Web (Web Server Control) – Standardowe – etykiety, pola tekstowe, listy, … Data – odczyt informacji z pojemników danych Navigation – kontrolki wyświetlające elementy nawigacyjne, takie jak ścieżki, menu różnych typów Login – udostępniające funkcje sterowania dostępem, rejestracji użytkownika Walidacji danych WebParts – umożliwiające wydzielanie części strony Web jako obszaru dynamicznego, który autoryzowani użytkownicy mogą dostosować do swoich preferencji Kontrolki użytkownika (Web User Controls) Wbudowane kontrolki Web (WebCustom Controls)

19 Zdarzenia w modelu klient - serwer Klient: Zazwyczaj używane tylko z kontrolkami HTML Interpretowane przez przeglądarkę Brak dostępu do zasobów serwera Używa Serwer: Używane z każdym typem kontrolki Kod jest kompilowany i uruchamiany na serwere Dostęp do zasobów serwera Używa lub 19 Platformy Technologiczne 2012 Internet.HTM Pages Internet.ASPX Pages

20 Postback Platformy Technologiczne Postback polega na powracaniu do określonej strony WWW w czasie trwania sesji z serwerem ASP.NET Postback model – mechanizm przesyłania stanu kontrolekze strony web do serwera oraz odtwarzaniu tych wartości gdy serwer zwróci odpowiedź Pozwala zachować właściwości kontrolkom pomiędzy wieloma odwołaniami do serwera Cross-Page Postback – możliwość skonfigurowania kontrolek do przesyłania żądań na inne strony IsPostBack – właściwość strony umożliwiająca programowe rozróżnienie między żądaniami przesyłanymi zwrotnie a pierwszymi wywołaniami strony AutoPostBack – właściwość kontroluje automatyczne odesłanie stanu kontrolki do serwera EnableViewState – umożliwia zachowanie stanu kontrolki po przesłaniu żądania do serwera

21 Zdarzenia i Postback Platformy Technologiczne Round trip event (natychmiastowe odwołanie do serwera) Click Delayed event (zdarzenie obsłużone przy kolejnym odwołaniu do serwera) TextChanged SelectedIndexChanged AutoPostBack (wymusza natychmiastowe odwołanie do serwera) TextChanged

22 Cross – Page Postback Platformy Technologiczne Strony mogą wykonać post back do innych stron Wykorzystywane właściwości: control.PostBackUrl – adres docelowy żądania zwrotnego Page.PreviousPage – zwraca referencję do strony, która generowała żądanie zwrotne PreviousPage.IsCrossPagePostBack – informacja, czy wystąpiło żądanie zwrotne z innej strony

23 Przetwarzanie kontrolek Platformy Technologiczne Init Load PreRender SaveViewState Render Dispose Inicjalizacja, dodanie do drzewa Wykonanie kodu użytkownika CreateChildControls() sprawdza renderowanie dzieci Zapisanie aktualnego stanu Renderowanie odpowiedziEach control renders itself to the Response Strony i kontrolki są usuwane Init Load PreRender SaveViewState Render Dispose LoadViewState Postback data Postback events Ostatni stan pobrany z ViewState Przesłane dane są przekazane do powiązanych kontrolek Zdarzenia uruchamianie zgodnie z kolejnoscią w drzewie; Zdarzenie, które wywołało postback wykonywane jest jako ostatnie

24 Obsługa błędów Platformy Technologiczne Przekierowanie użytkownika na stronę błędu Konfiguracja na poziomie strony atrybut errorPage w dyrektywie Page własność Page.ErrorPage Konfiguracja na poziomie aplikacji sekcja customErrors w pliku Web.config Przechwytywanie i obsługa wyjątków Obsługa wyjątków na poziomie lokalnym Obsługa wyjątków na poziomie strony Obsługa wyjątków na poziomie aplikacji Śledzenie wykonywania aplikacji – tracing Śledzenie wykonywania na poziomie strony Śledzenie wykonywania na poziomie aplikacji

25 Kontrola zdarzeń aplikacji Platformy Technologiczne ASP.NET Web Server Client ASP.NET HTTP Runtime IIS Application_BeginRequest Application_AuthenticateRequest Application_AuthorizeRequest Application_ResolveRequestCache Application_AquireRequestState Application_PreRequestHandlerExecute Application_EndRequest Application_UpdateRequestCache Application_ReleaseRequestState Application_PostRequestHandlerExecute Page execution Request Response

26 Zdarzenia aplikacji Platformy Technologiczne ZdarzenieOpis BeginRequestZgłaszane w momencie rozpoczynania obsługi żądania AuthenticateRequestZgłaszane gdy żądanie HTTP gotowe jest do uwierzytelnienia AuthorizeRequestZgłaszane gdy żądanie HTTP gotowe jest do autoryzacji ResolveRequestCacheUżywane przez moduł pamięci podręcznej w celu obsługi danego żądania jeśli jest już przechowywane w pamięci podręcznej AcquireRequestStateZgłaszane gdy aplikacja uzyska informacje o stanie (np. sesji) związanym z danym żądaniem PreRequestHandlerExecuteZgłaszane bezpośrednio przed rozpoczęciem realizacji procedury obsługi żądań przez HTTP handler PostRequestHandlerExecuteZgłaszane bezpośrednio po zakończeniu realizacji procedury obsługi żądań przez HTTP handler ReleaseRequestStateZgłaszane w celu zapamiętania danych o stanie sesji dla danego żądania UpdateRequestCacheZgłaszane gdy aplikacja uaktualnia pamięć podręczną dla danego żądania EndRequestZgłaszane w momencie zakończenia obsługi żądania PreSendRequestContentZgłaszane bezpośrednio przed wysłaniem zawartości żądania HTTP PreSendRequestHeadersZgłaszane bezpośrednio przed wysłaniem nagłówków żądania HTTP ErrorZgłaszane w momencie wystąpienia jakiegokolwiek błędu

27 Global.asax Platformy Technologiczne using System; using System.Collections; using System.ComponentModel; using System.Web; using System.Web.SessionState; namespace BenefitsCS { /// /// Summary description for Global. /// public class Global : System.Web.HttpApplication { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null; public Global() { InitializeComponent(); } protected void Application_Start(Object sender, EventArgs e) { } … protected void Session_Start(Object sender, EventArgs e) { } protected void Application_BeginRequest(Object sender, EventArgs e) { } protected void Application_EndRequest (Object sender, EventArgs e) { } protected void Application_AuthenticateRequest (Object sender, EventArgs e) { } protected void Application_Error(Object sender, EventArgs e) { } protected void Session_End(Object sender, EventArgs e) { } protected void Application_End(Object sender, EventArgs e) { }

28 Nawigacja i logowanie Platformy Technologiczne Kontrolki ułatwiają nawigację pomiędzy stronami WWW Plik.sitemap – opis struktury logicznej witryny (mapa witryny) to lista stron i adresów URL Menu - wyświetla rozwijane lub wyskakujące menu w oparciu o dane przekazane przez SiteMapDataSource TreeView – wyświetla dane jako hierarchiczny układ węzłów, które można rozwijać lub ukrywać; SiteMapPath - pokazuje ścieżkę dostępu do aktualnej strony poprzez pośredniczące strony SiteMapDataSource – dostęp do hierarchicznej listy łączy, zapisanej w pliku XML o domyślnej nazwie web.sitemap Login controls Kontrolki dla logowania, tworzenia użytkowników, odzyskiwania haseł, i inne...

29 Przesyłanie informacji między stronami Platformy Technologiczne Metoda GET lub POST Przesyłanie informacji Response.Redirect("Info.aspx?imie="+ imieTextBox.Text + "&nazwisko=" + nazwiskoTextBox); Pobieranie informacji przesłanych Request.Params["imie"] Mechanizm Cross-Page Postback

30 Odwołanie do kontrolki na poprzedniej stronie Platformy Technologiczne void Page_Load (Object sender, EventArgs e) { if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) { TextBox input = (TextBox) PreviousPage.FindControl ("Input"); Output.Text = "Hello, " + input.Text; }

31 Walidacja danych Platformy Technologiczne Obiekty sprawdzające poprawność danych wejściowych wprowadzanych przez użytkownika RequiredFieldValidator sprawdzający czy w danym polu została wprowadzona jakakolwiek wartość RangeValidator sprawdzający czy dane znajdują się w określonym przedziale wartości CompareValidator porównujący wartości dwóch pól tekstowych CustomValidator sprawdzanie poprawności określone przez algorytm użytkownika RegularExpressionValidator sprawdzanie poprawności na dopasowanie wzorca określonego wyrażeniem regularnym

32 Dodawanie walidatora Platformy Technologiczne Dodanie kontrolki sprawdzającej Wybór kontrolki wejściowej do sprawdzania Ustalenie właściwości kontroli Display: sposób wyświetlania kontrolki sprawdzania poprawności: Static - do strony zostanie dodane miejsce przeznaczone na wyświetlanie informacji Dynamic - miejsce na wyświetlanie informacji kontrolki zostanie dodane dynamicznie, jeśli dane okażą się niepoprawne None – wartość atrybutu ErrorMessage nigdy nie będzie wyświetlana

33 ValidationSummary Platformy Technologiczne Wyświetla listę komunikatów o błędach, zgłoszonych przez znajdujące się na stronie kontrolki sprawdzania poprawności Może wyświetlać zawartość atrybutów text i error messages Używa Text="*" do wskazania lokalizacji błędu DisplayMode – format wyświetlania podsumowania; List - jako listę w osobnych wierszach, BulletList- jako listę wypunktowaną, SingleParagraph - w jednym paragrafie EnableClientScript - włączenie/wyłączenie kodu generowanego po stronie klienta z podsumowania błędów sprawdzania poprawności ShowSummary – gdy true, podsumowanie zostanie wyświetlone na Web Form … Page.IsValid Property private void cmdSubmit_Click(object s, System.EventArgs e) {if (Page.IsValid) {Message.Text = "Page is Valid!"; // Perform database updates or other logic here }

34 Strony wzorcowe Platformy Technologiczne Strona wzorcowa - umożliwia sterowanie wspólnym wyglądem dla całej witryny internetowej; zawiera tylko wspólne elementy Strona zawartości - miejsce w którym ma zostać umieszczona treść strony zawartości jest określone przez specjalną kontrolkę ContentPlaceHolder Plik.master zawiera szablon wykorzystywany przez wszystkie strony aplikacji Inne strony zawierają się jako kontrolki w stronie Master Page

35 Tworzenie strony wzorcowej Platformy Technologiczne Dodawanie strony wzorcowej do projektu za pomocą menu Website\Add New Item, wybierając szablon Master Page Dodawanie strony zawartości Dodatkowo zaznaczenie opcji Select master page. Strona zawartości korzystająca z tej strony wzorcowej musi zawierać kontrolkę Content, która atrybut ContentPlaceHolderID jest równy wartości ContentPlaceHolderID strony wzorcowej. Modyfikowanie istniejącej strony Web na stronę używającą strony wzorcowej Page MasterPage- File="Site.master" %> Page MasterPage- File="Site.master" %> Site.masterdefault.aspxhttp://.../default.aspx

36 Definiowanie i korzystanie z szablonu Platformy Technologiczne ACME Inc. This content fills the place holder "Main" defined in the master page

37 Motywy i skórki Platformy Technologiczne Mechanizm stosowany dla kontrolek, stron i aplikacji polegający na grupowaniu właściwości inicjujących kontrolki Skórki to wizualne atrybuty kontrolek narzucają wygląd kontrolek, stron i całych aplikacji dodawane deklaratywnie lub programistycznie fizycznie przechowywane w plikach.skin domyślne i nazwane skórki Motywy to kolekcje skórek fizycznie przechowywane w podkatalogu motywów globalne i lokalne motywy Przypisanie motywu do strony Przypisanie motywu do aplikacji

38 Lokalizacja Platformy Technologiczne ASP.NET wspiera budowę serwisów wielojęzycznych poprzez mechanizm zasobów (resources) 2 typy zasobów: /App_LocalResources – dotyczące pojedynczej strony /App_GlobalResources – dotyczące całości serwisu Prosta struktura: klucz=wartość Typy zasobów: Ciągi tekstowe Grafika (obrazy i ikony) Pliki tekstowe Wykorzystanie zasobów: Mechanizm lokalizacji domyślnie wykorzystuje ustawienia językowe przeglądarki

39 Wiązanie danych Platformy Technologiczne Wiązanie danych – proces uzyskiwania danych ze źródła i dynamicznego wiązania ich z pewną właściwością elementu wizualnego (kontrolki) Kontrolki serwera można powiązać logicznie ze źródłem danych, używając zbioru właściwości takich jak Text, DataSource, DataTextField Powiązanie kontrolki z danymi uaktywniane jest poprzez wywołanie metody DataBind. Źródło danych – obiekt implementujący interfejs ICollection Dane reprezentowane przez klasy kolekcji.NET (tablice, słowniki, listy, sterty, kolejki) Struktury danych definiowane przez użytkowników Dane reprezentowane przez klasy bazodanowe (DataTable, DataSet, DataReader) Kontrolki źródeł danych Widoki reprezentowane przez klasę DataView

40 Kontrolki prezentacji i źródeł danych Platformy Technologiczne Wyświetlanie informacji: GridView: Wyświetlanie rekordów w formie arkusza, umożliwia modyfikację i usuwanie danych DetailsView: wyświetla jeden rekord; wstawianie, modyfikacja, usuwanie FormView: wyświetla jeden rekord w sformatowanej postaci; wstawianie, modyfikacja, usuwanie … Kontrolki źródeł danych: SqlDataSource: umożliwia odczytywanie i zmianę informacji w bazie danych MS SQL XMLDataSource: umożliwia odczytywanie i zmianę informacji w plikach XML ObjectDataSource: umożliwia odczytywanie i zmianę danych zawartych w niestandardowych obiektach SiteMapDataSource: odczytywanie informacji z pliku mapy witryny

41 Wiązanie danych prostych Platformy Technologiczne Łączenie kontrolek jest użyteczne w prostym przekazywaniu danych między kontrolkami Drugim sposobem jest DataBind You selected: You selected: private void Page_Load(object sender, System.EventArgs e) { lblSelectedValue.DataBind(); } private void Page_Load(object sender, System.EventArgs e) { lblSelectedValue.DataBind(); }

42 Wiązanie przez właściwości Platformy Technologiczne Używając kolekcji DataBindings możemy przypisywać właściwości ze źródła danych do kontrolki txtCustomerAddress.DataBindings.Add("Text", dsNorthwindData1.Customers, "Address"); txtCustomerCity.DataBindings.Add("Text", dsNorthwindData1.Customers, "City"); txtCustomerAddress.DataBindings.Add("Text", dsNorthwindData1.Customers, "Address"); txtCustomerCity.DataBindings.Add("Text", dsNorthwindData1.Customers, "City"); Właściwość kontolki do której przyisujemy wartość Właściwość kontolki do której przyisujemy wartość Kolumna Tabela źródła danych

43 Wiązanie danych złożonych Platformy Technologiczne Wiązanie danych złożonych - gdy wiążemy kontrolkę listy (DropDownList,CheckBoxList, RadioButtonList, ListBox) lub kontrolkę iteracyjną (Repeater, DataList, DataGrid) z jedną lub kilkoma kolumnami danych WłaściwośćOpis DataSource DataSet zawierający dane DataMember DataTable w DataSet DataTextField Wyswietlane pole z DataTable DataValueField Pole, które po zaznaczeniu staje się wartością // data loading DataTable __dataTable; __dataTable = __dataHandler.Load(); // data binding DDList.DataSource = __dataTable; DDList.DataTextField = "Name"; DDList.DataValueField = "empID"; DDList.DataBind();

44 Kontrolki wyświetlające dane Platformy Technologiczne NazwaOpis GridViewWyświetla wiele rekordów w formie arkusza (modyfikacja, usuwanie) DetailsViewWyświetla jeden rekord na raz, używając prostych instrukcji HTML (wstawianie, modyfikacja, usuwanie) FormViewWyświetla jeden rekord w sformatowanej postaci (wstawianie, modyfikacja, usuwanie) DataListPowtarza zdefiniowany przez projektanta szablon dla każdego rekordu z źródła danych RepeaterZbliżona do DataList, ale nie zawiera własnych elementów HTML.

45 GridView Platformy Technologiczne Zbliżona do kontrolki DataGrid Generuje zbiór danych w postaci tabel HTML Wbudowane funkcje: sortowanie, stronicowanie, wybieranie, modyfikowanie i kasowanie Bogaty asortyment typów komórek: ImageFields, CheckBoxFields Wiele możliwości modyfikacji UI

46 Typy komórek GridView Platformy Technologiczne NazwaOpis BoundFieldGeneruje kolumny z tekstem ButtonFieldGeneruje kolumny z przyciskami (push button, image, or link) CheckBoxFieldGeneruje kolumny z polem wyboru dla typu Bool CommandFieldGeneruje kontrolki dla wyboru i edycji danych w GridView HyperLinkFieldGeneruje kolumny z łączami ImageFieldGeneruje kolumny z obrazkami TemplateFieldGeneruje kolumny z użyciem szablonów HTML

47 Typy komórek GridView Platformy Technologiczne

48 Kontrolki źródła danych Platformy Technologiczne Zapełnienie kontrolek danymi poprzez wiązanie nie bezpośrednio z kolekcją danych, ale z kontrolką do obsługi źródła danych NazwaPrzeznaczenie SqlDataSourceŁączy kontrolki z bazami SQL AccessDataSourceŁączy kontrolki z bazami Access XmlDataSourceŁączy kontrolki z danymi XML ObjectDataSourceŁączy kontrolki z komponentami SiteMapDataSourceŁączy kontrolki nawigacyjne z danymi nawigacyjnymi (mapą witryny)

49 SqlDataSource Platformy Technologiczne Deklaratywne podpinanie danych do baz SQL Dwustronne podpinanie danych SelectCommand InsertCommand, UpdateCommand i DeleteCommand Możliwość umieszczania wyników zapytania w pamięci podręcznej Cache Parametryzowane operacje

50 SqlDataSource Platformy Technologiczne Najważniejsze właściwości: ConnectionString – ciąg znaków połączenia umożliwiający dostęp do bazy danych, SelectCommand, InsertCommand, UpdateCommand, DeleteCommand – ciąg znaków, które zawierają polecenie SQL lub nazwa składowanej procedury DataSourceMode – tryb pobierania danych przez polecenie Select (DataSet lub DataReader) ProviderName – dostawca danych np. System.Data.SqlClient SqlDataSource wspiera także deklaratywne umieszczanie elementów w pamięci podręcznej cache. Właściwości: EnableCaching – włączenie/wyłączenie mechanizmu pamiętania w pamięci podręcznej CacheDuration – czas przechowywania zawartości źródła danych w pamięci

51 XmlDataSource Platformy Technologiczne Deklaratywne wiązanie do danych XML Wspiera umieszczanie danych w pamięci podręcznej cache i transformacje XSL Jednostronne wiązanie danych NazwaOpis DataFileŚcieżka do pliku XML TransformFileŚcieżka do pliku XSL EnableCaching XPathWyrażenie XPath służące filtrowaniu danych CacheDurationCzas przetrzymywania danych w pamięci podręcznej (sekundy) CacheExpirationPolicyTyp CacheDuration CacheKeyDependencyZależność Cache na określonym kluczu Włączone/wyłączone korzystanie z pamięci podręcznej Cache

52 ObjectDataSource Platformy Technologiczne Deklaratywne podpinanie do komponentów Wiąże z danymi poprzez dedykowane klasy zaimplementowane w warstwie dostępu do danych (lub pobieranie danych z usługi Web) Separacja kodu dostępu do danych od warstwy prezentacji Dwustronne podpinanie danych SelectMethod, InsertMethod, UpdateMethod i DeleteMethod Możliwość umieszczania wyników zapytania w pamięci podręcznej Cache Parametryzowane operacje NazwaOpis TypeNameTyp komponentu (nazwa klasy) SelectMethodMetoda komponentu wykonująca zapytanie typu select InsertMethod UpdateMethod DeleteMethod EnableCachingWłączenie/wyłączenie pamięci podręcznej Cache Metoda komponentu wykonująca zapytanie typu insert Metoda komponentu wykonująca zapytanie typu update Metoda komponentu wykonująca zapytanie typu delete

53 ObjectDataSource Platformy Technologiczne ObjectDataSource.SelectMethod może wskazywać na metody statyczne i instancyjne Jeżeli metody instancyjne są używane: ODS tworzy nową instancję klasy przy każdym wywołaniu Klasa musi posiadać domyślny publiczny konstruktor Zdarzenia ObjectCreated and ObjectDisposing mogą zostać użyte do przeprowadzenia dodatkowej inicjalizacji lub sprzątania po obiekcie NazwaOpis InsertParametersParametry dla InsertMethod UpdateParametersParametry dla UpdateMethod DeleteParametersParametry dla DeleteMethod SelectParametersParametry dla SelectMethod CacheDurationCzas przetrzymywania danych w pamięci podręcznej (sekundy) SqlCacheDependencyZależność Cache na określonym elemencie bazy danych

54 Zarządzanie stanem Platformy Technologiczne Zarządzanie stanem – zdolność do przechowywania i przekazywania informacji np. pomiędzy żądaniami pojedynczego użytkownika. Kryteria mechanizmów przechowywania i zarządzania stanem: zasięg, czas życia, dopuszczalny rozmiar przechowywanych danych oraz po jakiej stronie są przechowywane. Zarządzać możemy na poziomie: Aplikacji (application state) - do przechowywania danych i stosowania w obrębie całej aplikacji (dla każdego użytkownika tej aplikacji) np. dane konfiguracyjne, liczba sesji,... Sesji (session state) – do przechowywania danych i dostępu do danych w obrębie sesji (dla pojedynczego użytkownika) np. stan karty zakupów, klienta,... Strony (page state) - do przechowywania informacji strony sieci WWW pomiędzy kolejnymi przetworzeniami strony np. zawartość pól tekstowychTextBoxes, stan CheckBoxes,...

55 Typy zarządzania stanem Platformy Technologiczne SerwerKlient Application state Informacje dostępne dla wszystkich użytkowników aplikacji Cookies Pliki tekstowe przechowujące informacje o stanie Session state Informacje dostępne tylko z kontekstu danej sesji ViewState Utrzymuje wartości pomiedzy wieloma wołaniami do tej samej strony Baza danych Również może wspierać zarządzanie stanem Query strings Informacje dołączane do URL

56 Obiekty zarządzania stanem Platformy Technologiczne Dane o stanie aplikacji są przechowywane w obiekcie klasy HttpApplicationState, typu słownikowego zawierającego pary typu klucz-wartość. Zasoby – szybki dostęp (stan aplikacji jest przechowywany w pamięci); jednak przechowywanie dużych bloków danych w stanie aplikacji może wypełnić pamięć serwera. Ulotność – stan aplikacji jest przechowywany w pamięci, jest usuwany z niej w momencie zatrzymania lub restartu aplikacji lub w momencie awarii serwera. Skalowalność – stan aplikacji nie jest dzielony na serwery w farmie serwerów. Współbieżność – do stanu aplikacji może jednocześnie odwoływać się wiele wątków (zapewnienie mechanizmów bezpiecznej aktualizacji przechowywanych obiektów). Dane o stanie sesji użytkownika są przechowywane w obiekcie klasy HttpSessionState, typu słownikowego zawierającego pary typu klucz-wartość. Zawartość tego obiektu jest dostępna poprzez właściwości Session klasy Page i HttpContext. Niepowtarzalny identyfikator sesji, służy do identyfikacji kolejnych żądań pochodzących od tego samego klienta. Właściwość Session.Mode wskazuje gdzie przechowywane są dane o sesji: InProc, StateServer lub SqlServer.

57 Zapamiętywanie stanu kontrolki Platformy Technologiczne Wszystkie kontrolki dziedziczą właściwość ViewState po klasie bazowej Conrol Dwa najczęściej spotykane problemy: Wysoki czas ładowania – strona musi serializować i deserializować obiekt Zwiększony rozmiar strony – dane przechowywane w ukrytym formularzu _VIEWSTATE

58 Dostęp do stanu serwera Platformy Technologiczne Dostęp do informacji: PageState zapis: ViewState["counter"] = counterVal; odczyt: int counterVal = (int) ViewState["counter"]; SessionState zapis:Session["cart"] = shoppingCart; odczyt:DataTable shoppingCart = (DataTable) Session["cart"]; ApplicationState zapis:Application["database"] = databaseName; odczyt: string databaseName = (string) Application["databaseName"]; Trwałość zmiennych Zmienne sesyjne utrzymują wartość przez czas trwania sesji (20 minut) Czas trwania sesji może być zmieniony w web.config: Zmienne aplikacyjne są usuwane po wywołaniu Application_End

59 Przechowywanie stanu sesji In - proc Przechowywane w przestrzeni adresowej ASP.NET worker process Szybkie działanie, Dane są tracone gdy proces jest restartowany Out – of – proc State Server Usługa Windows ASP.NET State Service Instalowana domyślnie, ale nie uruchomiona Niezależne od IIS – proces aspnet_state.exe Konfiguracja IP i portu stateConnectionString=tcpip= :42424 SQL Server Dane sesyjne przechowywane w SQL Server Wymaga stworzenia baz danych InstallSqlState.sql / InstallPersistantSqlState.sql Największa niezawodność – możliwość klastrowania 59 Platformy Technologiczne 2012

60 Cookies Platformy Technologiczne Tworzenie cookie: Odczyt cookie: Zapis cookie: HttpCookie objCookie = new HttpCookie("myCookie"); DateTime now = DateTime.Now; objCookie.Values.Add("Time", now.ToString()); objCookie.Values.Add("ForeColor", "White"); objCookie.Values.Add("BackColor", "Blue"); objCookie.Expires = now.AddHours(1); Response.Cookies.Add(objCookie); HttpCookie objCookie = Request.Cookies["myCookie"]; lblTime.Text = objCookie.Values["Time"]; lblTime.ForeColor = objCookie.Values["ForeColor"]; lblTime.BackColor = objCookie.Values["BackColor"];

61 Sesje cookieless Platformy Technologiczne Każda aktywna sesja jest identyfikowana i śledzona poprzez Session ID Session ID jest przesyłane między klientem a serwerem przez URL Cookieless sessions Session ID zakodowane w URL Nie można używać absolutnych URL Ustawianie sesji Cookieless Session state jest konfigurowany w sekcji pliku Web.config cookieless = true


Pobierz ppt "PLATFORMY TECHNOLOGICZNE ASP.NET mgr inż. Tomasz Gawron."

Podobne prezentacje


Reklamy Google