710 likes | 728 Views
Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5. Prowadzący: Jarosław Kurek kurekj@iem.pw.edu.pl. Agenda. I Przypomnienie architektury .NET II Podstawy witryny internetowej III Walidacja IV Dane i dostęp do danych. I. Architektura platformy .NET. I. Architektura platformy .NET.
E N D
Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5 Prowadzący: Jarosław Kurek kurekj@iem.pw.edu.pl
Agenda • I Przypomnienie architektury .NET • II Podstawy witryny internetowej • III Walidacja • IV Dane i dostęp do danych
I. Architektura platformy .NET • Nowości w ASP.NET 2.0 • Ponad 40 nowych kontrolek w porównaniu z 1.1 • Strony wzorcowe (Master Pages) • Motywy graficzne (Themes) • mechanizmy autoryzacji, ról i konfiguracji, (ASP.NET Membership Provider). • Kontrolki Data source • Kontrolki Web Parts • Profile użytkownika (Profiles)
I. Architektura platformy .NET • Nowości w Framework 3.0 • WPF (Windows Presentation Foundation) • WCF (Windows Communication Foundation) • WF (Windows Workflow Foundation) • Skok z ASP.NET 2.0 -> ASP.NET 3.5 bo: • Framework 3.0 nie wprowadził nowego CLR • Framework 3.0 nie wprowadził nowego ASP.NET
I. Architektura platformy .NET • Nowości w ASP.NET 3.5 • LINQ (Language Integrated Query) • ASP.NET AJAX • Korzysta z silnika ASP.NET 2.0 • SilverLight • Zestawy algorytmów kryptograficznych • Korzysta nawet z katalogu ASP.NET podczas „cachowania” C:\WINDOWS\Microsoft.NEt\Framework\v2.0.50727\Temporary ASP.NET Files
Framework 4.0 (wkrótce) Więcej na posterze pod linkiem PlakatNETFX4.pdf
I. Architektura platformy .NET • Nowości w Visual Studio .NET 2008 • Projectless vs project-based • Wybór wersji ASP.NET 2.0/3.5 (multitargeting) • Łatwiejsza obsługa CSS (Cascading Style Sheets)
II. Podstawy witryny internetowej ASP.NET 2.0 • Struktura klasy Page, • Kod z treścią oraz kod ukryty (separacja warstw), • Metody przekierowania do innej strony • Metody przesyłanie danych pomiędzy stronami, • Automatyczny postback (autopostback) • Cykl życiowy strony,
1. Struktura klasy Page • Strona – plik (*.aspx) • Plik *.aspx- „plik z treścią” – wizualna zawartość strony (HTML+kontrolki ASP.NET) • Plik *.aspx.cs (C#) *aspx.vb (VB) – „kod ukryty” –”code behind” • Elementy HTML nie są przetwarzane przez serwer platformy .NET (chyba , że runat =„server”) • Pierwsze żądanie strony- kompilacja JIT platformy .NET klasy użytkownika • Klasa użytkownika wywodzi się z System.Web.UI.Page
1. Struktura klasy Page c.d. • Klasa kompilowana do podzespołu (buforowany w pamięci serwera) • Kolejne żądania – z bufora (brak kompilacji) • Nazwa klasy np. _Default może być różna od nazwy pliku z treścią np. „_Default1.aspx • W pierwszej linijce strony *.aspx - dyrektywa strony:
1. Struktura klasy Page c.d. Właściwości klasy Page 3.5 • Application • AppRelativeVirtualPath • AsyncTimeout • BindingContainer • Buffer • Cache • ClientID • ClientQueryString • ClientScript • ClientTarget • CodePage • ContentType • Controls • Culture • EnableEventValidation • EnableTheming • EnableViewState • EnableViewStateMac
1. Struktura klasy Page c.d. Właściwości klasy Page 3.5 • ErrorPage • Form • Header • ID • IdSeparator • IsAsync • IsCallback • IsCrossPagePostBack • IsPostBack • IsReusable • IsValid • Items • Master • MasterPageFile • Page • Parent • PreviousPage • Request
1. Struktura klasy Page c.d. Właściwości klasy Page 3.5 • Response • ResponseEncoding • Server • Session • SkinID • StyleSheetTheme • Theme • Title • Trace • TraceEnabled • User • Validators • ViewStateEncryptionMode • ViewStateUserKey • Visible
2. Kod z treścią oraz kod ukryty Dwa podejścia pisania stron ASP.NET: • Tylko jeden plik *.aspx • oraz …
2. Kod z treścią oraz kod ukryty Dwa podejścia pisania stron ASP.NET: • Dwa pliki powiązane (*.aspx i *.aspx.cs- C#) Plik z treścią: JedenPlik.aspx Plik ukryty: DrugiPlik.aspx.cs
2. Metody przekierowania Cztery główne metody: • HyperLink – wartość właściwości NavigateURL, ( bez ponowengo zapytania serwera) • Metoda Server.Transfer – klasa HttpServerUtility, przerywa przetwarzanie bieżącej strony i przetwarza nową (brak w historii przeglądarki + adres pozostaje stary) • Metoda Response.Redirect – klasa HttpResponse ( bez ponownego zapytania serwera) • Mechanizm Cross-Page-Posting (PostBackURL) - nowość
2. Metody przekierowania Różnica pomiędzy Response.Redirect i Server.Transfer
4.Metody przesyłanie danych pomiędzy stronami Przykład zapisu wartości kontrolek za pomocą stanu widoku - ViewState
4.Metody przesyłania danych pomiędzy stronami Przykład zapisu wartości kontrolek za pomocą stanu widoku - ViewState W przypadku klas własnych, należy dodać [Serializable] !!!
4.Metody przesyłanie danych pomiędzy stronami cd. Przykład przekazania zmiennych za pomocą metody GET - QueryString Page.aspx Test.aspx
4.Metody przesyłanie danych pomiędzy stronami Przykład zapisu wartości kontrolek za pomocą ciasteczek (Cookies) - informacji jawne - Konieczny using System.Net; Odczyt cookie Tworzenie cookie Usuwanie cookie
4.Metody przesyłanie danych pomiędzy stronami -SESJA • Zamknięci sesji, przekroczenie limitu czasu • Jeżeli Cookie wyłączony, SessionID w URL • Wywołuje zdarzenia sesji: Session_Start i Session_End, obłsuga zdarzeń w global.asax • Sesja korzysta z 120 bit identyfikatora SessionID • Konfiguracja stanu sesji nadzorowana –dyrektywa strony EnableSesionState: true,false,readonly • Stan sesji w pamięci serwera jako cześć procesu asp.net
4.Metody przesyłanie danych pomiędzy stronami -Sesja Trzy metody magazynowania stanu sesji: SessionID : -w cookies -w URL Stan sesji: implementowany za pomocą właściwości Contents collection klasy HttpSessionState
4.Metody przesyłanie danych pomiędzy stronami -Sesja Trzy metody magazynowania stanu sesji: • Konfiguracja typu stanu sesji (mode) w web.config: • mode=off – stan sesji wyłączony • mode=InProc – w procesie na serwerze lokalnym (default) • mode=StateServer – stan sesji na serwerze zdalnym, konieczny wpis stateConnectionString • mode=SqlServer, stan sesji na serwerze SQL, konieczny wpis sqlConnectionString • mode=Custom, pozwala na określenie własnego dostawcy
4.Metody przesyłanie danych pomiędzy stronami –Sesja • Przykład użycia sesji w trybie InProc z wymuszonym odrzuceniem plików cookies jako magazynu SessionID Klasa użytkownia class1 Ustawieni trybu W web.config Obsługa zapisu i odtworzenie Obiektu klasy class1
4.Metody przesyłanie danych pomiędzy stronami –stan sesji Wynik kodu z poprzedniego slajdu: Wymuszony brak obsługi cookies
4. Metody przesyłanie danych pomiędzy stronami –stan aplikacji • Stan aplikacji istnieje do momentu restartu serwera • Plik global.asax zawiera globalny kod całej aplikacji i zawiera obsługę zdarzeń: Application_Start, Application_End, Application_Error • W stanie aplikacji współużytkowane są zmienne globalne za pomocą słownika obiektów • Dzięki właściwości Application klasy HttpApplication
4. Metody przesyłanie danych pomiędzy stronami –stan aplikacji • Przykład użycia - licznik żądań Niepoprawny kod Poprawny kod
4. Nowość w ASP.NET 2.0mechanizm Cross-Page-Posting • Otrzymywanie danych z poprzedniej strony • Dla kontrolki (np. Button) ustawiamy PostBackUrl lub przekierowanie z udziałem servera: Server.Transfer • Nie działa z Response.Redirect – bez udziału serwera. • Kontrolki z poprzedniej strony dostępne dzięki właściwości Page.PreviousPage
4. Nowość w ASP.NET 2.0mechanizm Cross-Page-Posting Przykład użycia: Bez deklaracji dyrektywy Późne wiązanie Użycie deklaracji dyrektywy Użycie Akcesora na stronie CrossPagePostinaspx.aspx
5. AutoPostback • Automatyczny postback możliwy jest przez ustawienie właściwości kontrolki na Autopostback na True • Gdy kontrolka zmieni stan (u klienta) wychwytuje to zdarzenie onchange w javascript • generuje się automatycznie funkcja function __doPostBack(eventTarget, eventArgument) • Zapisane w postaci pól ukrytych przesyłane są dane dotyczące kontrolki: • <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> • <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
III Znajdowanie i usuwanie błędów 1. Śledzenie wykonywania programu 2. Debugowanie programu 3. Obsługa błędów
III Znajdowanie i usuwanie błędów -Śledzenie wykonywania programu • Poprzednio (ASP 3.0) Response.Write(); • w ASP.NET 2.0 śledzenie na poziomie: Request Details, Time of Request, Request Type, Status Code, Trace Information, Control Tree własne komentarze: Trace.Write(„Kategoria”,”Komunikat ostrzeżenia”,wyjątek) Trace.Warn…. – kolor czerwony • Na poziomie strony (w dyrektywie Trace=„true”): • Na poziomie aplikacji (wpis w web.config): wywołujemy: http://mojastrona/trace.axd
III Znajdowanie i usuwanie błędów -Śledzenie wykonywania programu na poziomie strony
III Znajdowanie i usuwanie błędów -Śledzenie wykonywania programu na poziomie aplikacji
IIIZnajdowanie i usuwanie błędów debugowanie aplikacji • Właściwości punktu kontrolnego (zatrzymuje wykonanie programu w wyznaczonym wierszu): • Location – ustawia punkt kontrolny w wyznaczonym wierszu, • Condition – ustawia warunek is true/has change • Hit Counter – zatrzymuje wykonywanie programu po osiągnięciu danej liczby powtórzeń kodu • Filter- punkt stopu dla określonych procesów, wątków, itp. • When Hit – uruchomienie np. makr w momencie stopu
III Znajdowanie i usuwanie błędów debugowanie aplikacji – obsługa błędów • Cel – przechwycenie błędu zanim aplikacja wyśle klientowi podstawową stronę błędu • Konfiguracja obsługi błędów- plik web.config dla całej aplikacji • W przypadku przechwycenia błędu o danych kodzie następuje przekierowanie • mode: true, false, RemoteOnly • Dla konkretnej strony „ErrorPage”:
IV Walidacja danych • Do sprawdzanie poprawności danych wprowadzonych przez użytkownika: • Nr karty kredytowej, • Kodów pocztowych, • Nr Pesel, NIP, ISBN • Adres email, … • W ASP.NET wykorzystujemy kontrolki do sprawdzania poprawności wejściowych danych użytkownika. • Przeglądarki uplevel >=IE 4.0, .Net – u klienta, • Przeglądarki downlevel <IE 4.0,.Net – na serwerze • Wymuszenie walidacji po stronie serwera:
IV Walidacja danych • kontrolki do sprawdzania poprawności wejściowych danych użytkownika: • RequiredFieldValidator – wymagane dane • RangeValidator – wartość w podanym zakresie • CompareValidator – porównanie z inną wartością lub wartością kontrolki • RegularExpressionValidator – walidacja za pomocą wyrażeń regularnych • CustomValidator – własne metody do sprawdzania poprawności danych wejściowych (u klienta –javascript, na serwerze np.c#) • ValidationSummary- podsumowuje błędy
IV Walidacja danych - RequiredFieldValidator • Gwarantuje wpisanie wartości do kontrolki nadzorowanej oraz może wymagać zmiany domyślnej wartości przez użytkownika • Właściwość ControlToValidate – wskazuje kontrolkę, w którą będzie nadzorował, • Właściwość InitialValue – jeżeli wartość w kontrolce nadzorowanej=InitialValue ->blad • SetFocusOnError=true - ustawia skupienie na pierwszą kontrolkę z błędem • Można skorzystać programowo z właściwości Page.IsValid • ErrorMessage - komunikat błędu
IV Walidacja danych – ValidationSummary • Podsumowuje wszystkie błędy w jednej kontrolce i wyświetla komunikaty o błędach • HeaderText- Nagłówek w kontrolce podsumowującej • ShowSummary=true, pokazuje informacje o błędach w HTML’u • ShowMessageBox=true, pokazuje informacje o błędach w oknie informacyjnym Javascript • DisplayMode=0 –BulletList • DisplayMode=1 –List • DisplayMode=2 –SingleParagraph
IV Walidacja danych – CompareValidator • Porównuje wartości w kontrolce nadzorowanej z kryteriami narzuconymi • Stosowana np. do weryfikacji wpisania ponownie hasła w formularzu rejestracyjnym • Type np. integer, string, data... • Operator, GreaterThan, Equals, DataTypeCheck – sprawdza typ danych • ValueToCompare – wartość stała stosowana w kryterium • ControlToCompare- zamiast ValueToCompare pobiera wartość do porównania z wybranej kontrolki
IV Walidacja danych – RangeValidator • Kontroluje zakres danych wejściowych: liczb, znaków lub dat • MinimumValue, MaxiumumValue • Atrybut Type: Integer ,String, Currency, Date, Double • Wszystkie kontrolki stosowane do walidacji można grupować poprzez właściwość ValidationGroup - przycisk wysyłający formularz musi mieć tą samą wartość ValidationGroup
IV Walidacja danych – RegularExpressionValidator • Kontrolka sprawdzająca wprowadzone dane o największych możliwościach- korzysta z wyrażeń regularnych • ValidationExpression – wartość wyrażenia regularnego Np.\d{2}-\d{3} – 02-567 – kod pocztowy • Udogodnienie w VS.NET Edytor Regular Expression Editor
IV Walidacja danych – Custom Validator • Tworzymy własną metodę sprawdzania poprawności która zwraca true lub false • Metoda powinna być zarówno po stronie serwera (downlevel) jak i po stronie klienta (uplevel) • ValidateEmptyText =false- błąd w przypadku braku wartość w kontrolce nadzorowanej- bardzo pomocne • ServerValidator – metoda po stronie serwera • ClientValidationFunction – metoda po stronie klienta