Krizsán Zoltán ver 1.1. http állapot mentes Ugyanaz a kliens több kérésén keresztül információkat tartunk valahol. Az oldalakat minden kérés alkalmával.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

4. alkalom – Hálózat Kezelés
Osztály leszármaztatás

Kamarai prezentáció sablon
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Krizsán Zoltán iit 1.1.  Aszinkron történésről értesítés egy vagy több objektum számára.  Delegátumok segítségével valósítja meg a C#.  event típus,
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Erőállóképesség mérése Találjanak teszteket az irodalomban
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Mellár János 5. óra Március 12. v
10 állítás a gyerekek internethasználatáról
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Utófeszített vasbeton lemez statikai számítása Részletes számítás
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Beépített vezérlők és validáció
Stílus, mesteroldal, témák
1.NET web szolgáltatások ASP.NET első rész Bilicki Vilmos
Mérés és adatgyűjtés Kincses Zoltán, Mingesz Róbert, Vadai Gergely 10. Óra MA-DAQ – Műszer vezérlése November 12., 15. v
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Ember László XUBUNTU Linux (ami majdnem UBUNTU) Ötödik nekifutás 192 MB RAM és 3 GB HDD erőforrásokkal.
Védőgázas hegesztések
1. IS2PRI2 02/96 B.Könyv SIKER A KÖNYVELÉSHEZ. 2. IS2PRI2 02/96 Mi a B.Könyv KönyvelésMérlegEredményAdóAnalitikaForintDevizaKönyvelésMérlegEredményAdóAnalitikaForintDeviza.
C# tagfüggvények.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
Entity framework Krizsán Zoltán
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
ASP.NET „röviden” Krizsán Zoltán ver: 0.2.
Szerkezeti elemek teherbírásvizsgálata összetett terhelés esetén:
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
VFP Form programozás Form szerkesztő elemei vezérlő elemek
DRAGON BALL GT dbzgtlink féle változat! Illesztett, ráégetett, sárga felirattal! Japan és Angol Navigáláshoz használd a bal oldali léptető elemeket ! Verzio.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
PHP III. Fájlok, űrlapok.
szakmérnök hallgatók számára
Optimalizálás Ez az előadó neve beosztása vállalata.
Az ASP.NET programozási modell Ez az előadó neve beosztása vállalata.
Objektum orientált programozás a gyakorlatban
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Készítette: Lipp Marcell
A pneumatika alapjai A pneumatikában alkalmazott építőelemek és működésük vezérlő elemek (szelepek)
APEX BMF, II. félév.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Csurik Magda Országos Tisztifőorvosi Hivatal
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
Webprogramozó tanfolyam
User Account Management Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont.
A Visual Basic nyelvi elemei
Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
Illés Zoltán ELTE Informatikai Kar
> aspnet_regiis -i 8 9 TIPP: Az „Alap” telepítés gyors, nem kérdez, de később korlátozhat.
Java web programozás 7-8..
A KÖVETKEZŐKBEN SZÁMOZOTT KÉRDÉSEKET VAGY KÉPEKET LÁT SZÁMOZOTT KÉPLETEKKEL. ÍRJA A SZÁMOZOTT KÉRDÉSRE ADOTT VÁLASZT, VAGY A SZÁMOZOTT KÉPLET NEVÉT A VÁLASZÍV.
Java web programozás 6..
User Profiles Endrődi Tamás (MCT, MCP, MCITP) GDF Informatikai Intézet vezetője SZÁMALK Oktatóközpont.
Opencms modul fejlesztés Krizsán Zoltán. Modulok fajtái Nincs előírás, csak tipikus tennivalók: –Content type: új típus(oka)t vezet be. –Template: új.
JSF – komponens alapú webfejlesztés. Mi az a JSF mire jó ● Egy szerver oldali, komponens alapú felhasználói felület keretrendszer ● Támogatja a webes.
Előadás másolata:

Krizsán Zoltán ver 1.1

http állapot mentes Ugyanaz a kliens több kérésén keresztül információkat tartunk valahol. Az oldalakat minden kérés alkalmával felépítik. Az oldalakat minden válasz után lebontják. 2

kéréshez kapcsolódó eseménykezelők, bizonyos feltételekre reagáló eseménykezelők  Application_Start  Session_Start  Application_Error: kezeletlen kivétel  Session_End  Application_End  Application_Disposed: biztos, ami biztos takarítás 3

