Upload
delano
View
159
Download
3
Embed Size (px)
DESCRIPTION
Platformy Technologiczne ASP.NET. mgr inż. Tomasz Gawron. 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, - PowerPoint PPT Presentation
Citation preview
PLATFORMY TECHNOLOGICZNEASP.NET
mgr inż. Tomasz Gawron
Platformy Technologiczne 2012
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
Klient Serwer
SYN()
SYN / ACK()
ACK()
żądanie()
ACK()
odpowiedź()
ACK()
FIN()
ACK()
FIN()
ACK()
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
Request Line • Method• Request URI• HTTP Version Info
Response Line• HTTP Version Info• Status Code• Description
Headers
Message BodyCRLF
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. 400 - nieprawidłowe zapytanie, 403 - dostęp do zasobu zabroniony, 404 - 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.NETApplicationsIIS
Asp.Net Engine
.NETFramework
HTTP
Platformy Technologiczne 2012
8
Pliki konfiguracyjne i katalogi 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)
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 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 Form1.aspx.vbor Form1.aspx.cs
<tags> <tags>
codecode
Separate filesSingle 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
HTML Block
Other Objects
Server Control
HTML BlockHTML\Text
<p>This is some text</p><a href="mypage.aspx">link text</a><img src="mypic.gif align="left" />
<input type="text" name="mytext" size="40" runat="server" /><input type="submit" name="gobtn" value="Go" runat="server" />
<%@Import Namespace="System.Data" %><%@Import Namespace="System.XML" %>
<%@Page Language="C#" Debug="True" ...="etc" %>Page Object
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
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
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ęć
ASPXFile
Request
ASPX
EngineParse
Gen’dPageClass
Generate
Response
RequestInstanti
ate
Response
Code-behindclass
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)
19
Platformy Technologiczne 2012
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 <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 PostbackRound 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 kontrolekInit
Load
PreRender
SaveViewState
Render
Dispose
Inicjalizacja, dodanie do drzewa
Wykonanie kodu użytkownikaCreateChildControls() sprawdza renderowanie dzieci
Zapisanie aktualnego stanu
Renderowanie odpowiedziEach control renders itself to the ResponseStrony 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
Platformy Technologiczne 2012
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 aplikacjiZdarzenie OpisBeginRequest Zgłaszane w momencie rozpoczynania obsługi żądaniaAuthenticateRequest Zgłaszane gdy żądanie HTTP gotowe jest do uwierzytelnienia AuthorizeRequest Zgłaszane gdy żądanie HTTP gotowe jest do autoryzacjiResolveRequestCache 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
żądaniemPreRequestHandlerExecute Zgłaszane bezpośrednio przed rozpoczęciem realizacji procedury obsługi żądań przez
HTTP handlerPostRequestHandlerExecute Zgłaszane bezpośrednio po zakończeniu realizacji procedury obsługi żądań przez
HTTP handlerReleaseRequestState 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.asaxusing 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{ /// <summary> /// Required designer variable. /// </summary>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){}
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“/></siteMapNode>
</siteMapNode></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
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: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>
<asp:TextBox id="txtName" runat="server" />
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 Propertyprivate 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”
Strona wzorcowa
ContentPlaceHolder1
ContentPlaceHolder2
Strona zawartości
Content1
Content2+ =Strona w
przeglądarce
ContentPlaceHolder1
ContentPlaceHolder2
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<%@ Master %>
<asp:ContentPlaceHolder ID="Main" RunAt="server" />
<%@ Page MasterPage- File="Site.master" %>
<asp:Content ContentPlaceHolderID= "Main" RunAt="server" />
</asp:Content>
Site.master default.aspx http://.../default.aspx
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
<%@ Page Theme="BasicBlue">
Przypisanie motywu do strony<configuration> <system.web> <pages theme="BasicBlue" /> </system.web></configuration>
Przypisanie motywu do aplikacji
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órejprzyisujemy wartość
KolumnaTabela ź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
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 loadingDataTable __dataTable;__dataTable = __dataHandler.Load();
// data bindingDDList.DataSource = __dataTable;DDList.DataTextField = "Name"; DDList.DataValueField = "empID";DDList.DataBind();
Platformy Technologiczne 2012
44
Kontrolki wyświetlające dane
Nazwa OpisGridView 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 OpisBoundField Generuje kolumny z tekstemButtonField Generuje kolumny z przyciskami (push button,
image, or link)CheckBoxField Generuje kolumny z polem wyboru dla typu BoolCommandField Generuje kontrolki dla wyboru i edycji danych w
GridViewHyperLinkField Generuje kolumny z łączamiImageField Generuje kolumny z obrazkamiTemplateField 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 PrzeznaczenieSqlDataSource Łączy kontrolki z bazami SQLAccessDataSource
Łączy kontrolki z bazami Access
XmlDataSource Łączy kontrolki z danymi XMLObjectDataSource
Łą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 danychNazwa 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 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, email 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 KlientApplication 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
<%@ Page EnableViewState="False" %><asp:ListBox id="ListName" EnableViewState="true"
runat="server"></asp:ListBox>
<input type="hidden" name=„_VIEWSTATE" value="dDwtMTA4MzE0MjEwNTs7Pg==" />
Platformy Technologiczne 2012
58
Dostęp do stanu serwera Dostęp do informacji:
PageStatezapis: ViewState["counter"] = counterVal;odczyt: int counterVal = (int) ViewState["counter"];
SessionStatezapis: Session["cart"] = shoppingCart;odczyt: DataTable shoppingCart = (DataTable) Session["cart"];
ApplicationStatezapis: 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
Platformy Technologiczne 2012
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=127.0.0.1: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
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
<sessionState cookieless="true" />