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