Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5

Podobne prezentacje


Prezentacja na temat: "Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5"— Zapis prezentacji:

1 Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5
22/03/2017 Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5 Prowadzący: Jarosław Kurek Jarosław Kurek Politechnika Warszawska 2007

2 Agenda I Przypomnienie architektury .NET
22/03/2017 I Przypomnienie architektury .NET II Podstawy witryny internetowej III Walidacja IV Dane i dostęp do danych Jarosław Kurek Politechnika Warszawska 2007

3 I. Architektura platformy .NET

4 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)

5 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

6 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\v \Temporary ASP.NET Files

7 Framework 4.0 (wkrótce) Więcej na posterze pod linkiem PlakatNETFX4.pdf

8 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)

9 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,

10 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

11 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:

12 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

13 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

14 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

15 2. Kod z treścią oraz kod ukryty
Dwa podejścia pisania stron ASP.NET: Tylko jeden plik *.aspx oraz …

16 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

17 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ść

18 2. Metody przekierowania
Różnica pomiędzy Response.Redirect i Server.Transfer

19 4.Metody przesyłania danych pomiędzy stronami
Stan Widoku QueryString Cookies Typ danych Wszystkie typy danych (serial.) Łancuch znaków Magazyn danych Pole ukryte w bieżacej stronie Łańcuch URL 1-2KB Komputer klienta (plik tekstowy) Czas życia W bieżącej stronie Tylko jeżeli istnieje URL Ustawiany programowo Wydajność Obciąża transmisje Niezmienna, mały rozmiar danych Typowe użycie Transmisja zmiennych do drugiej strony Wysyłanie np. ID produktu Personalizacja dla stron

20 4.Metody przesyłanie danych pomiędzy stronami
Stan sesji Stan Aplikacji Typ danych Wszystkie typy danych Magazyn danych Pamięć serwera Pamięc serwera Czas życia Domyślnie 20 min, ustawiana programowo Aż do restartu serwera Wydajność Obniża wydajność w przypadku dużej liczby danych, każdy użytkownik posiada kopię sesji!!! Obniża wydajność w przypadku dużej liczby danych Typowe użycie Np. Koszyk w sklepie internetowym Zapisanie globalnych zmiennych

21 4.Metody przesyłanie danych pomiędzy stronami
Przykład zapisu wartości kontrolek za pomocą stanu widoku - ViewState

22 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] !!!

23 4.Metody przesyłanie danych pomiędzy stronami cd.
Przykład przekazania zmiennych za pomocą metody GET - QueryString Page.aspx Test.aspx

24 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

25 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

26 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

27 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

28 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

29 4.Metody przesyłanie danych pomiędzy stronami –stan sesji
Wynik kodu z poprzedniego slajdu: Wymuszony brak obsługi cookies

30 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

31 4. Metody przesyłanie danych pomiędzy stronami –stan aplikacji
Przykład użycia - licznik żądań Niepoprawny kod Poprawny kod

32 4. Nowość w ASP.NET 2.0 mechanizm 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

33 4. Nowość w ASP.NET 2.0 mechanizm 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

34 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="" />

35 6. Cykl życiowy strony

36 III Znajdowanie i usuwanie błędów
1. Śledzenie wykonywania programu 2. Debugowanie programu 3. Obsługa błędów

37 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:

38 III Znajdowanie i usuwanie błędów -Śledzenie wykonywania programu na poziomie strony

39 III Znajdowanie i usuwanie błędów -Śledzenie wykonywania programu na poziomie aplikacji

40 III Znajdowanie i usuwanie błędów debugowanie aplikacji
Start/continue Uruchamia lub kontunuuje wykonywania programu Break All Zatrzymuje wykonywanie programu w aktualnie wykonywanym wierszu Stop Debugging Zatrzymuje usuwanie błędów Restart Zatrzymuje wykonywanie programu i natychmiast uruchamia ponownie Step Into Wchodzi do metody (zagnieżdzenie) Step Over Pomija metodę (brak zagnieżdzenia) Step Out Kończy wykonywanie kodu metody oraz wychodzi z metody i ustawia się w miejscu następnym po wywołaniu metody Toogle Breakpoints Ustawia punkt kontrolny w danym wierszu

