22
Sisteme Distribuite Introducere in aplicatii ASP.NET 1 Lucrarea de laborator nr. 9 Aplicatiile ASP.NET 2.0 (1) - Introducere Abstract In cadrul acestui laborator se vor trece in revista aspecte introductive legate de aplicatiile web in ASP.NET 2.0. Aplicatiile web bazate pe ASP.NET constitue un domeniu destul de vast in cadrul .NET Framework iar stapanirea tehnologiei necesita o cunoastere avansata a instrumentelor si librariei de clase. Pentru laboratorul de fata se vor studia urmatoarele aspecte: Modelul aplicatiilor ASP.NET Noutati in ASP.NET 2.0 Internet Information Services (IIS) Instalarea aplicatiilor Web Structura unei aplicatii ASP.NET Web Forms Obiecte ASP.NET Introducere in ASP.NET ASP.NET ofera un model de programare si o infrastructura prin intermediul carora se pot dezvolta atat aplicatii web cat si servicii web. Principalele caracteristici ale ASP.NET sunt urmatoarele: Aplicatiile ASP.NET sunt compilate. Unul din dezavantajele ASP 1 -ul clasic il constituia faptul ca pagina web continea scripturi, cod ce trebuia interpretat si apoi executat; cu ASP.NET codul, folosind metode de cache, este deja compilat si gata pentru executie; aplicatiile ASP.NET sunt compilate in doua faze: prima faza in care codul C# sau VB.NET (si altele) este compilat intr-un assembly ce contine cod intermediary IL (acesta compilare poate avea loc in momentul primei cereri sau sursele pot fi deja compilate) si a doua realizata de JIT chiar inaintea executie executiei propriu-zise a paginii si consta in tranformarea codului IL in cod nativ optimizat pentru sistemul pe care se afla serverul web; o aplicatie web nu este compilata de fiecare data cand o pagina sau un serviciu web este cerut, in schimb de foloseste un o metoda de pastrare (cache) a codului deja compilat (JIT); codul IL este recompilat de fiecare data cand sursele sunt modificate; 1 ASP este acronimul pentru Active Server Pages; ASP.NET reprezinta noua platforma de programare a aplicatiilor web ce foloseste .NET Framework.

ASP

  • Upload
    ralu

  • View
    384

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

1

Lucrarea de laborator nr. 9

Aplicatiile ASP.NET 2.0 (1) - Introducere

Abstract

In cadrul acestui laborator se vor trece in revista aspecte introductive legate de aplicatiile web in ASP.NET 2.0. Aplicatiile web bazate pe ASP.NET constitue un domeniu destul de vast in cadrul .NET Framework iar stapanirea tehnologiei necesita o cunoastere avansata a instrumentelor si librariei de clase. Pentru laboratorul de fata se vor studia urmatoarele aspecte:

• Modelul aplicatiilor ASP.NET • Noutati in ASP.NET 2.0 • Internet Information Services (IIS) • Instalarea aplicatiilor Web • Structura unei aplicatii ASP.NET • Web Forms • Obiecte ASP.NET

Introducere in ASP.NET ASP.NET ofera un model de programare si o infrastructura prin

intermediul carora se pot dezvolta atat aplicatii web cat si servicii web. Principalele caracteristici ale ASP.NET sunt urmatoarele:

Aplicatiile ASP.NET sunt compilate. Unul din dezavantajele ASP1-ul clasic il constituia faptul ca pagina web continea scripturi, cod ce trebuia interpretat si apoi executat; cu ASP.NET codul, folosind metode de cache, este deja compilat si gata pentru executie; aplicatiile ASP.NET sunt compilate in doua faze: prima faza in care codul C# sau VB.NET (si altele) este compilat intr-un assembly ce contine cod intermediary IL (acesta compilare poate avea loc in momentul primei cereri sau sursele pot fi deja compilate) si a doua realizata de JIT chiar inaintea executie executiei propriu-zise a paginii si consta in tranformarea codului IL in cod nativ optimizat pentru sistemul pe care se afla serverul web; o aplicatie web nu este compilata de fiecare data cand o pagina sau un serviciu web este cerut, in schimb de foloseste un o metoda de pastrare (cache) a codului deja compilat (JIT); codul IL este recompilat de fiecare data cand sursele sunt modificate;

1 ASP este acronimul pentru Active Server Pages; ASP.NET reprezinta noua platforma de programare a aplicatiilor web ce foloseste .NET Framework.

Page 2: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

2

ASP.NET este multi-limbaj.Se pot alege orice limbaj pentru a dezvolta o aplicatie web; asta pentru ca rezultatul compilarii va fi cod IL adica un cod scris pentru .NET si poate rula in interiorul unui mediului protejat oferit de CLR;

O aplicatie ASP.NET foloseste mediul de executie oferit ce CLR. Acest lucru implica:

• Managementul automat al memoriei; • Siguranta tipurilor: cand se compileaza o aplicatie in assembly-ul

construit se adauga informatii detaliate despre clasele folosite(metode ,date, localizare etc.) astfel incat apelul unor,de exemplu al unor metode, sa nu necesite informatii suplimentare decat acelea oferite in metadata;

• Multi-threading: o aplicatie web poate necesita mai multe fire de executie; thread-urile pot fi folosite pentru a: executa operatii asincrone (citirea unui fisier, apelul unui serviciu web) sau pentru a executa o operatie in mod continuu pe durata de viata a aplicatiei web (de exemplu un un fir cu prioritate scazuta care trebuie sa salveze date la intervale regulate);

ASP.NET este orientat obiect. Se poate folosi orice clasa pusa la dispozitie de .NET Framework si se poate utiliza orice principiu OOP pentru care exista suport. Cel mai bun exemplu este acela al controalelor server-side:controalele pot fi create si modificate programatic astfel incat sa raspunda intr-un anumit fel la evenimente sau sa aiba un anumit aspect;

Aplicatiile ASP.NET sunt usor de instalat si configurat. De cele mai multe instalarea unei aplicatii ASP.NET inseamna doar copierea fisierelor aplicatiei intr-o pe disc unde este mapat un director virtual al IIS. Configurarea este la fel de simpla : fiecare aplicatie contine un fisier in format XML web.config in care sunt tinute setarile; poate fi modificat in timpul rulari aplicatiei iar aplicarea lor se face automat; Noutati in ASP.NET 2.0

