ASP.NET. Plan wykładu. Wykład prowadzi: Mikołaj Morzy. SSI - Przykład. Server Side Includes (SSI)



Podobne dokumenty
Infrastruktura aplikacji WWW

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Współpraca aplikacji WWW z bazami danych

Logika prezentacji II

Bazy danych 2. Wykład 6

Plan wykładu. Tworzenie programów dla platformy.net. Kontrolki list. Kontrolki weryfikujące. Wiązanie danych. Dostęp do danych

Architektura MVC w ASP.NET. Autor wykładu: Marek Wojciechowski

Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Infrastruktura aplikacji WWW I

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Ćwiczenie 8. Kontrolki serwerowe

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Wybrane działy Informatyki Stosowanej

Wykład 4. Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy. Bazy danych 2

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Zaawansowane aplikacje internetowe - laboratorium

Studia podyplomowe. Programowanie na platformie Microsoft Visual Studio.NET

Aplikacje WWW Wprowadzenie

Web frameworks do budowy aplikacji zgodnych z J2EE

Szczegółowy opis zamówienia:

1 90 min. Aplikacje WWW Harmonogram spotkań, semestr zimowy (studia stacjonarne)

z użyciem kontrolek ASP.NET

ZAPOZNANIE SIĘ ZE SPOSOBEM PRZECHOWYWANIA

Podstawy programowania. Wprowadzenie

Aplikacje WWW - laboratorium

Technologie internetowe ASP.NET Core. Paweł Rajba

1 Wprowadzenie do J2EE

Oracle Application Express -

Aplikacje Internetowe, Servlety, JSP i JDBC

Wykład 12. ADO.NET model bezpołączeniowy

ADO.NET. Obiektowy dostęp do danych. Przygotował Jakub Światły

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Kurs WWW ASP.NET. Paweł Rajba.

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Narzędzia 4. dr inż. Tadeusz Jeleniewski

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Programowanie obiektowe

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Praca z bazą danych. Rysunek 1. Projekt tabeli UZYTKOWNIK bazy KURSY

Programowanie obiektowe

Bezpieczne strony WWW dla edukacji, organizacji non-profit i uŝytkowników indywidualnych.

Programowanie komponentowe 5

Aplikacja internetowa vs Strona Internetowa. Aplikacja internetowa, (ang.) web application zwana również aplikacją webową, to program komputerowy,

Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Wykład 10 Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy

Środowiska i platformy programistyczne

Web frameworks do budowy aplikacji zgodnych z J2EE. Jacek Panachida

Projekt: Mikro zaprogramowane na sukces!

Wybrane działy Informatyki Stosowanej

Projektowani Systemów Inf.

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Praktyczne wykorzystanie mechanizmów zabezpieczeń w aplikacjach chmurowych na przykładzie MS Azure

Java wybrane technologie

Wybrane działy Informatyki Stosowanej

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

Wywoływanie metod zdalnych

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Instrukcja laboratoryjna cz.3

ActiveXperts SMS Messaging Server

Aplikacje internetowe i rozproszone - laboratorium

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

OpenLaszlo. OpenLaszlo

Aplikacje WWW - laboratorium

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE. Scenariusz lekcji. 2.1 Wiadomości: 2.2 Umiejętności: Scenariusz lekcji

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Część I Dostęp do danych oraz moŝliwości programowe (silnik bazy danych)

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Dostępne grupy kontrolek. Podstawowe kontrolki Web

Aplikacje WWW - laboratorium

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Przekazywanie danych. Dane zewnętrzne mogą pochodzić z róŝnych źródeł:

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia)

Języki i paradygmaty programowania - 1

Wybrane działy Informatyki Stosowanej

Bazy danych i strony WWW

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

I.Wojnicki, Tech.Inter.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Tworzenie i wykorzystanie usług sieciowych

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Oracle PL/SQL. Paweł Rajba.

Transkrypt:

