web alkalmaz´asok k´esz´ıt´es´et lehet˝ov´e tev˝o keretrendszer
I
Jobb sk´al´azhat´os´ag Hat´ekonys´ag (leford´ıtott k´od)
I
egy ASP.NET ´allom´any leford´ıtott, kiterjeszt´ese: .aspx
I
Egyszer˝ ubb konfigur´al´as ´es telep´ıt´es
ASP.NET I
I
az ASP.NET a klasszikus ASP tov´abbfejlesztett v´altozata, de NEM (teljesen) kompatibilis vele
Mindkett˝o az IIS (Internet Information Services) szerveren fut 3 / 30
4 / 30
Fejleszt´esi-/futtat´asi k¨ornyezet
I
IIS szerver (Add/Remove Windows components)
I
.NET keretrendszer
I
.NET fejleszt˝oi k¨ornyezet (Visual Studio... –kereskedelmi vagy ingyenes verzi´o–, Visual Web Developer (integr´alt szerver: ASP.NET Developement Server), WebMatrix)
Webalkalmaz´as k´esz´ıt´es´et illet˝oen az al´abbi h´aromf´ele megk¨ozel´ıt´est t´amogatja: I
Web Pages – gyors ´es egyszer˝ u m´odja annak, hogy a szerver oldali k´odot a HTML elemekkel vegy´ıtve dinamikus tartalmat hozzunk l´etre
I
Web Forms – esem´enyvez´erelt weboldal-k´esz´ıt´es
I
ASP.NET MVC – komplexebb webalkalmaz´asok fejleszt´es´ere alkalmas keretrendszer, mely k¨ ul¨onb¨oz˝o tervez´esi mint´ak betart´as´ara ¨oszt¨on¨oz
hivatalos weboldal: http://www.asp.net
dokument´aci´o: I
Dokument´aci´o a Microsoft oldal´an
I
Tutorialok
5 / 30
ASP.NET oldalak jellemz˝oi
6 / 30
ASP.NET web oldalak jellemz˝oi (folyt.)
Az ASP.NET oldalak (.aspx ´allom´any) dinamikus tartalom l´etrehoz´as´at teszik lehet˝ov´e
ASP.NET web oldal feldolgoz´as´anak l´ep´esei: I
oldal (els˝o) lek´er´ese (GET met´odus): az oldal el˝osz¨or fut a szerveren
I
a dinamikusan gener´alt tartalom vissza lesz k¨ uldve ´es megjelenik a kliens b¨ong´esz˝oj´eben
I
a felhaszn´al´o pl. inform´aci´ot ´ır be/kiv´alaszt vmilyen opci´okat. . . , majd megnyom egy gombot (ha egy m´asik oldalra mutat´o hivatkoz´asra kattint - az oldal feldolgoz´asa ezzel v´eget ´er)
I
a form-adatok a szerverre lesznek “visszapost´azva” (postback), POST met´odussal -tipikusan- ugyanahhoz az oldalhoz
I
a szerveren ism´et ugyanaz az ASP.NET oldal fut le – a k¨ uld¨ott inform´aci´o hozz´af´erhet˝o szerver oldalon
I
a szerveren t¨ort´ent feldolgoz´ast k¨ovet˝oen a gener´alt tartalom visszamegy ´es meg lesz jelen´ıtve (rendering ) a b¨ong´esz˝oben
I
I I
Ez a ciklus ism´etl˝odik mindaddig, am´ıg a felhaszn´al´o az adott oldallal dolgozik. Egy ilyen ciklus neve: Round trip (“k¨orutaz´as”) Lehet˝os´eg van arra is, hogy a k´er´es param´etereket egy m´asik oldallal dolgoztassuk fel (cross-page posting )
oldal ´elettartama I
7 / 30
Minden egyes k´er´es egy u ´jabb oldal (egy´ uttal egy u ´j Page instancia) l´etrehoz´as´at eredm´enyezi (a cache-el´est˝ol eltekintve)
8 / 30
ASP.NET oldal fel´ep´ıt´ese:
P´elda ASP.NET oldal
A felhaszn´al´oi interf´esz tervez´es´ere az ASP.NET k´etf´ele modellt k´ın´al: I
Single-File Page Model – vizu´alis elemek, illetve esm´enykezel˝ok vagy egy´eb k´od ugyanazon .aspx ´allom´anyban
I
Code-Behind Page Model – k¨ ul¨onv´alasztja a vizu´alis elemeket, ´es az ezeket kezel˝o logik´at
ASP.NET alapok - Code-Behind Page Model k´et r´eszre osztott felhaszn´al´oi interf´esz (Code-Behind Page Model): I
vizu´alis elemek: ASP.NET dokumentum (markup file)
I
logika: hozz´a tartoz´o “h´att´erk´od” (code-behinde file) – C#, VB.NET, stb.
I
az ASP.NET dokumentum a haszn´alt .NET programoz´asi nyelvnek megfelel˝o oszt´ally´a lesz ford´ıtva (a h´att´erk´oddal egy¨ utt)
I
a leford´ıtott k´od egy ¨ossze´all´ıt´asban (assembly) szerepel, mely a szerverre telep´ıtve futtathat´o
I
Az ASP.NET dokumentumb´ol gener´alt oszt´aly (document class) a System.Web.UI.Page oszt´aly lesz´armazottja (l´asd diagram →) a Page oszt´alyt´ol ¨or¨ok¨olt fontosabb adattagok:
I
I I
I
Single Page Model:
Code Behind Model:
Request, Response objektumok (l´ asd m´eg: bels˝ o objektumok) az oldalon tal´ alhat´ o HTML-, illetve webkontroloknak megfelel˝ o HTMLControls, WebControls oszt´ alyok IsPostBack tulajdons´ ag 11 / 30
12 / 30
ASP.NET dokumentum h´att´erk´odj´anak megad´asa
Direkt´ıv´ak
ASP.NET web oldal projekt eset´en:
I
<%@ Page Language="..." CodeFile="allomanynev.aspx.cs" Inherits="allomanynev" %> I
I
a @ Page direkt´ıva seg´ıts´eg´evel megadhat´o:
telep´ıthetj¨ uk a web oldal forr´ask´odj´at a szerverre – ezek automatikusan le lesznek ford´ıtva az els˝o (b´armelyik oldalra vonatkoz´o) k´er´es ´erkez´esekor nem k¨otelez˝o, de v´egezhet˝o el˝oford´ıt´as is (hogy a legels˝o hozz´af´er´es se legyen lass´ u)
ASP.NET web alkalmaz´ as projekt eset´en:
a web oldalakat explicit m´odon le kell ford´ıtani telep´ıt´es el˝ott (´ıgy tesztelhet˝o is telep´ıt´es el˝ott)
I
egy vagy t¨obb ¨ossze´all´ıt´ast (assembly-t) telep´ıthet¨ unk.
I
a programoz´asi nyelv, melyen az oldalhoz tartoz´o k´od ´ır´odott
I
a h´att´erk´od el´erhet˝os´ege (Code-Behind Page Model eset´en)
I
debug opci´ok
I
van-e az oldalhoz rendelt u ´n mester-oldal (Master Page)
m´as direkt´ıv´ak:
<%@ Page Language="..." CodeBehind="allomanynev.aspx.cs" Inherits="allomanynev" %> I
A direkt´ıv´ak az oldal feldolgoz´as´ara vonatkoz´o inform´aci´ot szolg´altatnak (nem lesznek megjelen´ıtve)
Az ASP.NET oldalon szerepl˝o vez´erl˝ok az oldalnak megfelel˝o oszt´alyon bel¨ ul egy fastrukt´ ur´aban helyezkednek el.
15 / 30
16 / 30
HTML szerver-oldali vez´erl˝ok
Web kontrolok
I
az egyszer˝ u (X)HTML elemeket az ASP.NET egyszer˝ u sz¨ovegk´ent kezeli
I
nem felt´etlen¨ ul feleltethet˝oek meg egy az egyben egy (X)HTML elemnek
I
b´armelyik HTML elem szerver oldalon hozz´af´erhet˝ov´e/ programozhat´ov´a tehet˝o a runat = "server" attrib´ utum hozz´aad´as´aval
I
komplexebb funkcionalit´ast biztos´ıtanak a HTML vez´erl˝okh¨oz k´epest
I
a megjelen´ıt´es¨ uk f¨ ugghet a b¨ong´esz˝o t´ıpus´at´ol vagy a tulajdons´agok be´all´ıt´as´at´ol
a HTML vez´erl˝ok a megfelel˝o (X)HTML elemhez hasonl´o m´odon lesznek megjelen´ıtve
szintaxis:
I
az id attrib´ utumban megadott n´even ´erhet˝o el a megfelel˝o objektum
I
a HTML vez´erl˝o minden egyes attrib´ utuma el´erhet˝o a szerver-oldali objektum tulajdons´agak´ent
I
I I
pl. I
HTMLControlsPl.aspx
hivatkoz´as a be´ırt sz¨ovegre: name.Text
Pl. I
WebControlsPl.aspx
HTML vez´erl˝ok – Referencia 18 / 30
17 / 30
web kontrolok – Referencia
N´eh´any gyakran haszn´alt web kontrol: web kontrol t´ıpusa AdRotator Button Calendar Checkbox CheckBoxList DropDownList Image ImageButton ImageMap Label Panel RadioButton RadioButtonList Table TableCell TableRow TextBox
Neki megfeleltethet˝ o (X)HTML elem(ek) ´es nincs nincs <select> nincs nincs nincs
nincs
,
Megjegyz´es: I
Egyes vez´erl˝ok (pl. CheckBox, CheckBoxList, DropDownList, TextBox) rendelkeznek egy AutoPostBack tulajdons´aggal. Ha ez be van ´all´ıtva, a vez´erl˝o ´ert´ek´enek m´odos´ıt´asa automatikusan postback-et gener´al.
az ASP.NET implicit megold´ast k´ın´al a vez´erl˝ok ´allapot´anak (NEM a form elemek ´ert´ek´enek) k´et “postback” k¨oz¨otti meg˝orz´es´ere
I
egy´eb oldal-specifikus adatok ideiglenes lement´es´ere is haszn´alhatjuk
I
a dokumentum oszt´aly rendelkezik egy ViewState nev˝ u StateBag t´ıpus´ u adattaggal, melybe a vez´erl˝ok ´allapota le lesz mentve
I
a v´alasz gener´al´asa sor´an a ViewState szerializ´alva lesz, illetve el lesz k¨ uldve a kliens b¨ong´esz˝ore egy VIEWSTATE nev˝ u hidden mez˝ok´ent
a view state haszn´alata kikapcsolhat´o, ha sz¨uks´eges ViewStateMode =”Disabled” vagy EnableViewState=”false” I
oldal szinten (a @ Page direkt´ıv´aban)
I
vez´erl˝o szinten
Pl. I
l´asd: ViewStatePl.aspx
21 / 30
22 / 30
´ enyess´eg-vizsg´al´o kontrolok Erv´ I
a felhaszn´al´o ´altal bevitt adatok ellen˝orz´es´et teszik lehet˝ov´e
I
hiba eset´en a megfelel˝o hiba¨ uzenet megjelen´ıt´ese testreszabhat´o
I
HTML- illetve web kontrolokkal egyar´ant haszn´alhat´oak
I
ValidationSummary – az ´erv´enyess´eg-vizsg´alat sor´an ´eszlelt hib´ak ¨osszes´ıt´es´ere ad lehet˝os´eget
Megjegyz´es: K¨ul¨onb¨oz˝o t´ıpus´u ´erv´enyess´eg-vizsg´al´o vez´erl˝ok: I
RequiredFieldValidator – biztos´ıtja, hogy a k¨otelez˝o bemenetet mindenk´eppen kit¨oltse a felhaszn´al´o
Az ASP.NET automatikusan ellen˝orzi az esetlegesen “rosszindulat´ u” bemenetet (pl. HTML elemek, script k´od), akkor is, ha nem haszn´alunk k¨ ul¨on ´erv´enyess´eg-vizsg´al´o vez´erl˝oket
I
CompareValidator – ¨osszehasonl´ıt´ast v´egez egy adott ´ert´ekkel
Pl.
I
RangeValidator – megvizsg´alja, hogy az ´ert´ek egy megadott intervallumban van
I
RegularExpressionValidator – megvizsg´alja, hogy a ´ert´ek megfelel-e egy megadott regul´aris kifejez´esnek (pl. e-mailc´ım, telefonsz´am ellen˝orz´ese)
I
I
ErvenyessegEllenorzesPl.aspx
Validation controls – Referencia
CustomValidator – felhaszn´al´o ´altal defini´alt funkcionalit´as az ellen˝orz´es v´egezhet˝o kliens ´es/vagy szerver oldalon 23 / 30
24 / 30
ASP.NET oldal ´eletciklusa
ASP.NET oldal ´eletciklusa (folyt.)
Egy ASP.NET oldal ´eletciklusa sor´an k¨ul¨onb¨oz˝o f´azisokon megy kereszt¨ul: I
Postback esem´eny-kezel´es – postback eset´en megh´ıv´odnak a vez´erl˝ok megfelel˝o esem´enykezel˝oi, majd az ´erv´enyess´eg-vizsg´al´o vez´erl˝ok ´erv´enyess´egvizsg´al´o met´odusai (megj. az ´erv´enyess´egvizsg´alatot kiv´alt´o esem´eny esem´enykezel˝oje csak ezt k¨ovet˝oen lesz megh´ıvva)
I
Kimenetgener´al´as (rendering) – el˝otte az ¨osszes vez´erl˝o eset´en le lesz mentve a view state. Megh´ıv´odik rekurz´ıvan a vez´erl˝ok Render met´odusa
I
Unload – miut´an a v´alasz el lett k¨ uldve a kliensnek, a m´ar nem sz¨ uks´eges adatstrukt´ ur´ak t¨orl´es´ere ker¨ ul sor
F´azisok: I
I
K´er´es ´erkezik – Az ASP.NET eld¨onti, hogy sz¨ uks´eg van-e az oldal feldolgoz´as´ara vagy visszak¨ uldhet˝o a cache-ben t´arolt v´altozat Start – Request, Response, IsPostBack, illetve UICulture be´all´ıt´asa
I
Inicializ´al´as – az oldalon szerepl˝o vez´erl˝ok el´erhet˝ ov´e v´alnak (de az ´allapotuk m´eg nincs a view state alapj´an be´all´ıtva)
I
Load – postback k´er´es eset´en a vez´erl˝ok ´allapota inicializ´alva lesz a view state alapj´an
I
folyt. ...
25 / 30
ASP.NET szerver-oldali vez´erl˝ok esem´eny modellje
26 / 30
Esem´enykezel´es
esem´eny-modell:
Esem´enykezel˝ok
I
az ASP.NET egy esem´eny-alap´ u modellt k´ın´al a dokumentumok szerver-oldali programoz´as´ara
I
k´et param´eter: az esem´enyt gener´al´o objektum (sender), esem´eny objektum (az esem´ennyel kapcsolatos inform´aci´ok – e))
I
az esem´eny kliens oldalon v´alt´odik ki
I
I
az esem´eny kezel´ese szerver-oldalon t¨ort´enik a k¨ ul¨onb¨oz˝o vez´erl˝okh¨oz kapcsol´od´o, szerver-oldalon kezelhet˝o tipikus esem´enyek:
oldalhoz kapcsol´od´o esem´enyek eset´en automatikus esem´eny-esem´enykezel˝o hozz´arendel´es (a @ Page direkt´ıva AutoEventWireup attrib´ utuma be kell legyen ´all´ıtva) n´evkonvenci´o alapj´an: Page esem´eny
kattint´ as – automatikus postback m´ odos´ıt´ as (csak egyes vez´erl˝ okn´el) – hat´ asuk a k¨ ovetkez˝ o postback-ig k´esleltetve van/ vagy azonnali postback (l´ asd: AutoPostBack tulajdons´ ag)
a vez´erl˝ok ´es maga az oldal is gener´alhat u ´n. ´eletciklus-esem´enyeket: Init, Load, PreRender
27 / 30
28 / 30
Esem´enykezel´es
Bels˝o objektumok Az ASP.NET az al´abbi bels˝o objektumokat (intrinsic objects) bocs´atja rendelkez´esre:
Esem´enyek sorrendje postback-et k¨ovet˝oen: I
a Page inicializ´al´o esem´enyei: Page Init (view state bel¨otl´ese) Page Load
I
vez´erl˝ok ´altal gener´alt esem´enyek
I
a Page PreRender esem´enye
I
a view state ment´ese
I
kimenet gener´al´asa (rendering)
I
Unload
Objektum Response Request Context Server Application Session
b˝ovebben:
ASP.NET oszt´ aly HttpResponse HttpResponse HttpContext HttpServerUtility HttpApplicationState HttpSessionState