Noutatile aduse de ASP.NET 2.0 pot fi in urmatoarele categorii:

Administrarea si dezvoltarea aplicatiilor web Design-ul paginii Controale server-side noi Legarea datelor in controale web Securitate

Pentru administrarea aplicatiilor Web .NET Framework include o

consola de management ce are o interfata Web ce poate fi accesata de oriunde printr-un browser.

La dezvoltarea propriu-zisa a site-ului web ASP.NET 2.0 recunoaste unele nume de directoare (din directorul radacina al aplicatiei) ce sunt

Page 3: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

3

destinate pastrarii unor anumite tipuri de fisiere(de exemplu App_Data este destinat pastrarii fisierelor de date xml sau mdf si pentru pastrarea bazei de date ce contine informatiile despre membership si roluri, App_Code este destinat pentru colectarea fisierelor de cod iar clasele aflate in aceste fisiere sunt referentiate automat in aplicatie, App_Themes este locul in care pot fi plasate imagini, skin-uri si css-uri).

Incepand cu ASP.NET 2.0 site-urile web pot fi precompilate inainte de a fi instalate pe serverul de productie.

Avantajele precompilarii sunt: • se imbunatateste timpul de raspuns pentru prima cerere a paginii

intrucat aceasta nu mai este compilata dinamic; • posibilitatea de a instala numai codul executabil fara codul sursa;

Tot cu ASP.NET 2.0 se pot crea design-uri consistente se pagini

folosind master pages. Paginile master constitue tema sau designul general ales pentru un grup de pagini web; acest lucru este util intrucat paginile nu mai sunt construite de la zero ci avand un sablon iar fiecare pagina reprezentand o particularizare acestuia.

Pentru a face lucrurile mai interesante ASP.NET aduce o noua modalitate de configurare dinamica a paginii web chiar de catre client. Acest lucru este posibil prin Web Parts iar aplicatiile web ce pot beneficia de asemenea controale sunt portaluri intrucat ofera suport pentru actiunile obisnuite de pe aceste tipuri de site-uri: drag-and-drop, vizualizari configurabile, etc.. ASP.NET 2.0 introduce noi controale server-side cum ar fi: TreeView, SiteMapPath (un control utilizat la navigarea prin site-ul web), FileUpload , ImageMap, etc. .Toate codul markup generat pentru un control este compatibil cu XHTML 1.1 si este adaptive in functie de tipul si posibilitatile browserului. Controalele suporta skin-uri si pot fi legate la o sursa de date2 . Cu noul model de legare a unui data source se poate defini modul in care pagina web interactioneaza cu aceasta in mod declarativ; acest lucru e mult mai usor decat scrierea unui cod behinde care sa faca efectiv legatura. Desi autentificarea din ASP.NET 1.x bazata pe cockie-uri este inca solutia cea mai la indemana pentru securizarea unui site web, codul ce realizeaza autentificarea si autorizarea trebuia rescris. In ASP.NET 2.0 s-a introdus suport pentru pastrarea credentialelor si a rolurilor3 utilizatorilor.

2 Data source binding 3 Membership

Page 4: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

Internet Information Services (IIS) Internet Information Services reprezinta un set de servicii

Windows responsabile cu procesarea cererilor venite din retea pe un anumit port. In acest sens exista un serviciu Windows numit World Wide Web Publishing Service4 ce asculta de obicei pe portul 805 (destinat comunicatiilor prin HTTP) sau 443 (HTTPS) cereri HTTP pentru un anumit site Web. Acest serviciu Windows este administrat de IIS Manager.

Obs:Pentru a deschide consola de management a IIS trebuie rulat un program numit inetmgr.exe ce poate fi gasit in directorul de instalare a IIS. Cea mai simpla cale de a deschide consola este prin utilitarul Run din Windows.

In cadrul IIS site-urile sunt grupate in directoare virtuale care sunt mapate catre directoare existente pe disc in care se afla aplicatiile web. Aplicatiile Web sunt accesate de client prin intermediul unui browser caruia ii precizam un URL; acesta adresa contine mai multe informatii ce vor indica: tipul protocolului, portul pe care se afla mapata aplicatia web pe server , locatia virtuala a resursei si cel mai important numele resursei sau al fisierului.De exemplu daca avem URL-ul urmator:

http://localhost:8080/AppWeb/index.aspx

Se poate observa ca protocolul este HTTP, se face o cerere catre un server cu aliasul localhost (intern acesta este mapat catre adresa de loopback 127.0.0.1), portul 8080,directorul virtual AppWeb iar resursa din cadrul acestuia este index.aspx. Extensia aspx este foarte importanta pentru server intrucat procesarea depinde de tipul ei. Fiecare extensie de fisier are mapata in cadrul IIS unei extensii ISAPI6;aceasta extensie este reprezentata fizic de un DLL, de exemplu extensia pentru fisierele din ASP clasic (*.asp) este asp.dll iar pentru fiesierele ASP.NET (*.aspx si *.asmx ) este aspnet_isapi.dll. Extensii precum *.aspx sau *.asmx sunt preluate de extensia aspnet_isapi.dll si apoi date spre procesare mediului ASP.NET. Trebuie mentionat ca inainte de a trimite mai departe cererea, IIS face cateva preprocesari cum ar fi verificarea drepturilor de acces

4 Visual Studio 2005 are integrat un server web, Web Developer Web Sever ce poate rula independent de IIS; Visual Studio poate fi configurat sa foloseasca acest server in loc de IIS 5 Pentru un site Web se poate configura mai multe porturi insa implicit cererile sunt ascultate pe portul 80 6 Internet Service Application Program Intreface

4

Page 5: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

pentru resursa respectiva sau autentificarea utilizatorilor. De acceea resursele aplicatiei trebuie configurate in cadrul IIS cu access anonim si public.

Obs:Intrucat fiecare versiune de ASP.NET vine cu propriul ISAPI IIS trebuie configurat astfel incat sa stie pentru fiecare aplicatie in parte carei interfete sa trimita cererea. Pentru acest lucru fiecare versiune de ASP.NET vine cu un utilitar de configurare aspnet_regiis.exe. Utilizarile cele mai frecvente sunt: 1.afisarea versiunilor de asp.net instalate aspnet_regiis.exe –lv 2.configurarea unei singure aplicatii aspnet_regiis.exe –s W3SVC/1/ROOT/AppWeb 3.configurare tuturor aplicatiilor existente in IIS: aspnet_regiis.exe –i