Wykład prowadzi: Mikołaj Morzy ASP.NET Plan wykładu Server Side Includes (SSI) Active Server Pages (ASP) ASP.NET Dostęp do baz danych w aplikacjach ASP.NET Infrastruktura w aplikacjach ASP.NET Web Forms Logika prezentacji Logika prezentacji II () Server Side Includes (SSI) SSI - Przykład Najprostsza i najstarsza z technologii server pages Proste skryptowe dyrektywy zagnieŝdŝone w HTML uruchamiane na serwerze i zastępowane wynikiem Składnia: <!--#directive parameter=value --> Przykłady dyrektyw: include włączenie pliku exec uruchomienie programu echo wyświetlenie wartości zmiennej środowiskowej Problemy bezpieczeństwa powitanie.shtml <HTML><BODY> <!--#include file="naglowek.html"--> Jesteś <!--#exec cgi="/cgi-bin/counter.cgi"--> gościem na stronie. Korzystasz z przeglądarki <!--#echo var="http_user_agent" -->. </BODY></HTML> Logika prezentacji II () Logika prezentacji II ()

Active Server Pages (ASP) ASP - Przykłady Technologia Microsoft dla serwera IIS Oparta o interpretowane po stronie serwera wstawki skryptowe dynamicznie generujące HTML Domyślnie skrypty w VBScript, alternatywą JScript Skrypty odwołują się do predefiniowanych obiektów, reprezentujących funkcjonalność dynamicznych stron WWW ASP wprowadziło składnię dla server pages : <% %>, <%= %>, <%@ %> Następcą ASP jest ASP.NET pierwsza.asp <%@ language="vbscript"%> <HTML><BODY> <% response.write("hello") %> <%="World!"%> </BODY></HTML> druga.asp <HTML><BODY> Hello <%= request.querystring("imie") %>! </BODY></HTML> Logika prezentacji II () Logika prezentacji II () Platforma Microsoft.NET.NET Framework.NET Framework umoŝliwia tworzenie i uruchamianie: aplikacji desktopowych, aplikacji WWW, Web Services Microsoft Visual Studio zintegrowane środowisko programistyczne (IDE) wizualno-zdarzeniowe projektowanie aplikacji duŝa produktywność programisty Serwery: Windows Server 00, Microsoft SQL Server Oprogramowanie klienckie: WindowsXP, WindowsCE, OfficeXP UmoŜliwia tworzenie i uruchamianie nowoczesnych aplikacji i Web Services Wspiera ponad 0 języków programowania najwaŝniejsze to: Visual Basic.NET, C#, C++, J# Podstawowe cele.net Framework: zwiększenie produktywności twórców aplikacji łatwość tworzenia bezpiecznych i wydajnych aplikacji łatwość instalacji aplikacji i administrowania nimi Składniki.NET Framework: Common Language Runtime (CLR) biblioteki klas Logika prezentacji II (7) Logika prezentacji II (8)

