Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Platformy Technologiczne ASP.NET

Podobne prezentacje


Prezentacja na temat: "Platformy Technologiczne ASP.NET"— 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 Platformy Technologiczne 2012

3 Struktura komunikatu HTTP
Request Line Method Request URI HTTP Version Info Response Line Status Code Description Headers Message Body CRLF 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 Platformy Technologiczne 2012

4 Rodzaje metod komunikatów
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 Platformy Technologiczne 2012

5 Rodzaje metod komunikatów
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 Platformy Technologiczne 2012

6 Elementy komunikatu odpowiedzi
Kody statusu Nagłówki odpowiedzi 1xx kody informacyjne, klient powinien odpowiedzieć na nie wykonując jakąś czynność, 2xx żądanie zostało poprawnie obsłużone 3xx plik został przeniesiony; w takim przypadku odpowiedź zazwyczaj zawiera nagłówek Location określający nowe położenie pliku 4xx błąd klienta (np nieprawidłowe zapytanie, dostęp do zasobu zabroniony, zasób nie znaleziony) 5xx błąd serwera Content-Encoding określa sposób kodowania dokumentu Content-Length ilość bajtów przesyłanych w odpowiedzi Content-Type typ MIME zwracanego dokumentu Expires czas, po którym dokument należy uznać za nieaktualny i usunąć z pamięci podręcznej przeglądarki Last-Modified czas ostatniej modyfikacji dokumentu Location adres URL pod który przeglądarka powinna przesłać kolejne żądanie Refresh ilość 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-Cookie cookie, które przeglądarka powinna zapamiętać WWW-Authenticate typ oraz obszar autoryzacji jaki przeglądarka powinna podać w nagłówku Authorization przesłanym w kolejnym żądaniu Server rodzaj oprogramowania serwera (analogicznie jak User-Agent) Platformy Technologiczne 2012

7 Aplikacje ASP.NET 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 Platformy Technologiczne 2012

8 Pliki konfiguracyjne i katalogi
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) Platformy Technologiczne 2012

9 ASP.NET - od wewnątrz 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) Platformy Technologiczne 2012

10 Web Form <tags> code Separate files Single file
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 <script> 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.aspx Form1.aspx.vb or Form1.aspx.cs <tags> code Separate files Single file Platformy Technologiczne 2012

11 Web Form 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 Platformy Technologiczne 2012

12 Składowe strony ASP.NET
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. dyrektywa atrybut=”wartość” [, atrybut=wartość] %> Sekcja kodu Opatrywana tagiem <script> 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. Platformy Technologiczne 2012

13 Model strony ASP.NET Page Object HTML Block HTML Block HTML\Text
Language="C#" Debug="True" ...="etc" %> HTML Block <p>This is some text</p> <a href="mypage.aspx">link text</a> <img src="mypic.gif align="left" /> HTML Block HTML\Text <input type="text" name="mytext" size="40" runat="server" /> <input type="submit" name="gobtn" value="Go" runat="server" /> Server Control Other Objects Namespace="System.Data" %> Namespace="System.XML" %> Platformy Technologiczne 2012

14 Strony ASP.NET Strona prezentacyjna ASP.NET: widok HTML
Page Language=„c#" Codebehind="WebForm1.aspx.cs" SmartNavigation="true"%> <html> <body ms_positioning="GridLayout"> <form id="Form1" method="post" runat="server"> </form> </body> </html> Platformy Technologiczne 2012

15 Strony ASP.NET Code behind Platformy Technologiczne 2012 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> /// Summary description for WebForm1. /// </summary> 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 Platformy Technologiczne 2012

16 Instantiate, Process and Render
Cykl życia strony 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ęć ASPX File Request Engine Parse Gen’d Page Class Generate Response Instantiate Code- behind class Page DLL Instantiate, Process and Render Compile Platformy Technologiczne 2012

17 Dyrektywy strony Składnia: dyrektywa atrybut=”wartość” [, atrybut=wartość] %> @Page - definiuje atrybuty strony wykorzystywane przez kompilator stron. Umożliwia określenie parametrów protokołu HTTP, określenie przestrzeni nazw, definicję języka programowania. @Control – definiuje atrybuty kontrolki użytkownika (user control) @Register – tworzy powiązanie pomiędzy nazwa pliku kontrolki użytkownika a nazwą odpowiadającego jej znacznika. @Import - dołącza jawnie do strony przestrzeń nazw, co umożliwia elementom strony dostęp do wszystkich klas i interfejsów zdefiniowanych w tej przestrzeni @Assembly - deklaruje stworzenie połączenia pomiędzy podzespołem a bieżącą stroną, co pozwala na wykorzystywanie na stronie klas i interfejsów zdefiniowanych w podzespole @OutputCache - deklaruje sposób obsługi buforowania wyjścia dla strony Platformy Technologiczne 2012