O data cererea ajunsa la extensia ISAPI pentru ASP.NET procesarea efectiva a cererii este realizata de mediul .NET. Mai precis cererea este data unui proces separat ce reprezinta mediul in care ruleaza ASP.NET (sau .NET runtime host)7. Acest proces difera in functie de versiunea de IIS folosita. Pentru IIS 5.x acest proces se numeste aspnet_wp.exe iar pentru IIS 6.0 W3WP.exe. In cadrul versiuni 5.x, aplicatiile ruleaza in contextul unui singur proces insa separate prin domenii ale aplicatiei;fiecare aplicatie ASP.NET ruleaza intr-un domeniu separat astfel incat erorile dintr-o aplicatie sa nu afecteze si celelalte aplicatii web. Acest model ridica doua probleme: daca o aplicatie web ce ruleaza direct pe serverul web (de exemplu o aplicatie ASP clasica) si genereaza erori ce duc la inchiderea lui aplicatiile ASP.NET vor fi inchise si ele; pentru aplicatiile ASP.NET nu este cazul intrucat sunt executate in domenii diferite si izolate. Pentru a rezolva aceasta problema se poate configura, pentru fiecare aplicatie in parte, nivelul de protectie; pentru nivelul cel mai mare aplicatie va rula pe un proces separat , mai precis in dllhost.exe. A doua problema este ridicata de performanta: trebuie schimbate contextele a doua procese (cel al serviciului windows si cel al procesului lucrator in care este executat CLR). Problema schombarii contextului in varianta 6.0 este rezolvata prin includerea unui driver in kernelul Windows (HTTP.SYS) ce este resposabil cu receptionarea cererilor de la clienti si trimiterea lor directa catre orice proces ce este inregistrat pentru anumite URL-uri. Aplicatiile web sunt grupate in application pools iar pentru fiecare grup ruleaza in cadrul unei instante separate procesului lucrator W3WP.exe. Acest

5

7 Trebuie reamintit ca aplicatiile .NET ruleaza in cadrul unor procese Windows; aceste procese sunt instante ale unor programe ce contin cod nativ (nu managed) .

Page 6: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

model are dezavantajul ca foloseste mai multe instante ale CLR-ului ceea ce consuma in plus memorie. Instalarea aplicatiilor Web (deployment) De obicei instalarea aplicatiilor ASP.NET inseamna copierea fisierelor ce compun aplicatia intr-un director pentru care IIS mentine o referinta sub forma unui director virtual si modificarea fisierelor de configurare pentru asigurarea functionalitatii. Pentru majoritatea aplicatiilor cei doi pasi sunt suficienti insa daca aplicatia foloseste resurse externe sau trebuie sa acceseze baze de date trebuie facute cateva operatii suplimentare. De regula trebuie efectuati urmatorii pasi: Copierea tuturor fisierelor necesare pentru compunerea aplicatiei

web;daca se folosesc assembly-uri ce sunt accesate prin GAC acestea trebuie instalate prin utilitarul gacutil.exe.

• Daca aplicatia foloseste baze de date serverul de baze trebuie configurat atat cu baza de date si tabelele folosite cat si cu un cont de de utilizator prin care procesul lucrator sa se poate conecta la server; in cazul SQL Server trebuie avut grija daca se foloseste autentificarea integrata din Windows sau autenfificarea pe server pentru accesul la baza de date; solutia preferata este ultima intrucat serverul se poate afla pe alta masina iar autentificarea prin Windows nu se mai poate realize; un alt aspect ce trebuie tinut cont cand se folosesc servere de baze de date aflate in retea este configurarea firewall-ului de pe acea masina sa accepte conexiuni la baza de date.

Maparea directorului fizic de pe disc cu un director virtual creat in IIS.

Obs:Crearea unui director implica urmatorii pasi: 1. in consola de management IIS se dechide meniul contextual

pe un nod din treeview-ul sau cel aflat sub meniul Action al ferestrei si se alege optiunea New si apoi Virtual Directory;

2. se aleg optiunile pentru noul director virtual:cale fizica pe disc si drepturile de acces ( listarea directorului,citire, scriere );

6

Page 7: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

7

• Setarea permisiunilor pentru contului utilizatorului procesului lucrator ASP.NET. Utilizatorul Windows ce instantiaza procesul lucrator trebuie sa aiba drepturi de acces la toate resursele pe care le foloseste aplicatia web; setarea drepturilor se face din consola Computer Management.

• Setarea permisiunilor de acces la resursele aplicatiei (pagini, cod, fisere de imagine);trebuie retinut ca in momentul in care expunem directorul aplicatiei pentru acces din afara expunem toate fisierele si directoarele din el; este important sa setam dreptul pentru fiecare fisier si director in parte; cea mai des intalnita greseala este aceea de setare a dreptului de listare pentru directorul aplicatiei, in acest fel toate fisierele sunt expuse pentru copiere, inclusiv cele sursa si cele de interfata (*.aspx); trebuie avut insa grija intrucat anumite directoare si fisiere trebuie lasate pentru acces public(de exemplu fisierele css, imaginile ce compun o pagina web, etc..);

• Modificarea fisierului web.config pentru mediul de lucru al aplicatiei;de regula inseamna modificarea optiunilor de globalizare,autorizare, session state sau setarile de acces la baza de date ce se gasesc in fisierul configurare.

• Setarea parametrilor din fisierul de configurare machine.config; unul din motive ar fi in cazul unuei ferme de servere web in care din motive echilibrare a incarcarii aceeasi aplicatie web este instalata pe mai multe servere;pentru a sigura consistenta cererilor ce necesita autentificare serverele trebuie sa aiba aceeasi cheie de criptarea;

Anatomia unei aplicatii ASP.NET Aplicatiile ASP.NET sunt grupate in cadrul IIS in directoare virtuale; in acest fel directoare fizice sunt expuse de catre serverul web pentru accesul din afara. In componenta directorului aplicatiei pot intra mai multe fisiere si directoare. O aplicatie web poate fi compuna din urmatoarele ingrediente:

Pagini Web: Reprezentate de fierele cu extensia *.aspx si definesc interfata web a aplicatiei;