4

5

1. Page request : újra kell e fordítani, vagy mehet cache-ből 2. Start : Request, Response, IsPostBack tulajdonságok beállítása 3. Initialization : mester oldal, és téma hozzárendelés 4. Load : viewstate-ből az adatok a vezérlőkbe 5. Postback event handling : ha postback volt, akkor ennek a feldolgozása. A végén adatellenőrzés. 6. Rendering : Előtte a view state-be menti az állapotokat. Hívja a vezérlők Render() metódusát, amik a válasz kimenetére írják a megfelelő TAG-eket. 7. Unload : vezérlők kisöprése. 6

Start szakasz után, de még az inicializálás előtt Használhatjuk a IsPostBack tulajdonságot. Mire használjuk  vezérlők dinamikus létrehozása  mester oldalak dinamikus beállítása  téma dinamikus beállítása 7

Init esemény  A vezérlők Init eseményei után.  Skin alkalmazása után.  Vezérlők tulajdonságainak olvasása, beállítása. InitComplete esemény  Inicializáló szakasz végén.  Itt már érvényes a ViewState.  A ViewState módosítása itt javasolt. 8

1. OnLoad oldal metódus  adatbázis kapcsolat létrehozása itt 2. OnLoad metódusa a vezérlőknek 3. Load eseménye az oldalnak 4. Load eseménye a vezérlőknek 5. Vezérlők eseménykezelői 6. LoadComplete 9

A megfelelő vezérlő, megfelelő eseménye kliens oldali aktivitás alapján. Érdemes használni az IsValid tulajdonságát az oldalnak. 10

1. PreRender esemény 2. PreRenderComplete esemény  DataBind() után 3. SaveStateComplete esemény 4. Render metódusa hívódik minden vezérlőnek  saját vezérlőnél ezt írjuk felül. 11

Unload esemény  szüntessük meg az utóhatásokat  adatbázis kapcsolatok lebontása  fájlok zárás  loggok  nem használhatjuk a Response objektum írásra pl. Write metódust. 12

13

Page methodPage eventControl method & event Default akciók felülírása. Forrás kódban override kulcsszó, majd kiválasztani (varázsló generálja) Kiegészítő akciók. Megfelelő aláírású függvény létrehozása kézzel. protected void Page_xxx(object sender, EventArgs e) (xxx az előző táblazatbó). Pl. Page_Load, Page_Init (Page_Load már van, ctrl+c, ctrl+v majd Load átírása a másikra.) Vezérlőn duplaklikkel, vagy property editor events füllel. 14

Mekkora információt kell tárolni? Kliensnél engedélyezett a süti? Szerver vagy kliens oldalon lenne hasznos? A tárolandó adat érzékeny? Melyek a teljesítmény sávszélesség követelmények? Felhasználónként kell tárolni? Meddig kell tárolni az információt? Osztott a webapp (web farm)? 15

View state Control state Hidden fields Cookies Query strings 16

Nincs szerver oldali erőforrás szükséglete Egyszerű használat Biztonságosabb, mint a rejtett mezők (hash-elt, tömörített, kódolt, de nem titkosított) Nagy méret esetén lassít. Nem mindig támogatott (mobil eszközök). Biztonsági kockázat (mégiscsak a kódban van) 17

Nincs szerver oldali erőforrás szükséglete. Mindig működik, nem lehet letiltani. Macerás használni  saját vezérlő  OnInit felüldefiniálás  SaveControlState  LoadControlState 18

Nincs szerver oldali erőforrás szükséglete. Biztos, hogy működik. Mindenki támogatja. Kódolni kell, de a használat egyszerű. Biztonsági kockázat. Tartalma csak szöveg lehet. Sok, nagy adat -> lassú oldal. Nagy méret gond lehet az átvitel során. 19

Nincs szerver oldali erőforrás szükséglete. Konfigurálható érvényesség. Egyszerű: kulcs – érték pár Méret korlát (4096, mostanában 8192) Letiltható a kliensben. Biztonsági kockázat. Érték csak szöveg lehet. 20

Nincs szerver oldali erőforrás szükséglete. Biztos, hogy működik. Mindenki támogatja. Kódolni kell, de a használat egyszerű. Méret korlát (2083) Biztonsági kockázat. Érték csak szöveg lehet. 21