18 Klasyfikacja kontrolek serwerowych
Kontrolki serwerowe HTML (HTML Server Control) - z atrybutem runat=„server” Kontrolki serwerowe Web (Web Server Control) – <asp:xx …runat=„server”</asp:xx> 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) Platformy Technologiczne 2012

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

20 Postback 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 Platformy Technologiczne 2012

21 Zdarzenia i Postback Round trip event (natychmiastowe odwołanie do serwera) Click <asp:Button Text="click me" Runat="server" OnClick="DoClick" /> Delayed event (zdarzenie obsłużone przy kolejnym odwołaniu do serwera) TextChanged <asp:TextBox Runat="server" OnTextChanged="DoTextChanged" /> SelectedIndexChanged <asp:ListBox Rows="3" Runat="server" OnSelectedIndexChanged="DoSIChanged" /> AutoPostBack (wymusza natychmiastowe odwołanie do serwera) TextChanged <asp:TextBox Runat="server" AutoPostBack="true" OnTextChanged="DoTextChanged" /> Platformy Technologiczne 2012

22 Cross – Page Postback 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 <html> <body> <form runat="server"> <asp:TextBox ID="Input" RunAt="server" /> <asp:Button Text="Test" PostBackUrl="PageTwo.aspx" RunAt="server" /> </form> </body> </html> Platformy Technologiczne 2012

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

24 Obsługa błędów 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 Platformy Technologiczne 2012

25 Kontrola zdarzeń aplikacji
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 Platformy Technologiczne 2012

26 Zdarzenia aplikacji Platformy Technologiczne 2012 Zdarzenie Opis
BeginRequest Zgłaszane w momencie rozpoczynania obsługi żądania AuthenticateRequest Zgłaszane gdy żądanie HTTP gotowe jest do uwierzytelnienia AuthorizeRequest Zgłaszane gdy żądanie HTTP gotowe jest do autoryzacji ResolveRequestCache Używane przez moduł pamięci podręcznej w celu obsługi danego żądania jeśli jest już przechowywane w pamięci podręcznej AcquireRequestState Zgłaszane gdy aplikacja uzyska informacje o stanie (np. sesji) związanym z danym żądaniem PreRequestHandlerExecute Zgłaszane bezpośrednio przed rozpoczęciem realizacji procedury obsługi żądań przez HTTP handler PostRequestHandlerExecute Zgłaszane bezpośrednio po zakończeniu realizacji procedury obsługi żądań przez HTTP handler ReleaseRequestState Zgłaszane w celu zapamiętania danych o stanie sesji dla danego żądania UpdateRequestCache Zgłaszane gdy aplikacja uaktualnia pamięć podręczną dla danego żądania EndRequest Zgłaszane w momencie zakończenia obsługi żądania PreSendRequestContent Zgłaszane bezpośrednio przed wysłaniem zawartości żądania HTTP PreSendRequestHeaders Zgłaszane bezpośrednio przed wysłaniem nagłówków żądania HTTP Error Zgłaszane w momencie wystąpienia jakiegokolwiek błędu Platformy Technologiczne 2012

