500 likes | 642 Views
.NET web szolgáltatások. ASP .NET m á sodik rész Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv. Az előző előadás tartalma:. ASP .NET Web űrlapok Vezérlés, megjelenítés elkülönítése Követés, hibakeresés Felhasználói bevitel ellenőrzése. A mai előadás tartalma.
E N D
.NET web szolgáltatások ASP.NET második rész Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv
Az előző előadás tartalma: • ASP.NET • Web űrlapok • Vezérlés, megjelenítés elkülönítése • Követés, hibakeresés • Felhasználói bevitel ellenőrzése
A mai előadás tartalma • ASP.NET • Saját vezérlők gyártása • Állapot kezelés • Alkalmazás állapot • Viszony állapot • Állapot mentés • Süti • URL • Gyorstár kezelés • Cache objektum • Kimeneti gyorstár • Web alkalmazás telepítése
Források • Microsoft 2310B official curriculum • http://www.gotdotnet.com/
Vezérlők • Web felhasználó vezérlő • ASP.NET oldal (csak form típusú vezérlőket tartalmazhat) • Web szerver vezérlő • C# osztály • System.Web.UI.WebControls.WebControl • ID, UniqueID, Parent, ViewState, Controls • ForeColor, BackColor, Font, BorderStyle, Height,Width • protected override void RenderContents(HtmlTextWriter writer)
Felhasználó által létrehozott vezérlők • Segítségükkel újrahasználható UI objektumokat definiálhatunk • A felhasználó által definiált vezérlőt .ascx kiterjesztésű fájlban lehet definiálni • Tartalmazhat HTML elemeket kivéve: <HTML>, <BODY>, vagy <FORM> elemeket • Eseménykezelést is támogaja • Control direktíva (Trace nincs támogatva): • Csak beágyazva használhatóak • Beágyazva az esménykezelésben is megjelenik (Page_Load) <%@ Control Language="c#" %> <%@ Control Language="c#" Codebehind="WebUserControl1.ascx.cs" Inherits="test.WebUserControl1" %>
Control1.ascx Page1.aspx Page2.aspx Miért érdemes használni • Kód és felület újrafelhasználás (egy web alkalmazáson belül) • Külön névtér • Egy oldalon többször is használhatjuk • Csoportmunka Application A Application B Page3.aspx
Használata • Fejléc, Navigációs panel • Adatbázis megjelenítő • Beviteli mező ellenőrzéssel • Komplex beviteli összeállítás
Felh. Vez. használata • A @ Register direktívával lehet regisztrálni az ASP.NET oldalon • Beszúrás megfelelő helyre • A tulajdonságok beálítása <%@ Register TagPrefix="demo" TagName="validNum" Src="numberbox.ascx" %> <demo:validNum id="num1" runat="server"/> num1.pNum = 5; //uses Set x = num1.pNum; //uses Get
Felh. vez. létrehozása • Két módszer: • Új vezérlő létrehozása • Meglévő ASP.NET oldal átalakítása • Az oldal a tulajdonságokon kersztül kommunikál a vezérlővel • Az oldalnakfolyamatos elrendezést kell használnia public int pNum { get { return Convert.ToInt32(txtNum.Text); } set { txtNum.Text = Convert.ToString(value); } }
Demó • Felhasználói vezérlő • Létrehozása • Paraméterezése • Használata
Állapot kezelés • Állapot kezelés • Kliens oldali • Szerver oldali • Alkalmazás és viszony változók • Sütis és süti mentes viszonyok
Állapot menedzselés Állapot menedzselés nélkül Állapot menedzseléssel Login.aspx Login.aspx Please enter your logon information: Please enter your logon information: First Name First Name John John Last Name Last Name Chen Chen Web Server Submit Submit Web Server Greetings.aspx Greetings.aspx Hello Hello John Chen Elfelejtettem, ki is vagy?
Szerver oldali állapot kezelés • Az alkalmazás állapot egy globális tároló melyhez mindenki hozzáfér (HttpApplicationState) • Viszony állapot a böngésző viszonyra vonakozik (HttpSessionState) • Az értékek alkalmazás és viszony változókba mentődnek • Skálázhatóság • ASP.NET viszony azonosító: SessionID (120 bit) Web Szerver Kliens Alkalmazásésviszony változók SessionID
Kliens oldali állapot kezelés • Sütiket használ az állapot menedzselésre • Állandó sütik • Ideiglenes sütik • Kevésbé megbízható mint a szerver oldali • A felhasználó törölheti • Kevésbé biztonságos (username@domainname.txt) • Korlátozott információ menyiség • Kliens oldali korlátozás Kliens Computer Web Szerver Sütik
A Global.asax Fájl • Alkalmazás és viszony eseményeket kezel • Inicializálás, … • Csak egy lehet belőle Web alkalmazásonként • A Web alkalmazás virtuális gyökér könyvtárában van • Események: • Oldal kérés • Oldal küldés • Feltételes alkalmazás események • Használata opcionális
A Global.asax Fájl Client Request Response ASP.NET Web Server IIS ASP.NET HTTP Runtime Application_BeginRequest Application_AuthenticateRequest Application_AuthorizeRequest Application_EndRequest Application_ResolveRequestCache Application_UpdateRequestCache Application_AquireRequestState Application_ReleaseRequestState Application_PreRequestHandlerExecute Application_PostRequestHandlerExecute Page execution
Alkalmazás és viszony változók • Inicializálás • Használatuk • Időtartamuk • Skálázhatóság • Adatbázis használata
Inicializálás • A változók a Global.asax fájlban vannak inicializálva • AzAlkalmazásobjektum a Web alkalmazás minden felhasználójának használható • AViszonyobjektum egy-egy felhasználói viszonyra vonatkozik protected void Application_Start(Object sender,EventArgs e) { Application["NumberofVisitors"] = 0; }
Használatuk • Változók beállítása • Változók kiolvasása Session["BackColor"] = "blue"; Application.Lock(); Application["NumberOfVisitors"] = (int)Application["NumberOfVisitors"] + 1; Application.UnLock(); strBgColor = (string)Session["BackColor"]; lblNbVisitor.Text = Application["NumberOfVisitors"].ToString();
Demó • Letöltés számláló • Viszony • Alkalmazás
Időtartamuk • A viszony változók az utolsó használat után • Alapértelmezésben 20 másodprecig használhatóak • A viszony hossza Web.config fájban állítható: • Az alkalmazás változók az Application_End eseményig használhatóak <configuration> <system.web> <sessionState timeout="10" /> </system.web> </configuration>
Változók skálázható tárolása • A viszony változóval a processz foglalkozik • Hátránya: • Nem skálázható • Az ASP.NET Két proceszen kívüli tárolót támogat: • SQL Szerver adatbázis vag állapot szerver Állapot szerver Web farm Viszony és alkalmazás változók -Vagy- SQL Kliens Viszony, alkalmazás állapotváltozók
Adatbázis használata • A Web.config fájlban • Az SQL szerver beállítása • OSQL létrehozza a megfelelő tárolt eljárásokat és adatáblákat 1 <sessionState mode="SQLServer" sqlConnectionString="data source=SQLServerName; Integrated security=true" /> 2 c:\> OSQL –S SQLServerName –E <InstallSqlState.sql
Sütis és sütimentes viszonykövetés • Süti használata állapotmentésre • Információ kiolvasás sütiből • Sütimentes viszonykövetés • Beállítása
Sütik használata • Új süti létrehozása • A süti ismeri a tartomány nevet HttpCookie objCookie = new HttpCookie("myCookie"); DateTime now = DateTime.Now; objCookie.Values.Add("Time", now.ToString()); objCookie.Values.Add("ForeColor", "White"); objCookie.Values.Add("BackColor", "Blue"); Response.Cookies.Add(objCookie); HttpCookie objCookie = new HttpCookie("myCookie"); DateTime now = DateTime.Now; objCookie.Values.Add("Time", now.ToString()); objCookie.Values.Add("ForeColor", "White"); objCookie.Values.Add("BackColor", "Blue"); objCookie.Expires = now.AddHours(1); Response.Cookies.Add(objCookie); A tartós sütihez ezt be kell állítani Set-Cookie: Username=John+Chen; path=/; domain=microsoft.com; Expires=Tuesday, 01-Feb-05 00.00.01 GMT
Adatok kiolvasása • Süti kiolvasása • Értékek kiolvasása HttpCookie objCookie = Request.Cookies["myCookie"]; lblTime.Text = objCookie.Values["Time"]; lblTime.ForeColor = System.Drawing.Color.FromName (objCookie.Values["ForeColor"]); lblTime.BackColor = System.Drawing.Color.FromName (objCookie.Values["BackColor"]);
Sütimentes állapotkövetés • Minden aktív viszonyt viszony azonosítóval azonosítanak • Ezeket az azonosítókat sütiben vay URL-ben kommunikálják • Sütimentes viszony • Az IDaz URL-ben van • Nem használhatunk abszolút URL-t • A legtöbb böngésző 255 karakterre korlátozza az URL-t http://server/(h44a1e55c0breu552yrecobl)/page.aspx
Sütimentes állapotkövetés beállítása • A Web.config fájl viszony állapot szekciójában <SessionState> • Set cookieless = true <sessionState cookieless="true" />
Demó • Süti írás • Sütimentes állapotkövetés
A Cache Objektum használata • Mi a Cache Objektum? • Előnyei • Használata • Objektumok törlése
A Cache Objektum • Egy információ tárolására szolgáló objektum • EgyCacheobjektum Web Alkalmazásonként • Az alkalmazás változók egy alternatívája • Viszony változók tárolására nem használják • Kulcs-érték párokkal használhatjuk Cache["myKey"] = myValue;
Előnyei • Gyorsabb mint minden kérésre létrehozni egy objektumot • Támogatja a zárolást • Automatikuserőforrás menedzsment • Támogatja a callback függvényeket • Támogatja a függőségek használatát
Hogyan használjuk? • Írás: • Olvasás: //Implicit method Cache["myKey"] = myValue; //Explicit method Cache.Insert("myKey", myValue, Dependency, AbsoluteExpiration, SlidingExpiration, CacheItemPriority, CacheItemRemovedCallBack); myValue = Cache["myKey"];
Elemek eltávolítása • Abszolút lejárati idő • Csúszó lejárati idő • Más változótól függő • Prioritás DateTime.Now.AddMinutes(5) TimeSpan.FromSeconds(20) AddCacheItemDependency("Variable.Value") CacheItemPriority.High
Kimeneti gyorstár típusok • Lap tárolás • Lap részlet tárolás • XML Web szolgáltatás tárolás
Hogyan használjuk? • A gyorstár tartalma dinamikus oldalakból származik • A teljes Web oldal hozzáférhető a gyorstárban • A gyorstár időtartama beállítadó • A VaryByParam paraméterrel tudjuk szabályozni a gyorstárban lévő variációk számát <%@ OutputCache Duration="900" VaryByParam="none" %>
Rész tárolás • Az oldal részt felhaszálói vezérlővé kell konvertálni • Be kell állítani Duration és varyByParam paramétereket <%@ OutputCache Duration="120" VaryByParam="none" %>
ASP.NET Web alkamazás konfigurálása • A konfigurációs módszerek bemutatása • Web szerver kofigurálása Machine.config fájllal • Az alkalmazás konfigurálása Web.config fájllal • Konfigurációs öröklődés • Adat mentése és kiolvasása a Web.config fájlból • Dinamikus tulajdonságok
Konfigurációs módszerek áttekintés • Machine.config fájl • Gép szintű beállítások • Web.config fájlok • Alkalmazás és könyvtár szintű beállítások • Mindkét fájl: • Jól formázott XML • camelCase-t használó • Bővíthető
Machine.config • A Machine.config fájl tartalma minden alkalmazásra hat • Csak egy van belőleegy webszerveren • A legtöbb beállítás a Web.config fájlokkal átírható
Alkalmazás konfigurálása Web.config használatával • Egy vagy több Web.config fájl web alkalmazásonként • Az alkalmazáshoz szükséges minden infomráció itt van • Az ASP.NET funkcionalitás minden tulajdonságát itt beállíthatjuk • Biztonság • Mód • Általános alkalmazás beállítások • Követés
Konfiguráció hierarchia • Az alkalmazsá szintű Web.config fájl a Machine.config fájltól örökli beállításit • Minden egyes könyvtár tartalmazhat Web.config fájlt CONFIG Machine.config VirtualDir Web.config SubDir Web.config
Adatok olvasása, írása Web.config-ból • Beállítsok mentése • Hozzáférés: <configuration> <appSettings> <add key="pubs" value="server=localhost; integrated security=true; database=pubs"/> </appSettings> </configuration> AppSettingsReader App = new AppSettingsReader(); string strPubs = (string)App.GetValue("pubs", typeof(string));
Dinamikus tulajdonságok • Inkább a Web.config fájlban mint a kódba tartsuk változóink értékeit • Újrafordítás nélkül módosíthatóak • Objektum tulajdonságokon keresztül hozzáférhetőek
Web alkalmazás telepítése • A Web alkalmazás lefordítása • Csak a szükségesfájlokat: • Visual Studio .NET solution files (.vbproj, .vbproj.webinfo, .csproj, .csproj.webinfo, etc.) • Resource (.resx) files • Code-behind pages (.vb, .cs) • Bemásolás
A mai előadás tartalma • ASP.NET • Saját vezérlők gyártása • Állapot kezelés • Alkalmazás állapot • Viszony állapot • Állapot mentés • Süti • URL • Gyorstár kezelés • Cache objektum • Kimeneti gyorstár • Web alkalmazás telepítése
A következő előadás tartalma • ASP.NET biztonság + XML kezelés • ASP.NET biztonság • .NET XML kezelés • XML kezelés • XSD • Objektumok és XML