1_ASP._NET_osszefoglalo

Download Report

Transcript 1_ASP._NET_osszefoglalo

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
2
ASP.NET Koncepció
view state
szerver
vezérlők
esemény
vezérelt
postback
3
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" />
4
View State II
1.
ASP.NET létrehozza az oldalt és a szerver vezérlőket
a default értékekkel ( .aspx file alapján).
2. 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.
3. Végül az ASP.NET HTTP paraméterek alapján átírja a
megfelelő vezérlők megfelelő mezőit.
4. Meghívódnak ez eseményt kezelő metódusok.
5
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.
6
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>
7
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.
8
Kiszolgálás teljes folyamata
1.
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.
2.
A felhasználó a kliens oldalon „tesz-vesz” ami postBack-et
eredményez.
3. ASP.NET az újabb kérés alapján létrehozza a vezérlőket.
4. 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.
5. 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
9
Kiszolgálás elemei I
10
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.
11
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.
12
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
13
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.
14
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" %>
15
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.
16
Implicit objektumok
17
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
18
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
19
Get, post
 Request.RequestType
 Request.IsPostBack
if (Page.IsPostBack)
{
// HTTP Post
}
else
{
// HTTP Get
}
20
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.
21
Rendelkezésre álló vezérlők
HTML vezérlők
Web szerver
vezérlők
•Kliens oldali szkript támogatás
•runat="server„ lehet, de macerás
•<asp:XXX
•profi vezérlők
•szkin, téma
Ellenőrző vezérlők
•vezérlő tartalmát
Felhasználói
vezérlők
•saját, új vezérlők
•.ascx
•@Control
22
HTML vezérlők
23
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
24
WEB vezérlők
25
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)
26
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
27
Témák, szkinek
 Kinézet testre szabása.
 Szkin (szerver vezérlő tulajdonságai), css, képek,
erőforrások.
 Mappa alapú.
28
Közös kinézet = Mester oldal
 Mester oldal definiálja a közös kinézetet.
29
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ő
30
Á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)
31
Állapot menedzsment lehetőségek
Kliens oldal
View state
Control state
Hidden fields
Cookies
Query strings
Szerver oldal
Application state
Session state
Profile Properties
32
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
33
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
34
AJAX
35
Tervezési minták
 Model – View - Controller
 Model – View - Presenter
36