Architektura.NET Framework ASP.NET Web Services Web Forms Windows Forms ASP.NET Dostęp do danych (ADO.NET), biblioteki XML Podstawowe biblioteki klas: I/O, łańcuchy znaków, sieć, Wspólne środowisko uruchomieniowe (CLR) Technologia tworzenia aplikacji internetowych.net dynamicznych stron WWW Web Services Zalety w porównaniu z klasycznym ASP moŝliwość korzystania ze wszystkich języków obsługiwanych przez CLR kod kompilowany - wydajność i wykrywanie błędów separacja HTML i kodu programu (Code Behind) Web Forms programowanie wizualno-zdarzeniowe Logika prezentacji II (9) Logika prezentacji II (0) ASP.NET Przykład aplikacji ASP.NET Przykład (C#) witaj.aspx <%@ Page Language="c#" %> <script runat="server"> void submitbutton_click(object sender, EventArgs e) { powitanie.text = "Witaj "+im.text+"!"; } </script> <html><body> <form runat="server"> Podaj imię: <asp:textbox id="im" runat="server"></asp:textbox> <asp:button id="submitbutton" onclick="submitbutton_click" runat="server" Text="Powitaj"></asp:Button> <br><asp:label id="powitanie" runat="server"></asp:label> </form> </body></html> Logika prezentacji II () Logika prezentacji II ()

ASP.NET Przykład (VB) C# czy Visual Basic? witaj.aspx <%@ Page Language="vb" %> <script runat="server"> Sub submitbutton_click(byval sender As Object, _ ByVal e As System.EventArgs) powitanie.text = "Witaj "+im.text+"! End Sub </script> <html><body> <form runat="server"> Podaj imię: <asp:textbox id="im" runat="server"></asp:textbox> <asp:button id="submitbutton" onclick="submitbutton_click" runat="server" Text="Powitaj"></asp:Button> <br><asp:label id="powitanie" runat="server"></asp:label> </form> </body></html> Logika prezentacji II () C# (C sharp) wprowadzony razem z.net nowoczesny i preferowany język dla.net atrakcyjny dla programistów C++ i Java Visual Basic.NET Visual Basic rozwinięty do w pełni obiektowego języka programowania na poziomie C++ i C# atrakcyjny dla programistów doświadczonych w tworzeniu graficznych aplikacji dla Windows w VB Logika prezentacji II () Porównanie C# i Java Rodzaje kontrolek ASP.NET Kwestionowana potrzeba opracowania C# Podobieństwa koncepcyjne, C# i Java to następcy C++ uproszczenie, kod pośredni W C# dostępne mechanizmy C++ niedostępne w Javie np. przeciąŝanie operatorów RóŜnice w organizacji kodu kilka klas w jednym pliku, koncepcja assembly Inne kwalifikatory dostępu ( internal dla assemblies) Drobne róŝnice składniowe we wspólnych konstrukcjach Logika prezentacji II () HTML Controls otoczki dla elementów HTML umoŝliwiają programowy dostęp do elementów HTML tworzone poprzez dodanie do znaczników HTML atrybutu runat= server Web Controls preferowany, rozszerzalny zestaw łatwych do oprogramowania kontrolek kontrolki proste i złoŝone elementy interfejsu i kontrolki walidacyjne tworzone przez specjalne znaczniki <asp: > zawsze z atrybutem runat= server Logika prezentacji II ()

HTML Controls i Web Controls - Przykłady Wiązanie kontrolek z danymi (/) HTML Controls <INPUT id="text" type="text" name="text" runat="server"> Do wiązania kontrolek ze źródłami danych w sposób deklaratywny w ASP.NET słuŝy konstrukcja <%#%> Wartościowanie wyraŝenia i umieszczenie zawartości ze źródła w kontrolce w momencie wywołania DataBind() Web Controls <asp:textbox id="textbox" runat="server"></asp:textbox> <asp:calendar id="calendar" runat="server"></asp:calendar> <script language="c#" runat=server> </script> <h><asp:label id="mytitle" runat="server"> <%# title %></asp:label></h> <asp:datalist id="mylist" runat=server> <ItemTemplate> Nazwa: <%# Container.DataItem %> </ItemTemplate> </asp:datalist> Logika prezentacji II (7) Logika prezentacji II (8) Wiązanie kontrolek z danymi (/) Zmienne sesyjne w ASP.NET <script language="c#" runat=server> string title = "Państwa:"; void Page_Load(Object sender, EventArgs e) { } MyTitle.DataBind(); ArrayList items = new ArrayList(); items.add("polska"); items.add("niemcy"); items.add("słowacja"); MyList.DataSource = items; MyList.DataBind(); </script> Logika prezentacji II (9) UmoŜliwiają współdzielenie danych między stronami Obiekt Session reprezentuje dane uŝytkownika UŜytkownik rozpoznawany poprzez cookie lub URL sesja.aspx <%@ Page Language="c#" %> <script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Session["Imie"] = "Marek"; } </script> <html><body> Ustawiam zmienną sesyjną "Imie" na "Marek".</body></html> <%@ Page Language="c#" %> sesja.aspx <html><body> Zmienna sesyjna "Imie" ma wartość "<%= Session["Imie"] %>". </body></html> Logika prezentacji II (0)

Separacja kodu Code Behind Code Behind Przykład (/) Technika separacji kodu oparta o dziedziczenie strony ASP.NET są klasami! strona.aspx <%@ Page Language="c#" Src="WitajCB.aspx.cs" Inherits="WitajCB" %> <HTML> <asp:button id="submitbutton" > </HTML> Inherits strona.aspx.cs class WitajCB : Page { protected Button submitbutton; } Od ASP.NET.0 mechanizm Code Behind uproszczony dzięki klasom częściowym (ang. partial classes) WitajCB.aspx <%@ Page Language="c#" Src="WitajCB.aspx.cs" Inherits="WitajCB" %> <html><body><form runat="server"> Podaj imię: <asp:textbox id="im" runat="server"></asp:textbox> <asp:button id="submitbutton" runat="server" Text="Powitaj"></asp:Button> <br><asp:label id="powitanie" runat="server"></asp:label> </form></body></html> Logika prezentacji II () Logika prezentacji II () Code Behind Przykład (/) Uproszczony mechanizm Code Behind using System; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; public class WitajCB : Page { protected TextBox im; protected Button submitbutton; protected Label powitanie; override protected void OnInit(EventArgs e) { InitializeComponent(); base.oninit(e); } private void InitializeComponent() { this.submitbutton.click += new System.EventHandler( this.submitbutton_click); } WitajCB.aspx.cs private void submitbutton_click(object sender, EventArgs e) { powitanie.text = "Witaj "+im.text+"!"; } } Logika prezentacji II () WitajCB.aspx <%@ Page Language="c#" CodeFile="WitajCB.aspx.cs" Inherits="WitajCB" %> <html><body><form runat="server"> Podaj imię: <asp:textbox id="im" runat="server"></asp:textbox> <asp:button id="submitbutton" runat="server" Text="Powitaj"></asp:Button> <br><asp:label id="powitanie" runat="server"></asp:label> </form></body></html> using System; public partial class WitajCB : System.Web.UI.Page { } WitajCB.aspx.cs protected void submitbutton_click(object sender, EventArgs e) { powitanie.text = "Witaj "+im.text+"!"; } Logika prezentacji II ()

ASP.NET w Visual Studio ASP.NET w Visual Studio (cd.) 7 7 8 8 Logika prezentacji II () Logika prezentacji II () Infrastruktura aplikacji WWW Infrastruktura aplikacji WWW dla platform.net i Java EE Stanowy, interaktywny interfejs uŝytkownika Nawigacja miedzy stronami Walidacja danych wprowadzanych do formularzy Bezpieczeństwo Obsługa wielu języków Obsługa róŝnych typów urządzeń końcowych Gotowe rozwiązania architektoniczne i szkielety aplikacji zwalniają twórców aplikacji z implementacji infrastruktury, zwiększając ich produktywność Poszczególne rozwiązania róŝnią się zakresem wsparcia Microsoft.NET: architektura Web Forms w ASP.NET Java EE: szkielety aplikacji (ang. frameworks) implementujące wzorzec projektowy Model-View- Controller (MVC): Struts JavaServer Faces (JSF) Logika prezentacji II (7) Logika prezentacji II (8)

ASP.NET i Web Forms Problem stanu interfejsu formularz HTML (/) Nacisk na stanowy i interaktywny interfejs aplikacji na wzór aplikacji desktopowych integracja z Visual Studio.NET Wsparcie dla: walidacji danych bezpieczeństwa obsługi urządzeń mobilnych nawigacji internacjonalizacji aplikacji zapewniania spójnego wyglądu stron i personalizacji Nie promuje wzorca Model-View-Controller (MVC) <%@ Page Language="c#" %> HtmlForm.aspx <html><body> <form> Podaj imię: <input type="text" name="imie"> <select name="kolor"> <option value="black">czarny</option> <option value="blue">niebieski</option> <option value="red">czerwony</option> </select> <input type="submit" value="powitaj"> <br><span style="color: <%= Request.Params["kolor"] %>"> Witaj <%= Request.Params["imie"] %>!</span> </form> </body></html> Logika prezentacji II (9) Logika prezentacji II (0) Problem stanu interfejsu formularz HTML (/) Web Forms: stanowy interfejs (/) Formularze HTML są bezstanowe kolejne wywołania tej samej strony obsługiwane niezaleŝnie problem szczególnie dotkliwy przy walidacji danych WebForm.aspx <%@ Page Language="c#" Src="WebForm.aspx.cs" Inherits="WebForm" %> <html><body> <form runat="server"> Podaj imię: <asp:textbox id="imie" runat="server"></asp:textbox> <asp:dropdownlist id="kolor" runat="server"> <asp:listitem Value="Black">Czarny</asp:ListItem> <asp:listitem Value="Blue">Niebieski</asp:ListItem> <asp:listitem Value="Red">Czerwony</asp:ListItem> </asp:dropdownlist> <asp:button id="submitbutton" runat="server" Text="Powitaj"></asp:Button> <br><asp:label id="powitanie" runat="server"></asp:label> </form></body></html> Logika prezentacji II () Logika prezentacji II ()

Web Forms: stanowy interfejs (/) Web Forms: stanowy interfejs (/) public class WebForm : Page { WebForm.aspx.cs protected TextBox imie; protected DropDownList kolor; protected Button submitbutton; protected Label powitanie; private void submitbutton_click(object sender, EventArgs e) { powitanie.text = "Witaj "+imie.text+"!"; powitanie.style["color"] = kolor.selectedvalue; } } Formularze Web Forms są stanowe wartości wprowadzane do formularzy zawsze zachowywane moŝliwe zachowanie stanu wszystkich kontrolek Logika prezentacji II () Logika prezentacji II () Stan interfejsu ASP.NET: View State View State dla dynamicznej zawartości list wyboru Zakodowany stan wszystkich kontrolek na stronie Przydatny do zapamiętania: stanu kontrolek wyświetlających dane zawartości programowo wypełnianych list wyboru Zapisany w ukrytym polu formularza na stronie <input type="hidden" name=" VIEWSTATE" value="ddwtmtcymtezndaznzs7pgdqcuwkhiqnyyrulch8x qba" /> Obsługa włączana atrybutem EnableViewState <asp:label id=label runat="server" EnableViewState="false" /> WebForm.aspx.cs private void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { kolor.items.add(new ListItem("Czarny", "Black")); kolor.items.add(new ListItem("Niebieski", "Blue")); kolor.items.add(new ListItem("Czerwony", "Red")); } } WebForm.aspx <asp:dropdownlist id="kolor" runat="server" EnableViewState="true"> Logika prezentacji II () Logika prezentacji II ()