27 Global.asax Platformy Technologiczne 2012
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) using System; using System.Collections; using System.ComponentModel; using System.Web; using System.Web.SessionState; namespace BenefitsCS { /// <summary> /// Summary description for Global. /// </summary> 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) Platformy Technologiczne 2012

28 Nawigacja i logowanie 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... <siteMap> <siteMapNode title="Home" url="default.aspx"> <siteMapNode title="Tab1" url="subdir/default.aspx"> <siteMapNode title="SubPage" url="subdir/foo.aspx" /> </siteMapNode> <siteMapNode title="Tab2" url="Tab/default.aspx"> <siteMapNode title="SubPage" url="Tab/foo.aspx“/> </siteMap> Platformy Technologiczne 2012

29 Przesyłanie informacji między stronami
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 Platformy Technologiczne 2012

30 Odwołanie do kontrolki na poprzedniej stronie
<html> <body> <form runat="server"> <asp:TextBox ID="Input" RunAt="server" /> <asp:Button Text="Test" PostBackUrl="PageTwo.aspx" RunAt="server" /> </form> </body> </html> <html> <body> <asp:Label ID="Output" RunAt="server" /> </body> </html> <script language="C#" runat="server"> void Page_Load (Object sender, EventArgs e) { if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) { TextBox input = (TextBox) PreviousPage.FindControl ("Input"); Output.Text = "Hello, " + input.Text; } </script> Platformy Technologiczne 2012 Platformy Technologiczne 2012.", "width": "800" }

31 Walidacja danych 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 Platformy Technologiczne 2012

32 Dodawanie walidatora 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 <asp:TextBox id="txtName" runat="server" /> <asp:Type_of_Validator id="Validator_id" runat="server" ControlToValidate="txtName" ErrorMessage="Message_for_error_summary" Display="static|dynamic|none" Text="Text_to_display_by_input_control"> </asp:Type_of_Validator> Platformy Technologiczne 2012

33 ValidationSummary 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 … <asp:ValidationSummary id="valSummary" runat="server" HeaderText="These errors were found:" ShowSummary="True" DisplayMode="List"/> 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 } Platformy Technologiczne 2012

34 Strony wzorcowe 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” Platformy Technologiczne 2012

35 Tworzenie strony wzorcowej
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 Site.master default.aspx Master %> <asp:ContentPlaceHolder ID="Main" RunAt="server" /> Page MasterPage- File="Site.master" %> <asp:Content ContentPlaceHolderID= "Main" RunAt="server" /> </asp:Content> Platformy Technologiczne 2012

36 Definiowanie i korzystanie z szablonu
Master %> <html> <body> <!-- Banner shown on all pages that use this master --> <table width="100%"> <tr> <td bgcolor="darkblue" align="center"> <span style="font-size: 36pt; color: white">ACME Inc.</span> </td> </tr> </table> <!-- Placeholder for content below banner --> <asp:ContentPlaceHolder ID="Main" RunAt="server" /> </body> </html> Page MasterPageFile="~/Site.master" %> <asp:Content ContentPlaceHolderID="Main" RunAt="server"> This content fills the place holder "Main" defined in the master page </asp:Content> Platformy Technologiczne 2012

37 Motywy i skórki 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 aplikacji Przypisanie motywu do strony <configuration> <system.web> <pages theme="BasicBlue" /> </system.web> </configuration> Page Theme="BasicBlue"> Platformy Technologiczne 2012

38 Lokalizacja 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: <asp:Label runat=„server” Text=„<%$ Resources: PlikRes, Etykieta1_Klucz %>” /> Mechanizm lokalizacji domyślnie wykorzystuje ustawienia językowe przeglądarki Platformy Technologiczne 2012

39 Wiązanie danych 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 Platformy Technologiczne 2012

40 Kontrolki prezentacji i źródeł danych
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 Platformy Technologiczne 2012

41 Wiązanie danych prostych
Łączenie kontrolek jest użyteczne w prostym przekazywaniu danych między kontrolkami Drugim sposobem jest DataBind <asp:DropDownList id="lstOccupation" autoPostBack="True" runat="server" > You selected: <asp:Label id="lblSelectedValue" Text="<%# lstOccupation.SelectedItem.Text %>" runat="server" /> private void Page_Load(object sender, System.EventArgs e) { lblSelectedValue.DataBind(); } Platformy Technologiczne 2012

42 Wiązanie przez właściwości
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"); Właściwość kontolki do której przyisujemy wartość Kolumna Tabela źródła danych Platformy Technologiczne 2012

43 Wiązanie danych złożonych
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 // data loading DataTable __dataTable; __dataTable = __dataHandler.Load(); // data binding DDList.DataSource = __dataTable; DDList.DataTextField = "Name"; DDList.DataValueField = "empID"; DDList.DataBind(); 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ą Platformy Technologiczne 2012

44 Kontrolki wyświetlające dane
Nazwa Opis GridView Wyświetla wiele rekordów w formie arkusza (modyfikacja, usuwanie) DetailsView Wyświetla jeden rekord na raz, używając prostych instrukcji HTML (wstawianie, modyfikacja, usuwanie) FormView Wyświetla jeden rekord w sformatowanej postaci (wstawianie, modyfikacja, usuwanie) DataList Powtarza zdefiniowany przez projektanta szablon dla każdego rekordu z źródła danych Repeater Zbliżona do DataList , ale nie zawiera własnych elementów HTML. Platformy Technologiczne 2012

