360 likes | 495 Views
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.
E N D
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
ViewState 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" />
ViewState II ASP.NET létrehozza az oldalt és a szerver vezérlőket a default értékekkel ( .aspxfile alapján). Ezután az ASP.NET aview state rejtett mező alapján „vissza állítja” az előző kérés állapotára a megfelelő vezérlőket. Végül azASP.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.
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 apostbackkisé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 postbackkeletkezik, akkor a 3-5 lépések újból lefutnak
Kiszolgálás elemei II • Kezelők (handler) • 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 aspwebapp 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"> voidButton1_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: • 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 • Response.Redirect("newpage.aspx"); (302 code) • Response.RedirectPermanent() (301 code) • Application • Session • Server • Server.Transfer() • Server.HtmlEncode • User • Trace
Adatok elérése • süti, form paraméterek, querystring, szerver változók • Request.Cookies • Request.Form • Request.QueryString • Request.ServerVariables • Mind a 4 egyben (előbbiek ömlesztve): • Request.Params • Request.Params.Get • Request.Params[] • Request[] • Request.Files • Request.Headers • Request.Browser
Get, post Request.RequestType Request.IsPostBack if (Page.IsPostBack){ // HTTP Post}else{ // HTTP Get}
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 headerfooter,… • Futásidejű eseményeket kezel • Alkalmazás szintű HttpApplication • Más modul eseményeit • Implementálja a IHttpModuleinterfészt (Init, Dispose). • Metódusai: • Init inicializálja a modult a HttpApplicationhívja meg. Saját eseménykezelőit regisztrálja. • Dispose felszabadítja a memóriát. • Esemény kezelő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
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 • 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 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
Tervezési minták Model – View - Controller Model – View - Presenter