Mechanizm Auto Post Back Auto Post Back dla listy rozwijanej Zdarzenia z kontrolek Web Forms obsługiwane na serwerze Odwołanie do serwera tylko w wyniku zatwierdzenia formularza Kontrolki Web Controls posiadają atrybut AutoPostBack, którego ustawienie spowoduje zatwierdzenie formularza po zmianie stanu kontrolki poprzez automatycznie generowany kod JavaScript Mechanizm Auto Post Back zwiększa interaktywność aplikacji WebForm.aspx <asp:dropdownlist id="kolor" runat="server" AutoPostBack="true"> WebForm.aspx.cs private void kolor_selectedindexchanged(object sender, System.EventArgs e) { powitanie.text = "Witaj "+imie.text+"!"; powitanie.style["color"] = kolor.selectedvalue; } <select name="kolor" onchange=" dopostback('kolor','')" language="javascript" id="kolor"> Logika prezentacji II (7) Logika prezentacji II (8) Walidacja danych w ASP.NET Walidacja danych w ASP.NET - Przykład Predefiniowane kontrolki walidacyjne z grupy Web Controls: CompareValidator CustomValidator RangeValidator RegularExpressionValidator RequiredFieldValidator ValidationSummary Walidacja po stronie klienta (JavaScript) i na serwerze interaktywność, bezpieczeństwo <form runat="server"> Etat: <asp:textbox id="etat" runat="server"></asp:textbox> <asp:requiredfieldvalidator id="rfv" runat="server" ErrorMessage="Pole wymagane!" ControlToValidate="etat"></asp:RequiredFieldValidator> <br> Do: <asp:textbox id="p_do" runat="server"></asp:textbox> <asp:rangevalidator id="rv" runat="server" ErrorMessage="Wartość musi być nieujemna!" ControlToValidate="p_do" MinimumValue="0" MaximumValue="99999"></asp:RangeValidator> <br> </form> Logika prezentacji II (9) Logika prezentacji II (0)