Servicii Web: Module ce ofera functii utile aplicatiilor(nu numai web) aflate pe alte calculatoare si pe diferite platforme; aceste module sunt reprezentate de fisiere cu extensia *.asmx;

Fisiere de cod: De obicei o pagina web este insotita de un fisier de cod ce contine logica aplicatiei pentru pagina respective; in functie de modul de separare a codului de interfata pot exista mai multe fisiere sursa;de obicei numele fisierului sursa este dat de cel al paginii web prefixat de extensia tipului de cod sursa (.cs , .vb);de exemplu pentru pagina default.aspx avem fisierul sursa (C#) default.aspx.cs; fisierul sursa poate fi schimbat prin setarea

Page 8: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

8

atributului CodeFile din elemental-directiva @Page, element aflat in antetul unei pagini ASP.NET;

Un fisier de configurare numit web.config in care sunt pastrate optiunile pentru grupul de pagini web continute in directorul current si subdirectoarele acestuia; pot exista mai multe fisiere web.config in fiecare subdirector;la nivelul sistemului setarile din toate fisierele web.config sunt vazute unitar;o pagina web poate accesa toate proprietatile din fisierele web.config aflate in directorul curent si din toate directoarele ce compun calea catre aceasta;

Fisierul Global.asax: Contine functiile de tratare a evenimentelor globale ale aplicatiei (lansarea aplicatiei, cereri, etc.)

Alte componente necesare compunerii aplicatiei;de obicei acestea sunt assembly-uri, imagini, css-uri, etc. . Incepand cu ASP.NET 2.0 structura de directoare recunoscute

automat s-a extins. Aceste directoare sunt prezenate in tabelul urmator:

Directoare Descriere

Bin Contine toate assembly-urile precompilate (de obicei Dll) pe care aplicatia ASP.NET le foloseste: clasele compilate ale paginilor web si/sau serviciilor web precum si assembly-urile referentiate.

App_Code Contine codul sursa pentru compilarea dinamica;de obicei sunt componente separate de logica aplicatiei: clase pentru logica de login sau acces la baza de date folosite in DAL (Data Access Layer);assembly-urile rezultate in urma compilarii nu sunt depuse in Bin ci in directoare temporare utilizate pentru compilarea dinamica.

App_GlobalResources In acest director sunt pastrate resursele globale ce sunt accesate de orice pagina din aplicatie;aici pot fi pastrate fisierele necesare pentru globalizare.

App_LocalResources Area acceasi semnificatie cu App_GlobalResources numai ca aceste resurse sunt dedicate numai unei singure pagini.

App_Data Acest director este folosit pentru pastrarea datelor fie ca sunt fisiere de baze de date (de exemplu *.mdf) fie fisiere XML ce contin date; tot aici se pastreaza si baza de date pentru ce furnizeaza informatii despre roluri si autentificare..

App_WebReferences Contine referinte catre servicii Web folosite de aplicatie:fisiere *.wsdl si *.disco.

App_Browsers Acest director contine definitii pentru tipurile de browser-e pentru care este destinata aplicatia. Sunt fisiere XML ce descriu capabilitatile pentru mai multe tipuri de browser-e. Desi ASP.NET realizeaza acest lucru global prin intermediul acestor definitii se pot obtine comportamente diferite ale aplicatiei in functie de browser.

App_Themes Aici sunt pastrate temele si skin-urile folosite in paginile aplicatiei.

Page 9: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

In legatura cu fisierul global.asax trebuie facute cateva precizari.

Dupa cum am spus mai sus acest fisier permite scrierea codului de tratare pentru evenimentelor globale. Desi un clientii site-ului nu acceseaza niciodata acest fisier codul din acesta se executa ca raspuns la anumite evenimente. Acest fisier nu contine cod HTML si nici ASP.NET in schimb contine metode cu nume predefinite ce sunt apelate in functie de eveniment. Unele functii sunt apelate la fiecare cerere a unei pagini; acestea sunt prezentate in tabelul de mai jos

Metode Descriere

Application_BeginRequest() Metoda apelata la inceputul fiecarei cereri.

Application_AuthenticateRequest() Metoda apelata chiar inaintea autentificarii.

Application_AuthorizeRequest() Metoda apelata dupa ce utilizatorul a fost autentificat si urmeaza sa se verifice daca are autorizare pentru a intra pe pagina.

Application_EndRequest() Este chemata chiar inainte de terminarea tratarii cererii iar obiectele create sunt dealocate din memorie.

Alte metode nu sunt apelate la fiecare cerere pentru o pagina: Metode Descriere

Application_Start() Metoda este apelata atunci cand aplicatie este lansata.Metoda este utila pentru a initializa variabile folosite in intreaga aplicatie.

Application_End() Aceasta metoda este apelata chiar inainte de terminarea aplicatiei. Acest lucru se poate intampla dupa ce un fisier de configuratie a fost actualizat sau cand IIS trebuie restartat.

Application_Error() Este apelata cand o exceptie nu a fost tratata in aplicatie.

Session_Start() Metoda invocata de fiecare data cand o noua sesiune este creata.

Session_End() Metoda apelata cand o sesiune este inchisa.O sesiune se poate inchide automat dupa oa perioada de timp (implicit 20 de minute) daca nu au mai fost cereri pentru ea.

Obs: Metodele prezentate mai sus nu sunt singurele functii de tratare a evenimentelor globale. Din aceasta selectie fac parte cele mai des folosite metode. Pentru o lista detaliate a acestor functii predefinite se poate consulta documentatia MSDN.

9

Page 10: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

10

Configurarea aplicatiilor ASP.NET

Configurarea in ASP.NET se realizeaza prin fisiere de configurare XML. Acestea sunt usor de citit si editat , sunt usor de accesat si nu sunt niciodata protejate la scriere. Aceasta ultima proprietate usureaza procesul de configurare intrucat schimbarile in fisierul de configurare sunt aplicate automat de IIS si nu manual prin intermediul unei comenzi de repornire a serverului.

Primul fisier de configurare ce trebuie luat in considerare e machine.config. Optiunile de configurare se refera la procesul lucrator ASP.NET,inregistreaza diferiti provideri pentru autentificare sau stabilirea rolurilor. Acesta se gaseste in directorul Config din directorul de instalare a versiunii de .NET Framework; acesta poate fi:

c:\[WinDir]\Microsoft.NET\Framework\[Version]\Config

Pe langa acesta in acelasi director se mai afla si web.config ce

contine setari aditionale cum ar fi handler-e HTTP8 si module HTTP9; in versiunea 1.x aceste setari se afla in machine.config.

Toate aplicatiile Web au mostenesc setarile din aceste doua fisiere. In plus setarile din aceste fisiere se pot modifica pentru fiecare aplicatie in parte sau se pot insera setari particulare prin crearea unui nou fisier web.config in acelasi director unde se afla grupul de pagini carorar le sunt detonate setarile; trebuie mentionat ca nu orice setare din fisierele primare de configurare se poate modifica, de exemplu modelul de procesare adica modul de reciclare a domeniilor de aplicatie.

Aplicatiile ASP.NET folosesc un sistem de configurare ierarhizat pe mai multe nivele ce permit utilizarea unor anumite setari pentru fiecare parte a aplicatiei. Pentru a folosi aceasta tehnica trebuie create subdirectoare in interiorul directorului radacina al aplicatiei. Fiecare subdirector mosteneste setarile directorului parinte. De exemplu daca structura directorului virtual AppWeb ar avea un subdirector SubAppWeb fiecare cu un fisier web.config pentru paginile din AppWeb se vor aplica mai intai setarile din machine.config si web.config (din directorul Config aflat in directorul de instalare a .NET Framework) si apoi cele din fisierul web.config local;pentru paginile aflate in SubAppWeb se mai aplica toate setarile de pana acum la care se dauga cele din fisierul web.config aflat in directorul local.

Continutul unui fisier ce configurare ASP.NET este cuprins in interiorul tag-ului <configuration>, ce reprezinta nodul root al documentului XML. Cele mai folosite elemente (sau sectiuni) dintr-un fisier de configurarea a aplicatiilor .NET sunt prezente mai jos: <?xml version="1.0"?>

8 Un handler HTTP reprezinta 9 Un modul HTTP

Page 11: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

11

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <appSettings> <add key="MessageOfTheDay" value="My quote"/> </appSettings> <connectionStrings> <add name="PubsConnString" connectionString= "Data Source=localhost;Initial Catalog=pubs;Integrated Security=SSPI"/> </connectionStrings> <system.web> <pages> <namespaces> <clear /> <add namespace="System" /> <add namespace="System.Collections" /> <add namespace="System.Configuration" /> <add namespace="System.Text" /> <add namespace="System.Web" /> <add namespace="System.Web.UI" /> …………… </namespaces> </pages> <authentication mode="Windows"/> </system.web> </configuration>

Trebuie facuta observatia ca sistemul de configurare e specific

tuturor aplicatiilor .NET ; insa pentru ASP.NET elementul sub care pot fi introduce optiuni specifice este <system.web>. In exemplul anterior elementul <pages> cuprinde un element <namespaces> in care sunt listate toate namespace-urile folosite in timpul fazei de precompilare.Tot in <system.web> putem alege modul de realizare a autentificarii utilizatorilor care cer o pagina;in exemplu aceasta se face pe baza autentificarii Windows. Alte elemente des utilizate din <system.web> sunt:

<compilation> - element ce contine alt element <assemlies> in care se pot lista assembly-urile folosite in aplicatie; <customErrors> - element ce precizeaza un URL de redirectare atunci cand o eroare apare in cadrul aplicatiei; <sessionState> - in cadrul acestui element se poate configura locatia unde se pastreaza starea sesiunii (in memorie, pe un server SQL ) sau modul in care sunt utilizate cookie-urile in aplicatie. <webServices> - cu acest element se pot configura serviciile web pe care aplicatie web le utilizeaza: protocolul, portul , etc. Sistemul de configurare al aplicatiilor .NET contine si alte doua

elemente des utilizate in aplicatiile ASP.NET: <appSettings> si <connectionStrings>;ultimul poate fi utilizat incepand cu versiunea 2.0

Page 12: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

a .NET Framework si prin intermediul sau se pot defini mai multe conexiuni la o baza de date.

Setarile proprii aplicatiei se pot adauga in elementul <appSettings> sub forma unor perechi cheie-valoare; valorile si cheile pot fi doar de tip sir caractere, intrucat valorile atributelor unui element XML pot fi valori de tip sir de caractere.

Accesarea si modificarea setarilor din interiorul aplicatiei se face prin folositea claselor WebConfigurationManager si Configuration10. Clasa WebConfigurationManager contine urmatorii membri utili pentru accesarea setarilor: • AppSettings – Proprietate ce acceseaza elementele din

<appSettings>; accesarea se face pe baza numelui precizat de atributul key;pentru exemplu de mai sus aveam urmatorul cod:

string MOTD=WebConfigurationManager.AppSettings["MessageOfTheDay"];

• ConnectionStrings – Proprietate prin care se pot obtine string-urile

de conexiune din <connectionStrings> : string connStr=WebConfigurationManager.ConnectionStrings["PubsConnString"]; • OpenWebConfiguration() - Metoda ce returneaza un obiect de tip

Configuration prin intermediul caruia se pot edita setarile aplicatiei; Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); config.AppSettings.Settings["MessageOfTheDay"] = "New MOTD"; ….. config.Save(); ….. Trebuie observat ca OpenWebConfiguration() primeste ca parametru o cale spre un director virtual unde se afla un fisier de configurare si returneaza un obiect de tip Configuration ce contine toate setarile mostenite pana la acest director virtual.