41 III Znajdowanie 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

42 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”:

43 IV Walidacja danych Do sprawdzanie poprawności danych wprowadzonych przez użytkownika: Nr karty kredytowej, Kodów pocztowych, Nr Pesel, NIP, ISBN Adres , … 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:

44 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

45 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

46 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

47 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

48 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

49 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} – – kod pocztowy Udogodnienie w VS.NET Edytor Regular Expression Editor

50 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

51 IV Walidacja danych - przykład

52 V. Dane i dostęp do danych
Dostęp do bazy bez używania ADO.NET: Kontrolka SqlDataSource- można podpiąć pod kontrolkę dostępu do bazy LINQ to SQL- definiuje się zapytanie używając C# (lub kontrolka LinqDataSource) Profile – pozwalają na zapis specyficznych bloków danych powiązanych z użytkownikiem bez pisania kodu ADO.NET. Generacja tabel odbywa się przez aspnet_regsql –A p

53 V. Dane i dostęp do danych
.Net framework posiada 4 dostawców (providers): SQL Server provider (7.0 lub wyższa) OLE DB provider- np. dostęp do Excela Oracle provider- 8i lub wyżej ODBC provider Klasy pomocne: Connection – tworzy połączenie Command – do wykonywania komend SQL DataReader – szybki sposób odczyt danych (read only) DataAdapter – wypełnia DataSet, potem możliwy update

54 V. Dane i dostęp do danych
Wiązanie danych (Data Binding) z kontrolką GridView1.DataSource = ds; i GridView1.DataMember = "Employees"; lub GridView1.DataSource = ds.Tables["Employees"]; i ostatecznie GridView1.DataBind();

55 VI. Kontrolki dostępu do danych (Rich Data Controls)
Przegląd i przykłady kontrolek wyświetlania danych GridView, DataList, Repeater, DetailsView, FormView Kontrolka źródeł danych: SqlDataSource – rzadko się stosuje, lepiej przez ADO.NET Przykłady realizowane będą na podstawie bazy danych NorthWind w MSSQL 2005

56 VI. Kontrolki dostępu do danych– GridView
GridView wywodzi się z BaseDataBoundControl podobnie jak AdRotator, DetailsView, FormView, elementy klasy ListControl: CheckBoxList, RadioButtonList, … GridView posiada wiele właściwości: AllowPaging, AllowSorting, AutoGenerateColumns, AutoGenerateDeleteButton, AutoGenerateEditButton, AutoGenerateSelectButton, DataKeyNames, Datasource, PageCount, PageSize, … Korzystamy albo z klikania w tag inteligentny –wizard, albo kodujemy w kodzie z treścią.

57 VI. Kontrolki dostępu do danych– GridView zarządzanie tabelą Customers

58 VI. Kontrolki dostępu do danych– GridView zarządzanie tabelą Customers
Odzwierciedlenie „wizarda” w kodzie z treścią Tag inteligentny: Enable Paging, Enable Sorting, Autoformat – w parę minut: gotowa strona z stronicowaniem i sortowaniem

59 VI. Dane i dostęp do danych – GridView zarządzanie tabelą Customers
Zarządzanie widokiem albo z kodu z treścią, albo „inteligentny tag”, najlepiej wyłączyć AutoGenerateColumns=false, aby samemu zarządzać kolumnami z GridView AutoGenerateColumns=false Ręczne zarządzanie kolumnami

60 VI. Dane i dostęp do danych – GridView zarządzanie tabelą Customers – insert, update, delete
Ponowna konfiguracja SqlDataSource dla GridView i wybranie zakładki advanced: Enabled select Enabled edit Enabled delete

61 Przykład zarządzania tabelą Customers:
VI. Kontrolki dostępu do danych– GridView zarządzanie tabelą Customers – insert, update, delete Przykład zarządzania tabelą Customers:

62 VI. Kontrolki dostępu do danych– GridView przekazanie parametrów do zapytania select
Cel – Wyświetlić listę zamówień w kontrolce GridView dla wybranego klienta w innej kontrolce GridView Dodajemy nową kontrolkę GridView i podłączamy nową kontrolkę SqlDataSource z dostepem do tabelki Orders. Wybieramy przycisk „where” w oknie dialogowym i dostosowujemy zapytanie do wyświetlania wszystkich zamówień tylko do wybranego klienta z pierwszej kontrolki Gridview

63 VI. Kontrolki dostępu do danych– GridView

64 VI. Kontrolki dostępu do danych– DataList
Służy do tworzenia list danych na podstawie 7 szablonów: Szablony służą do określania zawartości i wyglądu EditItemTemplate – dotyczy wyglądu edycji ItemTemplate – domyślny wygląd dla zawartości SelectedItemTemplate- wygląd zaznaczonego elementu FooterTemplate – dotyczy wyglądu stopki HeaderTemplate – dotyczy wyglądu nagłówka AlternatingItemTemplate – dotyczy itemTemplate SeparatorTemplate – wygląd separatorów

65 VI. Kontrolki dostępu do danych– DataList
Zasada podpinania źródła danych identyczna jak poprzednio RepeatDirection: Horizontal, Vertical RepeatColumns: maksymalna liczba kolumn

66 VI. Kontrolki dostępu do danych DataList Edycja danych –przycisk Edit
Należy skopiować sekcję ItemTemplate do EditItemTemplate Zmienić kontrolkę Label na TextBox (find and replace) Dodać przycisk Edit oraz CommandName=„edit” Dodać przycisk Cancel oraz CommandName=„cancel” Dodać przycisk Update oraz CommandName=„update” Dodać obsługę zdarzeń do kontrolki DataList: UpdateCommand, CancelCommand, EditCommand Dodać procedurę modyfikacji danych wraz z parametrami - UpdatedQuery

67 VI. Kontrolki dostępu do danych–Repeater
Kontrolka Repeater jest kontenerem, służącym do przetwarzania kolejnych pozycji listy danych Nie posiada żadnych styli, całe formatowanie spoczywa na programiście (kod z treścią)

68 VI. Kontrolki dostępu do danych–Repeater
ItemTemplate – Szablon ten jest konieczny dla kontrolki Repeater. W wyniku działania tego szablonu każdy wiersz danych wyświetlany jest oddzielnie. AlternatingItemTemplate – szablon taki sam jak ItemTemplate, ale przetwarzany jest oddzielie dla każdego wiersza danych. Umożliwia to określanie ustawień stylu dla poszczególnych wierszy. HeaderTemplate oraz FooterTemplate – szablony te przetwarzają kod HTML bezpośrednio przed i po wyświetleniu wszystkich wierszy danych. SeparatorTemplate – szablony te przedstawiają elementy znajdujące się pomiędzy poszczególnymi wierszami danych Szablon AlternatingItemTemplate umieszczony po ItemTemplate umożliwia formatowanie wierszy dla co drugiego wiersza.

69 VI. Kontrolki dostępu do danych–FormView
Kontrolka alternatywna wobec DetailsView Całkowicie zbudowana z szablonów Większe możliwości sterowania jej wyglądem i działaniem Musi dostawać z zewnątrz informacje o id rekordu, który ma wyświetlić Nie ma sortowania i stronicowania, ponieważ wyświetla tylko jeden rekord, bez przełączania na inny –tylko programowo.

70 VI. Kontrolki dostępu do danych–DetailsView
Wyświetla tylko jeden rekord w danym momencie Pozwala na automatyczne utworzenie przycisków do usuwania, modyfikacji oraz dodawania rekordów Zasada tworzenia podobna jak w pozostałych przykładach

71 Ćwiczenie na zaliczenie
Przekształcić formularz podany na zaliczenie części I do postaci zarządzalnej na podstawie bazy danych z walidacją danych: Walidacja danych Wymienione w formularzu dane wrzucamy do bazy Dane edytujemy, Dane usuwamy. Przykłady przesyłania danych pomiędzy stronami: - cookies, - stan widoku, - stan sesji - stan aplikacji -querystring Przykłady użycia kontrolek dostępu do danych: GridView, DataList, Repeater, DetailsView, FormView


Pobierz ppt "Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5"

Podobne prezentacje


Reklamy Google