Bezpieczeństwo w ASP.NET Nawigacja w aplikacjach ASP.NET Uwierzytelnianie (ang. authentication) None Windows Web.config Form-Based <authentication mode = "Forms" > Passport Autoryzacja ACL-based URL-based Kontrolki Login Controls <forms name= "fb" loginurl="loginform.aspx"/> </authentication> Web.config <authorization> <allow users= "admin" roles= "managers, admins" /> <deny users="*" /> </authorization> Logika prezentacji II () Formularz wywołuje sam siebie Kod obsługujący zdarzenie zatwierdzenia formularza moŝe przekazać sterowanie do innej strony: Response.Redirect() Server.Transfer() Przeglądarka URL Redirect URL Page Page Przeglądarka URL Transfer Page Page Logika prezentacji II () Nawigacja w ASP.NET - Przykład Deklaratywna nawigacja oparta o mapę serwisu i kontrolki nawigacyjne Pracownicy.aspx.cs private void submitbutton_click(object sender, EventArgs e) { if (etat.text == "DYREKTOR" etat.text == "PROFESOR") { Context.Items["etat"] = etat.text; Server.Transfer("Zakazane.aspx"); } } <sitemap xmlns="" > Web.sitemap <sitemapnode title="kontrolki ASP.NET" url="~/index.aspx" > <sitemapnode title="data Controls" url="~/datacontrols.aspx"> <sitemapnode title="gridview" url="~/gridview.aspx"/> <sitemapnode title="formview" url="~/formview.aspx"/> </sitemapnode> <sitemapnode title="html Controls" url="~/htmlcontrols.aspx"> </sitemap> Zakazane.aspx <%@ Page Language="c#" %> <html><body> Płace pracowników na etacie <%=Context.Items["etat"] %> są tajne! </body></html> <asp:sitemapdatasource ID="SM" runat="server"/> Strona.aspx <asp:treeview ID="MyTreeView" DataSourceId="SM" runat="server"> <LevelStyles></LevelStyles> <Databindings> <asp:treenodebinding TextField="Title" NavigateUrlField="Url" /> </Databindings> </asp:treeview> Logika prezentacji II () Logika prezentacji II ()