Obs:Incepand cu ASP.NET 2.0 setarile pentru aplicatiile Web se pot edita prin intermediul Website Administration Tool (WAT).In esenta reprezinta o aplicatie ASP.NET ce permite prin intermediul unei interfete Web modificarea sau crearea unor setari in diferite sectiuni ale fisierului de configurare. Pentru a configura setarile pentru proiectul web curent din Visual Studio 2005 se alege din meniu Website->ASP.NET Configuration.

12

10 Clase noi introduse in .NET Framework 2.0 aflate in System.Configuration si System.Web.Configuration

Page 13: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

ASP.NET Web Forms Paginile Web din ASP.NET sunt denumite oficial Web Foms si permit crerea unei aplicatii Web in acelasi mod in care este construita o aplicatie Windows folosind acceasi interfata bazata pe controale. Pentru intelegerea lor trebuie retinute urmatoarele aspecte: • Aplicatiile ASP.NET sunt executate pe server iar ceea ce apare in

browserul clientului reprezinta rezultatul acestei executii. • Ceea ce se genereaza in urma executiei unei pagini este cod HTML.

ASP.NET genereaza cod HTML in functie de posibilitatile de randare a browserului.

• Pentru interactiunea cu utilizatorii ASP.NET foloseste o metoda numita postback prin intermediul careia sunt transmise inapoi la server date despre actiunea efectuata de utilizator;o data ce ASP.NET primeste aceste date lanseaza evenimentul asignat acelei actiuni.