Beépített mechanizmus, de kiterjeszthető  saját elemeket is kezel, ViewState[control.ID] = érték  ki lehet olvasni kódból is explicit módon,  objektum is lehet benne Minden változott értéket ment/tölt (nem csak szöveg). 4.0-tól kezdődően szelektív támogatás is lehet. Ne használjuk, ha az érték amúgy is jön! 22

Tiltani lehet  elemenként,  egész oldalra,  konfigurációból: Öröklődik az EnableViewState (inherited) 23

[Serializable] public class Customer { public string FirstName; public string LastName; public Customer(string firstName, string lastName) { FirstName = firstName; LastName = lastName; } 24

Customer cust = new Customer(”név",”név2"); ViewState["CurrentCustomer"] = cust; cust = (Customer)ViewState["CurrentCustomer"]; 25

Response.Cookies["userName"].Value = "patrick"; Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1); HttpCookie aCookie = new HttpCookie("lastVisit"); aCookie.Value = DateTime.Now.ToString(); aCookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(aCookie); 26

Response.Cookies["userInfo"]["userName"] = "patrick"; Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString(); Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1); HttpCookie aCookie = new HttpCookie("userInfo"); aCookie.Values["userName"] = "patrick"; aCookie.Values["lastVisit"] = DateTime.Now.ToString(); aCookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(aCookie); 27

HttpCookie appCookie = new HttpCookie("AppCookie"); appCookie.Value = "written " + DateTime.Now.ToString(); appCookie.Expires = DateTime.Now.AddDays(1); appCookie.Path = "/Application1"; Response.Cookies.Add(appCookie); 28

aCookie.Expires = DateTime.Now.AddDays(- 1); aCookie.Values.Remove(subkeyName); 29

Olvasás Request.QueryString["Name"]; vagy Request.QueryString[0]; Írás Response.Redirect("WebForm2.Aspx?" + "Name=" + Server.UrlEncode(this.txtName.Text) + "&LastName=" + Server.UrlEncode(this.txtLastName.Text)); 30

Application state Session state Profile properties Database support (külön diasorozat) 31

Egyszerű használat. Alkalmazás – globális hatókör. Elveszhet, ha a szerver kisöpri a webapp-ot. Szerver memóriában van. 32

Egyszerű használat. Események. IIS átmenti ha ki kell söpörni a webapp-ot. Süti nélkül is használható. Kiterjeszthető. Érvényességi idő. Érvényességi idő (max). Teljesítmény veszteséggel jár. 33

Felhasználóhoz kötődik. Kiterjeszthető IIS menti állapotát ha ki kell söpörni a webapp-ot. Teljesítmény veszteséggel jár. Konfigurációt igényel Gondoskodni kell felszabadításról. 34

SessionStateMode felsorolt típus:  InProc: a web szerver memóriájában (default)  StateServer: ASP.NET állapot szerviz tárolja, külön processzben. Web farm esetén is használható, ha újraindul a webapp, akkor is megmaradnak a változó értékei.  SQLServer: adatb-ben tárolja. Web farm esetén is használható, ha újraindul a webapp, akkor is megmaradnak a változó értékei.  Custom: saját megoldás  Off: nincs 35

<sessionState mode="StateServer" stateConnectionString="tcpip=SampleStateS erver:42424" cookieless="false" timeout="20"/> 36

<sessionState mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;data source=SampleSqlServer;" /> 37

Mentés: string firstName = "Jeff"; string lastName = "Smith"; string city = "Seattle"; Session["FirstName"] = firstName; Session["LastName"] = lastName; Session["City"] = city; Ellenőrzés: if (Session["City"] == null) Olvasás: string firstName = (string)(Session["First"]); string lastName = (string)(Session["Last"]); string city = (string)(Session["City"]); 38

MS SQL | SQL Express adatbázis aspnet_regsql.exe futtatása (legalább –A p) Táblában tárol: aspnet_Profile alapértelmezetten csak authentikált felhasználónak Írás: Context.Profile["cim"] = "Hello"; Olvasás: Label1.Text = (String) Context.Profile["cim"]; 39

Konfigurációban szerepeltetni kell: <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> Ezután használható: Context.Profile[”cím”] = "Hello"; Feladat: 40