Internacjonalizacja aplikacji ASP.NET Podsumowanie Automatyczny odczyt preferencji kulturowych klienta Formatowanie dat i liczb zaleŝnie od ustawień kultury Lokalizacja komunikatów oparta o pliki zasobów <%@ Page UICulture="auto" Culture="auto" %> Strona.aspx <asp:label ID= "l" runat="server" Text="<%$ Resources:Greet %>! Infrastruktura aplikacji to kod obsługujący typowe mechanizmy wymagane w aplikacjach WWW Korzystanie z gotowych rozwiązań w zakresie infrastruktury zwiększa produktywność programistów Na platformie.net infrastruktura aplikacji jest zapewniana przez samą technologię ASP.NET <data name="greet"> <value>welcome</value></data> Strona.aspx.resx <data name="greet"> <value>witaj</value></data> Strona.aspx.pl.resx Logika prezentacji II () Logika prezentacji II () ADO.NET Architektura ADO.NET ADO.NET zapewnia aplikacjom.net spójne mechanizmy dostępu do źródeł danych takich jak relacyjne bazy danych i dokumenty XML następca ADO dla platformy.net ADO.NET umoŝliwia pracę ze zbiorami danymi bez konieczności utrzymywania połączenia ze źródłem poprzez obiekty DataSet Ścisła integracja z XML moŝliwość wypełniania obiektów DataSet danymi udostępnionymi w formacie XML domyślna serializacja obiektów DataSet w formie XML.NET Framework Data Provider Connection DataAdapter Command SelectCommand DataReader InsertCommand UpdateCommand DeleteCommand Baza danych DataSet XML Logika prezentacji II (7) Logika prezentacji II (8)