• Aplicatiile Web sunt aplicatii care nu pastreaza starea curenta. Inainte de a transmite codul HTML pentru randare in browser, toate obiectele care au fost construite pentru realizarea acestui cod HTML sunt distruse. Pentru remedia acest lucru se folosesc tehnici precum view state sau query string si obiecte persistente pentru o anumita durata de timp : sesiune sau aplicatie.

In continuare vor fi prezentate aspecte legate:modelul controlului in ASP.NET si procesarea paginilor ASP.NET Web Forms Controale ASP.NET Controalele ASP.NET sunt in esenta clase din biblioteca .NET Framework ce reprezinta elemente visuale intr-un web form. Ierarhia de clase pentru controale server este ilustrata in continuare:

13

Page 14: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

14

Clasa din care sunt derivate toate controalele server este Control si se afla in namepace-ul System.Web.UI; nu trebuie confundata cu cea din Windows Forms.Cei mai des folositi membri ai acestei clase in programarea paginilor si la care se vor face referiri in exemplul din acest laborator sunt prezentati in tabelul urmator:

Membri Descriere

ClientID Proprietate ce intoarce identificatorul controlului adica un nume unic ales la intantierea paginii.

Controls Returneaza o colectie de controale continute in acest control..

EnableViewState Proprietate booleana prin care se activeaza sau dezactiveaza pastrarea starii acestui control in urma unui postback;implicit ea este setata pe adevarat.

ID Returneaza sau seteaza identificatorul (String) pentru acest control; prin intermediul acestui nume controlul poate fi accesat in scripturile server-side si in cod.

Page Returneaza o referinta la obiectul paginii parinte.

Parent Returneaza o referinta la controlul parinte;acesta poate fi un obiect de tip Control sau o Page; trebuie observat ca obiectul paginii este tot un control.

Visible Returneaza sau seteaza daca acest control este vizibil sau nu;in cazul in care proprietatea este setata pe false atunci nu se va genera tag-ul HTML corespunzator.

DataBind() Metoda ce realizeaza legarea controlului si a tuturor controalelor pe care le contine la sursa de date.

FindControl() Metoda care cauta un control copil dupa nume in controlul curent sau in toate controalele pe care le contine;este returnata o referinta la tipul Control ce apoi poate fi convertita la tipul corespunzator;tipul este returnat de metoda GetType().

Render() Metoda prin intermediul careia este generat codul HTML al acestui controlului;nu este apelabila direct intrucat accesul este protected, in schimb ASP.NET cheama aceasta metoda cand pagina este randata

Controalele server HTML din System.Web.UI.HtmlControls constituie

wrappere peste controalele standard HTML. Acestea sunt declarate la fel insa se mai adauga atributul runat=”server” pentru a se specifica faptul ca sunt executate pe server. Orice control HTML poate fi tranformat intr-unul server daca se dauga acest atribut;daca nu exista o corespondenta directa in libraria de clase ASP.NET va folosi clasa HtmlGenericControl. In total sunt 20 de clase avand clasa de baza HtmlControl; ierarhia de clase este urmatoarea:

Page 15: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

Cea de-a doua categorie importanta de controale ASP.NET o reprezinta cea a controalelor Web. Ierarhia de clase se poate observa in imaginea urmatoare:

Acestea contin aceeasi functionalitate a controalelor HTML dar contin un set proprietati si metode mult mai usor de inteles si folosit;de exemplu setarile de stil la cele de tip “html” se aplica prin precizarea unui css, pe cand la cele “web” acest lucru se face programatic prin setarea unor proprietati.In plus tipurile de controale sunt destul de

15

Page 16: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

16

limitate ca numar si ca functionalitati intrucat depind de standardul HTML. Controlele Web din ASP.NET ofera o mult mai multe tipuri controale si cu functionalitati mai complexe. Clasele de baza pentru aceste controale sunt WebControl si BaseBoundControl pentru controale ce reprezinta structuri de date complexe (liste , arbori).

Alte diferente intre cele doua tipuri de controale ar fi:

WebControl ofera un model mult mai abstract si mai consistent decat controalele server HTML

Controale “web” pot genera mai multe tag-uri HTML plus acolo unde este cazul JavaScript.

Declararea lor se face cu sintaxa <asp:tipcontrol> avand grija sa prefixam numele cu “asp:”;acest prefix ajuta la distingerea celor doua tipuri;

Controale Web trebuie sa se supuna urmatoarelor reguli: • Fiecare declaratie trebuie sa aiba un tag de inchidere sau un

element gol “/>” la sfarsit;tag-urile ASP.NET urmeaza aceleasi reguli ca XHTML;

• Toate controalele Web trebuie declarate cu un atribut runat=”server” chiar daca nu declaseaza un postback;acest lucru nu este aplicabil in cazul celor “html”;

In cadrul controalelor Web exista si doua tipuri speciale ce controale :

• Rich sau avansate:Acestea au posibilitatea de a genera cantitati mari de cod HTML si JavaScript pentru a crea interfata;de exeplu controlul de tip calendar sau TreeView;

• Controale de validare:Permit validarea datelor de intrare pentru un control;de exemplu se poate restrictiona tipul si numarul caractere folosite ca date de intrare pentru un control de tip textbox;

Pe langa aceasta clasificare controalele Web mai pot fi grupate in functie de specializarea lor:

• Controale pentru reprezentarea structurilor de date. Aici sunt incluse controalele de tip grid si lista proiectate pentru a putea afisa cantitati mari de informatie permitand paginarea, editarea sau sortarea elementelor;un al aspect nou introdus in cadrul acestor date este folosirea sabloanelor ce permit crearea de controale adaptabile la tipul de vizualizare dorit;

