ASP.NET „röviden” Krizsán Zoltán ver: 0.2
ASP.NET webalkalmazás főbb tulajdonságai Gyors : A kérést gépi kódú szerelvény szolgálja ki. Gyorsan fejleszthető: A fejlesztő eszközzel kész komponensek. „Destop alkalmazás szerű” alkalmazás modell. Kényelmes állapotmentési metodikák. Ingyenes fejlesztés, üzemeltetés (IIS express) Windows azonosítás lehetősége
ASP.NET Koncepció view state esemény vezérelt postback szerver vezérlők
View State I HTTP állapotmentes, ennek kiküszöbölésére született. Állapot szerializáció. Miután a szerver logika lefutott, de a HTML generálás előtt a rendszer ellenőrzi az összes vezérlő össze tulajdonságát név – érték párosba rendezi a változott értékeket sorosítja a gyűjteményt BASE64 szövegbe rejtett mezőként jelenik meg a kódban lehet titkosítani megfelelő vezérlők állapota bekerül a válaszba, majd a kliens visszaküldi a kérésben. Szerveren nincs méretkorlát, de a tűzfalaknál, kliens oldalon lehet, ezért korlátozni lehet <pages maxPageStateFieldLength="1024" />
View State II ASP.NET létrehozza az oldalt és a szerver vezérlőket a default értékekkel ( .aspx file alapján). Ezután az ASP.NET a view state rejtett mező alapján „vissza állítja” az előző kérés állapotára a megfelelő vezérlőket. Végül az ASP.NET HTTP paraméterek alapján átírja a megfelelő vezérlők megfelelő mezőit. Meghívódnak ez eseményt kezelő metódusok. ábra ide 86. oldal
postback Átmenet a normál Windows Forms azonnali gazdag eseményvezérelt működése és a http sima „submit” között. Minden szerver oldali vezérlőnek van AutoPostBack tulajdonsága, false alapértelmezetten. Ha a formon van legalább 1 vezérlő AutopostBack=true-val, akkor __doPostBack() JS függvényt (beállítja a rejtett mezők értékeit, elküldi az oldat), __EVENTTARGET rejtett mezőt, __EVENTARGUMENT rejtett mezőt minden postback=true elemhez onclick vagy onchange=”__doPostBack(asdasd) ” generál bele az ASP.NET.
postback II <script type="text/javascript"> function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } ... </script>
Esemény vezérelt Programozás egyszerű, átlátható. A Windows Forms alkalmazás fejlesztéséhez hasonló metodika DE a szokásos HTTP protokoll használatával. A rendszer transzparensen kezeli, emulálja a modellt.
Kiszolgálás teljes folyamata Első alkalommal az oldal objektum és a vezérlők létrejönnek a default értékkel, lefutnak az inicializáló kódok, majd HTML kód készül az oldalból, és az objektumok felszabadulnak. A felhasználó a kliens oldalon „tesz-vesz” ami postBack-et eredményez. ASP.NET az újabb kérés alapján létrehozza a vezérlőket. ASP.NET a postback kisérő eseményét meghívja. Ebben a szerver oldali logika műveleteket hajt végre (pl.: adatb), majd módosítja a vezérlők állapotát. Az vezérlőkből HTML készül, és a memóriából kisöprődnek. A HTML válasz visszakerül a klienshez Ha másik postback keletkezik, akkor a 3-5 lépések újból lefutnak
Kiszolgálás elemei I
Kiszolgálás elemei II Kezelők (handler) Modulok Fogadja a felhasználói kérést. Feldolgozza. Választ küld (opcionális). Modulok elő vagy utófeldolgozást végezhet. Elfoghatja a kérést. Rendszer üzeneteket fogadhat. Rendszer üzeneteket generálhat.
Kezelők Egy procesz, ami asp webapp kérésre választ „ad” Számos beépített (oldal kezelő aspx-re). Kiterjeszthető: RSS feed, kép szerver, … Osztály, ami implementálja egy megfelelő interfészt. Lehet szinkron (IHttpHandler) vagy aszinkron (IHttpAsyncHandler). regisztrálni kell a web.config-ban.
ASP.NET feldolgozásának fő fázisai Page framework inicializálás Felhasználói inicializálás Adatok ellenőrzése Esemény kezelés Adatkötés (Binding) Takarítás
Esemény kezelő (.aspx) http kezelő életciklust biztosít események formájában Init Load Render Fogadja a felhasználó paramétereit (postback) Szerver vezérlőkkel hatékony.
ASP.NET kód modell Támogatott nyelvek: C#, Visual Basic, J#, Jscript, … 2 modell a szerver kódnak (parciális osztályok) Spagetti kód (egy fájl): <%@ Page Language="C#" %> <script runat="server"> void Button1_Click(object sender, System.EventArgs e) { Label1.Text = ("Welcome, " + TextBox1.Text); } </script> code-behind (Visual Studio): <%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>
Szerelvény generálás Szükség esetén fut le: 2 lépés Forrás frissebb, mint a szerelvény, vagy web.config, global.asax változott vagy a bin mappában levő szerelvények változtak 2 lépés Osztály generálás: forráskód elemzés -> osztály létrehozás (ős: Page vagy leszármazott) Szerelvény létrehozása, cache-be töltés.
Implicit objektumok Forrás: http://msdn.microsoft.com/en-us/library/ms178473.aspx
Implicit objektumok Request Response Application Session Server User Response.Redirect("newpage.aspx"); (302 code) Response.RedirectPermanent() (301 code) Application Session Server Server.Transfer() Server.HtmlEncode User Trace
http modulok Natív és menedzselt kód is lehet. Egy szerelvény, az ASP.NET kérés pipeline részeként szerepel. Célja: kérés módosítás, statisztika, loggolás, saját header footer,… Futásidejű eseményeket kezel Alkalmazás szintű HttpApplication Más modul eseményeit Implementálja a IHttpModule interfészt (Init, Dispose). Metódusai: Init inicializálja a modult a HttpApplication hívja meg. Saját eseménykezelőit regisztrálja. Dispose felszabadítja a memóriát. Esemény kezelők.
Rendelkezésre álló vezérlők Kliens oldali szkript támogatás runat="server„ lehet, de macerás HTML vezérlők <asp:XXX profi vezérlők szkin, téma Web szerver vezérlők vezérlő tartalmát Ellenőrző vezérlők saját, új vezérlők .ascx @Control Felhasználói vezérlők
HTML vezérlők
Html szerver oldali vezérlők Két esemény támogatott: ServerClick HtmlAnchor, HtmlButton, HtmlInputButton, HtmlInputSubmit, HtmlInputImage ServerChange HtmlInputText, HtmlInputCheckBox, HtmlInputRadioButton, HtmlInputHidden, HtmlSelect, HtmlTextArea
WEB vezérlők
Konfiguráció XML alapú. Előre definiált séma. Hierarchikus felépítés (öröklődés, felül definiálás) fájlok machine.config (Számítógép) web.config (webalkalmazás, jegyzékek)
Gyorsító tár (cache) Alkalmazás cache (programozási eszköz) kulcs – éték párok érvényességi idő gyakran használt elemeket tárolhatunk (függőség) Kimenet cache oldal egésze, vagy oldalnak egy része variációkat képes figyelni nem generálja az oldal kimenetét minden esetben
Témák, szkinek Kinézet testre szabása. Szkin (szerver vezérlő tulajdonságai), css, képek, erőforrások. Mappa alapú.
Közös kinézet = Mester oldal Mester oldal definiálja a közös kinézetet. Forrás: http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx
Adatok ellenőrzése adat tartalmú vezérlőkhöz Felhívás összesítő feltételek hibaszövegek Felhívás összesítő
Állapot menedzsment Webalkalmazás állapotát menteni kell a kérések között. Szintek alkalmazás - HttpApplicationState session - HttpSessionState oldal (page) - ViewState kérés (request)
Állapot menedzsment lehetőségek Kliens oldal View state Control state Hidden fields Cookies Query strings Application state Session state Profile Properties Szerver oldal
Adatbázis elérés, adat kötés Nincs szükség kódra a gyakori műveletekre(összerendelhető, testre szabható vezérlők deklaratívan) adatok megjelenítés lapozás, rendezés frissítés, beszúrás, törlés szűrés LINQ használata lehetséges, kényelmes
Biztonság Windows megszemélyesítés : Basic, digest, or Integrated Windows Authentication (NTLM or Kerberos). Forms authentication saját login oldal és menedzsment Client Certificate authentication
AJAX
Tervezési minták Model – View - Controller Model – View - Presenter