Obiekt DataSet Dostawcy danych dla.net Framework Udostępnia i buforuje dane z bazy danych dla aplikacji Nie wymaga utrzymywania połączenia z bazą danych NiezaleŜny od dostawcy danych Przechowuje dane DataSet w postaci jednej lub wielu tabel DataTableCollection zazwyczaj DataTable fragmenty tabel DataTable z bazy danych... DataRelationCollection SłuŜą do łączenia się z bazą danych, wykonywania w niej poleceń SQL i pobierania wyników KaŜdy z dostawców obejmuje dedykowane obiekty: Connection, Command, DataReader i DataAdapter Dostawcy danych dostępni w.net Framework dostawca danych dla Microsoft SQL Server dostawca danych dla OLE DB dostawca danych dla ODBC dostawca danych dla Oracle Obiekty dostawców róŝnią się prefiksem nazwy klasy Logika prezentacji II (9) Logika prezentacji II (0) Odczyt danych poprzez DataReader Odczyt danych poprzez DataSet using System.Data; using System.Data.SqlClient; SqlConnection prconn = new SqlConnection( "Data Source=(local)\\VSdotNET;" + "Integrated Security=SSPI;Initial Catalog=tempdb"); SqlCommand cmd = prconn.createcommand(); cmd.commandtext = "SELECT nazwisko, placa_pod FROM pracownicy"; prconn.open(); SqlDataReader dr = cmd.executereader(); while (dr.read()) Console.WriteLine(dr.GetString(0)+ ": " +dr.getdecimal()); dr.close(); prconn.close(); using System.Data; using System.Data.SqlClient; SqlConnection prconn = new SqlConnection(); SqlCommand cmd = new SqlCommand( "SELECT nazwisko, placa_pod FROM pracownicy", prconn); SqlDataAdapter da = new SqlDataAdapter(); da.selectcommand = cmd; prconn.open(); DataSet ds = new DataSet(); da.fill(ds, "Pracownicy"); prconn.close(); foreach (DataRow r in ds.tables["pracownicy"].rows ) Console.WriteLine(r["nazwisko"]+": "+r["placa_pod"] ); Logika prezentacji II () Logika prezentacji II ()

DataSet jako źródło danych dla kontrolek ASP.NET Wykonywanie poleceń DML i DDL prconn.open(); DataSet ds = new DataSet(); da.fill(ds, "Pracownicy"); prconn.close(); <asp:datagrid id="datagrid" runat="server"> </asp:datagrid> DataGrid.DataSource = ds.tables["pracownicy"]; DataGrid.DataBind(); SqlConnection prconn = new SqlConnection(); prconn.open(); SqlCommand cmd = prconn.createcommand(); cmd.commandtext = "UPDATE pracownicy SET placa_pod=placa_pod + 0 " + WHERE id_prac=0"; int modified = cmd.executenonquery(); Console.WriteLine("Zmodyfikowano wierszy: "+modified); prconn.close(); Logika prezentacji II () Logika prezentacji II () Parametryzacja poleceń SQL w ADO.NET Uaktualnianie bazy danych poprzez DataAdapter i DataSet (/) 7 SqlCommand cmd = new SqlCommand("UPDATE pracownicy + " SET placa_pod=placa_pod + @p_podwyzka + " WHERE nazwisko=@p_nazwisko", prconn); SqlParameter param = new SqlParameter( "@p_podwyzka", SqlDbType.Decimal); param.value = ; SqlParameter param = new SqlParameter( "@p_nazwisko", SqlDbType.VarChar); param.value = "Siekierski"; cmd.parameters.add(param); cmd.parameters.add(param); cmd.executenonquery(); Modyfikacja zawartości DataSet w trybie odłączonym Uaktualnienie bazy danych poprzez przeniesienie zmian z obiektu Dataset metodą Update() obiektu DataAdapter mydataadapter.update(mydataset); DataAdapter musi zawierać polecenia SQL do przeniesienia zmian z DataSet do bazy danych InsertCommand UpdateCommand DeleteCommand Obiekt DataAdapter ze skonfigurowanymi poleceniami SQL moŝna wygenerować w Visual Studio Logika prezentacji II () Logika prezentacji II ()