45 GridView 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 <asp:SqlDataSource ID="Employees" RunAt="server" ConnectionString="server=localhost;database=northwind;..." SelectCommand="select lastname, firstname, title from employees" /> <asp:GridView DataSourceID="Employees" Width="100%" RunAt="server" /> Platformy Technologiczne 2012

46 Typy komórek GridView Nazwa Opis BoundField Generuje kolumny z tekstem
ButtonField Generuje kolumny z przyciskami (push button, image, or link) CheckBoxField Generuje kolumny z polem wyboru dla typu Bool CommandField Generuje kontrolki dla wyboru i edycji danych w GridView HyperLinkField Generuje kolumny z łączami ImageField Generuje kolumny z obrazkami TemplateField Generuje kolumny z użyciem szablonów HTML Platformy Technologiczne 2012

47 Typy komórek GridView <asp:SqlDataSource ID="Employees" RunAt="server" ConnectionString="server=localhost;database=northwind;..." SelectCommand="select photo, lastname, firstname, title from employees" /> <asp:GridView DataSourceID="Employees" Width="100%" RunAt="server" AutoGenerateColumns="false" > <Columns> <asp:ImageField HeaderText="" DataField="photo" /> <asp:TemplateField HeaderText="Name"> <ItemTemplate> <%# Eval ("firstname") + " " + Eval ("lastname") %> </ItemTemplate> </asp:TemplateField> <asp:BoundField HeaderText="Title" DataField="title" /> </Columns> </asp:GridView> Platformy Technologiczne 2012

48 Kontrolki źródła danych
Zapełnienie kontrolek danymi poprzez wiązanie nie bezpośrednio z kolekcją danych, ale z kontrolką do obsługi źródła danych Nazwa Przeznaczenie 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) Platformy Technologiczne 2012

49 SqlDataSource 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 <asp:SqlDataSource ID="Titles" RunAt="server" ConnectionString="server=localhost;database=pubs;integrated security=true" SelectCommand="select title_id, title, price from titles" /> <asp:DataGrid DataSourceID="Titles" RunAt="server" /> Platformy Technologiczne 2012

50 SqlDataSource 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 Platformy Technologiczne 2012

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

52 ObjectDataSource Nazwa Opis TypeName Typ komponentu (nazwa klasy)
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 Nazwa Opis TypeName Typ komponentu (nazwa klasy) SelectMethod Metoda komponentu wykonująca zapytanie typu select InsertMethod UpdateMethod DeleteMethod EnableCaching Włą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 Platformy Technologiczne 2012

53 ObjectDataSource 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 Nazwa Opis InsertParameters Parametry dla InsertMethod UpdateParameters Parametry dla UpdateMethod DeleteParameters Parametry dla DeleteMethod SelectParameters Parametry dla SelectMethod CacheDuration Czas przetrzymywania danych w pamięci podręcznej (sekundy) SqlCacheDependency Zależność Cache na określonym elemencie bazy danych Platformy Technologiczne 2012

54 Zarządzanie stanem 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, ... Platformy Technologiczne 2012

55 Typy zarządzania stanem
Serwer Klient 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 Platformy Technologiczne 2012

56 Obiekty zarządzania stanem
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. Platformy Technologiczne 2012

57 Zapamiętywanie stanu kontrolki
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 <input type="hidden" name=„_VIEWSTATE" value="dDwtMTA4MzE0MjEwNTs7Pg==" /> Page EnableViewState="False" %> <asp:ListBox id="ListName" EnableViewState="true" runat="server"> </asp:ListBox> Platformy Technologiczne 2012

58 Dostęp do stanu serwera
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 Platformy Technologiczne 2012

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 <sessionState mode="SQLServer" sqlConnectionString="data source=SQLServerName; Integrated security=true" /> Platformy Technologiczne 2012

60 Cookies 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"]; Platformy Technologiczne 2012

61 Sesje cookieless 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 <SessionState> pliku Web.config cookieless = true <sessionState cookieless="true" /> Platformy Technologiczne 2012


Pobierz ppt "Platformy Technologiczne ASP.NET"

Podobne prezentacje


Reklamy Google