• Controale de navigare: permit utilizatorului navigarea prin structura site-ului web;

Page 17: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

17

• Controale de login: aceste controale usureaza munca in realizarea de pagini de login intrucat interfata lor este usor adaptabila si urmazeaza modelul de autentificare din ASP.NET;

• Web parts: Reprezinta un set de controale utilizate in constructia portalelor si site-urilor web configurabile de catre utilizatori;

• Controale Mobile ASP.NET: Sunt controale asemanatoare cu cele web insa sunt adaptate pentru clienti mobili cum ar fi dispozitive precum PDA sau smartphone sau orice telefon mobil ce poate randa pagini in standardele HTML si WML (Wireless Markup Language).ASP.NET genereaza controale in functie de capabilitatile browser-ului de pe dispozitivul mobil genereaza pagini WML sau HTML;

Web Forms – Procesarea paginilor ASP.NET Pentru intelegerea modelului de procesare a a paginilor ASP.NET este vital cunoasterea fazelor procesare si ordinea in care sunt executate si evenimentele care le ridica. In mare orice pagina ASP.NET parcurge 6 etape importante. Crearea si initializarea paginii (ASP.NET). In prima faza ASP.NET creeaza obiectul paginii, generaza controalele definite cu tag-uri in fisierul *.aspx;in plus daca cererea este un postback, informatia de view state este deserializata si apoi pe baza ei sunt initializate controalele. La acest pas este ridicat evenimentul Page.Init;acesta este rar folosit intrucar unele controale ori nu au fost create ori nu au fost initializate cu informatia din view state. In aceasta aceasta etapa operatiile de creare si initializare sunt efectuate automat de framework. Initializarea paginii din codul aplicatiei. In aceasta faza obiectele pentru controale au fost deja create si initializate fie cu valorile implicite fie cu informatia din view state. Evenimentul ce marcheaza aceasta etapa este Page.Load executat la fiecare cerere chair si daca este un postback. Diferentierea intre cele doua actiuniu se face prin inspectarea proprietatii statice Page.isPostBack. Acest moment este indicat pentru initializarea controalelor cu date obtinute prin operatii consumatoare de timp si trebuie initializate o singura data;de exemplu afisarea unei tabele intr-un control GridView: la un eventual postback se verifica proprietatea isPostBack si se trece peste preluarea tabelei din baza de date. In celelalte cazuri activarea view state-ului ( vezi proprietatea Control.EnableViewState) rezolva initializarea controlului. Validarea.ASP.NET introduce controale noi de validare ce realizeaza verificarea automata a datelor introduse de utilizatori iar unde este cazul afiseaza mesaje de eroare. Aceste controale “intra in

Page 18: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

functiune” dupa incarcarea paginii dar inainte de tratarea celorlalte evenimente. Daca o pagina a fost validata sau nu se poate determina cercetand proprietatea Page.IsValid. Tratarea evenimentelor. In aceast punct controalele sunt create si intializate iar pagina este validata. In general evenimentele controalelor web pot fi clasificate in doua categorii: declansate imediat (butoane ,link-uri sau controale ce utilizeaza functia JavaScript __doPostBack() ) si cele declansate la o schimbare de stare ( de exemplu selectarea unui element dintr-un drop down list). In cazul controalelor web evenimentele de schimbare de stare pot declansa postback automat prin setarea pe adevarat a proprietatii AutoPostBack;in caz contrar evenimentul se va executa la urmatorul postback. Legarea automata a datelor (data binding).In mare pentru controalele ce folosesc surse de date exista doua momente in care se interogheaza sursa de date:unul chiar inaintea evenimentului Page.PreRender si consta in actualizarea sursei (inserari,stergeri si actualizare) si a doua dupa tratarea evenimentului in care datele sunt preluate din sursa de date si aduse controalelor la care sunt asignate; acest model vine cu o limitare intrucat nici o functie de tratare a unui eveniment nu poate accesa ultimele date luate din sursa de date intrucat acestea nu au fost luate inca; evenimentul Page.Unload este declansat dupa ce codul HTML a fost generat. Evenimentul Page.PreRender semnifica ultima actiune inainte de generarea codului HTML. Distrugerea obiectelor.Aceasta faza incheie ciclul de viata al unei pagini web si consta in distrugerea obiectelor componente ale paginii si este precedata de evenimentul Page.Unload . Orice resursa unmanaged trebuie dealocata la acest pas;cel mai adesea se utilizeaza evenimentul Page.Dispose declansat cand pagina este distrusa de garbage collector.

Obs:Termenul de postback se refera la o actiune specifica pentru o pagina web interactiva ce consta in trimiterea ei in forma in care se afla pe calculatorul utilizatorului inapoi la server pentru procesare.

Obiectele ASP.NET si gestionarea stariilor obiectelor Fiecare pagina , la nivel de code-behinde , este derivata din clasa Page din namespace-ul System.Web.UI . Clasa nou creata mosteneste pe langa o enorma functionalitate si cateva proprietati utile: Session, Application, Request ,Response, Server si User. Aceste proprietati corespund unor obiecte de sine statatoare din ASP.

18

Page 19: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

19

Obiectul Request este o instanta a clasei HttpRequest din namespace-ul System.Web. Acest obiect reprezinta contextul cererii HTTP care a determinat incarcarea paginii. Contine infromatii despre parametrii din URL si informatiile trimise de browserul clientului.Cativa dintre cei mai des folositi membri sunt prezentati in tabelul urmator: Proprietate Descriere

ApplicationPath Intoarce calea relativa catre directorul virtual curent al aplicatie.

PhysicalPath Intoarce calea fizica a directorului aplicatiei.

Cookies Intoarce o colectie de coockie-uri trimise de acesta cerere.

QueryString Intoarce o tabela hash avand drept cheie numele parametrului din lista de parametri din URL.

Obiectul Response este o instanta clasei HttpResponse din