Uaktualnianie bazy danych poprzez DataAdapter i DataSet (/) Typowane obiekty DataSet DataSet zaprojektowany z myślą o optymistycznym zarządzaniu współbieŝnością DataSet zawiera wersje kaŝdego wiersza: Original Current Default Proposed Dla kaŝdego wiersza w DataSet pamiętany stan: Added Modified Deleted Unchanged Detached Logika prezentacji II (7) Ułatwiają korzystanie ze zbioru danych, gdy jego struktura jest znana na etapie tworzenia aplikacji wiersze i atrybuty udostępniane jako właściwości Tworzone jako klasy dziedziczące z DataSet ręcznie lub kreatorem w Visual Studio Dają większą odporność na błędy programisty, kontrolę typów i uzupełnianie kodu za cenę elastyczności PracownicyDataSet ds = new PracownicyDataSet(); da.fill(ds.pracownicy); foreach (PracownicyDataSet.PracownicyRow r in ds.pracownicy) Console.WriteLine(r.Nazwisko); Logika prezentacji II (8) Transakcje w ADO.NET Automatyczne transakcje w ASP.NET Obiekt Transaction związany z Connection BeginTransaction(), Commit(), Rollback() 7 8 9 SqlConnection prconn = new SqlConnection(); prconn.open(); SqlTransaction trans = prconn.begintransaction(); SqlCommand cmd = prconn.createcommand(); cmd.transaction = trans; cmd.commandtext = "UPDATE "; cmd.executenonquery(); cmd.commandtext = "DELETE "; cmd.executenonquery(); trans.commit(); prconn.close(); Logika prezentacji II (9) ASP.NET wspiera model transakcji automatycznych Zachowanie strony względem transakcji specyfikowane deklaratywnie poprzez atrybut Transaction dyrektywy @Page Disabled NotSupported Supported Required RequiresNew <%@ Page Transaction="Required %> Logika prezentacji II (0)

Kontrolki dostępu do danych w ASP.NET Mechanizm connection pooling w ADO.NET Kontrolki źródeł danych np. SqlDataSource Kontrolki danych współpracujące z kontrolkami źródeł danych np. GridView <asp:gridview ID="GridView" DataSourceID="ds" runat="server"/> <asp:sqldatasource ID="ds" runat="server" SelectCommand="SELECT [nazwisko], [placa_pod] FROM [pracownicy]" ConnectionString="<%$ ConnectionStrings:Prac %>" /> Web.config <connectionstrings> <add name="prac" connectionstring="server=(local);integrated Security=True; Initial Catalog=tempdb providername="system.data.sqlclient" /> </connectionstrings> Logika prezentacji II () Pule połączeń zarządzane przez dostawców danych dla.net Framework domyślnie connection pooling włączony oddzielna pula dla kaŝdego łańcucha połączenia pula tworzona w momencie otwarcia pierwszego połączenia dla danego łańcucha połączenia moŝliwość konfiguracji puli połączeń parametrami w łańcuchu połączenia Dla optymalnego funkcjonowania mechanizmu connection pooling kluczowe jest zamykanie połączenia w kodzie aplikacji (Close() lub Dispose()) Logika prezentacji II () Podsumowanie Materiały dodatkowe Aplikacje ASP.NET realizują operacje na bazie danych poprzez bibliotekę ADO.NET orientacja na pracę w trybie odłączonym kontrolki ASP.NET do obsługi komunikacji ze źródłem danych i prezentacji danych na stronach NCSA HTTPd Tutorial: Server Side Includes (SSI), http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html Active Server Pages, http://msdn.microsoft.com/library/default.asp?url=/library/ en-us/dnanchor/html/activeservpages.asp.net Framework Developer Center, http://msdn.microsoft.com/netframework/ ASP.NET Quickstart Tutorial, http://www.asp.net/quickstart/aspnet/ Logika prezentacji II () Logika prezentacji II ()