Írás: Application.Lock(); Application["Message"] = ”Szöveg"; Application["PageRequestCount"] = 0; Application.UnLock(); Olvasás: if (Application["AppStartTime"] != null) { DateTime myAppStartTime = (DateTime)Application["AppStartTime"]; } 41

Alkalmazás cache  globális jellegű tárolók, az egész webapp gyorsítására  DataSet-ek, riportok, adatok, melyek megmaradnak kérések között. Oldal cache  Az oldal kimenetét tárolja, amit nem kell generálni. 42

Objektumokat tárolhatunk ideiglenesesen. Ha a webapp újraindul, akkor a cache is újraépül. kulcs – érték párokat tárol. Prioritás rendelhető az elemhez. volatile – bár globális jellegű, de nem az alkalmazással együtt él. kisöprődik  ha lejárt az érvényessége,  ha érvénytelenné válik,  ha kevés a memória. 43

Sliding expiration (csúszó lejáratú) Miután elérték az elemet meddig maradjon még bent. Absolute expiration Pontosan meddig maradjon bent (használattól függetlenül). 44

Megadhatunk függőséget (file, db,…) Ha változik amitől függ, akkor kisöprik az elemünket. Függőséget fajtái:  kulcs: megadhatjuk a másik cache-ben tárolt elem kulcsát  file: ha a külső fájl módosult, vagy törölték, akkor kisöprik.  sql: ha az adatbázis egy táblája változik.  csoport (aggregate): Ha több elemtől is függ. Bármelyik változik, kisöprik.  saját (custom) 45

Cache["CacheItem1"] = "Cached Item 1"; Cache.Insert("CacheItem2", ”szöveg2"); string[] dependencies = { "CacheItem2" }; Cache.Insert("CacheItem3", "Cached Item 3", new System.Web.Caching.CacheDependency(null, dependencies)); Cache.Insert("CacheItem7", "Cached Item 7", null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 0)); Cache.Insert("CacheItem8", "Cached Item 8", null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null); 46

Kiolvasás cachedString = (string)Cache["CacheItem"]; Törlés Cache.Remove("MyData1"); 47

private static string GenerateAndCacheReport(){ string report = "Report Text. " + _lastRemoved.ToString(); HttpRuntime.Cache.Insert( "MyReport", report, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, 15), CacheItemPriority.Default, new CacheItemRemovedCallback(ReportRemovedCallback)); return report; } public static void ReportRemovedCallback(String key, object value, CacheItemRemovedReason removedReason){ _lastRemoved = "Re-created " + DateTime.Now.ToString(); } 48

+: növeli 1el -: csökkenti 1el, ha + szám 0: nulláz Próbáljuk ki az össze lehetőséget! Próbáljuk ki ugyanazon böngésző különböző ablakaiból! Próbáljuk ki másik böngészőből! 49

Ha ne a ViewState-el oldjuk meg a feladatot, akkor tiltsuk le a támogatás false -> EnableViewState Böngésző egyik ablakában növeljük, majd másik ablakában is növeljük (felváltva)! Mi történik? Miért? Lehetőleg központilag töltsünk mentsünk, ne az esemény kezelőben! (1 helyen kell átírni, ellenőrizni) OnLoad-ban lehet betölteni, kimenteni nem lehet az unloadban (kivétel) Request.Cookies [”kulcs”], response.Cookies [”kulcs”] gyűjtemény, vagy Request.Params [”kulcs” ], Request [”kulcs”] 50

true -> EnableViewState eseménykezelőben megfelelő művelet. 51

Standard – HiddenField – Value tulajdonság (esetleg value changer) HTML – Input (Hidden) runat=”server” – Value tulajdonság Beolvasás a használat előtt  figyelni, hogy első alkalom e! (IsPostback true) Kiírni a Render előtt! 52

Olvasni használat előtt!  IsPostBack  Server.UrlDecode  Request.QueryString [”kulcs” ], vagy Request.Params [”kulcs” ], vagy Request [”kulcs” ] HyperLink.NavigateUrl vezérlő, vagy a Button.PostBackUrl írni a render előtt! KÓDOLÁS!  Server.UrlEncode  Button.PostBackUrl: WebForm_PostBackOptions, ami a <script src="/WebResource.axd?d=-ből jön. 53

Bármikor berakhatjuk, kivehetjük az adatokat. Bármilyen típus lehet = nem kell stringgé alakítani. 54