namespace-ul System.Web .Intrucat controalele web pot genera cod HTML acest obiect nu este utilizat foarte rar pentru a genera programatic cod HTML. Cea mai frecvent utilizare este atunci cand se doreste o redirectare;aceast lucru se realizeaza prin metoda Redirect() .Un scenariu in care poate utilizat este atunci cand un utilizator incearca sa intre pe o pagina si nu are destule drepturi, atunci va fi redirectat catre o pagina ce contine un text de eroare. Alt scenariu des intalnit implica folosirea query string pentru a transmite parametri paginii de redirectare. Exista un mic inconvenient intrucat redirectarea nu se face automat: se trmite un mesaj inpoi la browser si il informeaza despre noua pagina. Obiectul Sever este reprezentat de clasa HttpServerUtility din cadrul aceluiasi namespace ca si obiectele prezentate pana acum si contine functii si proprietati ajutatoare. O functie utila este Tranfer() ce realizeaza o redirectare catre o pagina din aplicatia curenta;desi nu poate face redirectare catre alta pagina aflata pe alt server web sau non-ASP.NET este mai rapida decat Request.Redirect() intrucat nu se mai transmite nici un mesaj browserului web. La fel de utila este si functia MapPath() ; folosita impreuna cu Request.ApplicationPath se obtine o cale fizica absoluta ca in exemplul urmator: string physicalPath = Server.MapPath(Request.ApplicationPath + "/info.txt")); Obiectul User contine informatia despre utilizatorul care initiaza cererea curenta si permite testarea rolului sau. Clasa implementeaza interfata System.Security.Principal.IPrincipal. Obiectul sesiune este o instanta a clasei HttpSessionState din namespace-ul System.Web.SessionState. Este proiectata pentru a pastra orice date specifice pentru un singur utilizator intre cereri.

Page 20: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

Obiectul sesiune ofera un dictionar de elemente cheie-valoare ce reprezinta datele utilizatorului pentru aceasta sesiune. In spatele acestui obiect se afla o intreaga arhitectura intrucat mentinerea informatiilor despre sesiune nu face parte din standardul HTTP.Principalele caracteristi ale acestui model de gestionare a starilor sunt: • Permite pastarea tuturor tipurilor serializabile;cele neserializabile pot

fi pastrate doar daca sesiunea este configurata in-process; • Mentinerea datelor se face atat in:memoria serverului, folosind un

proces separat sau memorate intr-o baza de date; • Timpul de viata al sesiunii implicit este de 20 de minute de la ultima

cerere insa poate fi modificata programatic; • Obiectul poate fi accesat din toata aplicatia;

Obs:Configurarea sesiunii,asa cum precizam anterior, se poate face prin actualizarea elementului <sessionState> din fisierul de configurare web.config .

Pentru pastrarea evidentei sesiunilor deschide, ASP.NET foloseste un identificator unic pe 120 de biti prin intremediul caruia poate diferentia sesiunile existente. Trebuie retinut ca de fiecare data cand este deschisa o noua sesiune este creat un nou identificator si trimis browser-ului client.

In ASP.NET exista doua moduri de transmitere a acestei informatii: implicit, printr-un cookie, ce are implicit numele ASP.NET_SessionId sau in cazul in care clinetul nu suporta cookie-uri prin inserarea in cadrul URL-lui ca in exemplul urmator: http://localhost/WebApp/((tmyvyy54esofk4g5cffbiqash)/index.aspx Pentru configurarea celor doua moduri se utilizeaza atributele cookieless si cookieName din elementul <sessionState> al fisierului de configurare web.config, dupa cum urmareaza: <sessionState cookieless="UseCookies" cookieName="ASP.NET_SessionId" />

Exista trei moduri de lucru pentru sesiune:

1. InProc: obiectele ce compun starea sesiunii sunt pastrate in spatiul de memorie alocat domeniului aplicatiei ASP.NET;aceasta este optiunea implicita pentru modul de operare a sesiunii. Un aspect negativ ar fi acela ca starea sesiunii fiind pastrata in memorie se poate pierde foarte usor daca domeniul aplicatiei sau serverul sunt repornite. Cu toate acestea ofera o performanta mai ridicata decat celelalte moduri si se pot pastra obiecte chiar si neserializabile;

20

Page 21: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

21

2. StateServer: Tinand cont ca domeniul aplicatiei sau serverrul web se pot reinitializa pierzandu-se informatiile din starea sesiune ASP.NET foloseste un proces separat aspnet_state.exe (sub forma unui serviciu Windows). Acest mod este util in nu numai pentru a preveni pierderea de informatii ci si pentru a sincroniza datele cand aplicatia ruleaza intr-o ferma de servere web. Pentru a configura acest mod trebuie precizat adresa ip si portul la care asculta acest serviciu prin atributul stateConnectionString din elementul <sessionState> din fisierul de configurare. Obiectele salvate aici trebuie sa fie serializabile.

3. SqlServer: A treia varianta de pastrare a starii sesiunii este prin folosirea unui server SQL. Obiectele din sesiune trebuie sa fie serializabile. In fisierul configurare trebuie precizat un connection string. Nu intotdeauna este precizata baza de date in acesta; baza de date considerata implicit este ASPState. In functie de modul de operare: temporar (datele sesiunii sunt pierdute cand serverul SQL este oprit) sau persistent in directorul de intalare al .NET Framework exista doua seturi de scripturi SQL (instalare si dezinstalare).

Obiectul aplicatiei este similar si obiectul sesiunii pastreaza obiectele globale intr-o structura de tip dictionar; fiecare valoare este retinuta ca o referinta de tip Object iar durata lor de viata este dependenta de cea a aplicatiei.In ceea ce priveste gestionare starii aplicatiei exista clasa HttpApplicationState din namespace-ul System.Web ce mentine o colectie de obiecte globale comune tuturor clientilor. O alta varianta de a declara variabile globale pentru aplicatie este de a adauga membri statici in clasa aplicatiei;clasa derivata din HttpApplication. Cu toate ca ASP.NET creeaza un obiect HttpApplication pentru fiecare cerere membrii static sunt comuni. Trebuie facuta observatia ca acesti membri pot fi accesati in acelasi timp de mai multe fire de executie (corespunzand unui client) lucru ce implica crearea unui mecanism de excludere mutuala. Tema

Page 22: ASP

Sisteme Distribuite Introducere in aplicatii ASP.NET

22

Bibliografie [1] Pro ASP.NET 2.0 in C# 2005 Matthew MacDonald , Mario Szpuszta, Apress 2005 [2] MSDN 2005 [3] Programming .NET Web Services, Alex Ferrara, Matthew MacDonald O’Reilly, 2002 [4] http://www.gotdotnet.com