Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica


Informatica


Qdidactic » stiinta & tehnica » informatica
Implementarea unei interfete web pentru o agentie de turism - tehnologii utilizate in implementarea aplicatiei



Implementarea unei interfete web pentru o agentie de turism - tehnologii utilizate in implementarea aplicatiei


IMPLEMENTAREA UNEI INTERFETE WEB PENTRU O AGENTIE DE TURISM - Tehnologii utilizate in implementarea aplicatiei

1. Baze de date. Notiuni introductive


Sistemele de baze de date au devenit o componenta esentiala a vietii de fiecare zi in societatea moderna. In cursul oricarei zile, fiecare dintre noi desfasuram activitati care implica interactiunea cu o baza de date, ca de exemplu, depunerea sau extragerea unor sume de bani din banca, rezervarea biletelor la tren sau avion, rezervarea locurilor la hotel, cautarea unei referinte bibiografice intr-o biblioteca computerizata (digital library), etc.



In sensul cel mai larg, o baza de date (database) este o colectie de date corelate din punct de vedere logic, care reflecta un anumit aspect al lumii reale si este destinata unui anumit grup de utilizatori. O baza de date poate fi creata si mentinuta manual (de exemplu, fisele de evidenta a cartilor dintr-o biblioteca, asa cum erau folosite cu ani in urma) sau computerizat, ceea ce reprezinta obiectul cursului de fata.

Un sistem de baze de date (database system) este un sistem computerizat de mentinere a evidentei unei anumite activitati.

Sistemele de baze de date pot avea dimensiuni (numar de inregistrari) extrem de variate, de la cateva zeci de inregistrari (de exemplu, o agenda cu numere de telefon) sau poate ajunge la sute de milioane de inregistrari (de exemplu, intr-un sistem de plata a taxelor si impozitelor).

Utilizatorul unei baze de date are posibilitatea de a efectua mai multe categorii de operatii asupra datelor stocate:

- Introducerea de noi date (insert);

- Stergerea unora din datele existente (delete);

- Modificarea datelor memorate (update);

- Interogarea bazei de date (query), pentru a regasi anumite informatii, selectate dupa un criteriu ales.

Definitia unei colectii de date ca fiind o baza de date se aplica, in sens mai restrans, acelor colectii de date care permit toate operatiile de mai sus, inclusiv operatia de interogare. Simple colectii de fise (documente) dau fisiere de date, care contin inregistrari cu o organizare simpla si care nu admit operatii de interogare (selectarea unor informatii dupa un criteriu ales), nu sunt considerate baze de date.

De exemplu, un editor de text (ca Microsoft Word) permite memorarea unor informatii (texte), care pot fi create, modificate si consultate, dar nu se pot efectua operatii de interogare. La fel, un instrument de calcul tabelar (cum este Microsoft Excel) ofera reprezentarea in diferite forme a unor date (tabele, grafice), dar nu permite operatii de interogare.

1.1. Componentele unui sistem de gestiune a bazelor de date


Componenele unui sistem de gestiune a bazelor de date sunt: hardware, software, utilizatori, date.


Figura 1. Componentele unui sistem de gestiune a bazelor de date


Hardware. Sistemele de baze de date sunt, de regula, instalate pe calculatoare de uz general, de la calculatoare PC standard, pana la statii multiprocesor puternice. Bineinteles, performantele generale de operare ale calculatorului (numarul si viteza procesoarelor, dimensiunea si viteza de operare a memoriei principale) influenteaza in mod corespunzator performantele sistemului de baze de date. Dar, ceea ce intereseaza in mod deosebit in utilizarea unui calculator pentru un sistem de baze de date este volumul (capacitatea) memoriei secundare, utilizata pentru memorarea colectiei de date persistente ale bazei de date. Dat fiind ca intr-un sistem de baze de date este necesar accesul rapid la oricare din inregistrarile de date, pentru memorarea acestora se folosesc discurile magnetice (hard-discuri), benzile magnetice fiind utilizate numai pentru duplicarea (backup) datelor.

Software. Intre baza de date (colectia de date memorate fizic in fisiere pe hard-discuri) si utilizatorii sistemului exista un nivel software, numit Sistem de Gestiune a Bazei de Date (SGBD) (Database Management System - DBMS). Toate cererile utilizatorilor de a accesa baza de date (pentru introducere, stergere, modificare sau interogare) sunt gestionate (administrate) de catre SGBD, care elibereaza utilizatorii de necesitatea de a cunoaste organizarea particulara ale sistemului (driverele de disk, fisieree memorate, structura inregistrarilor de date). Cu alte cuvinte, SGBD permite utilizatorilor sa aiba o viziune (vedere - view) la un nivel inalt a bazei de date, precum si acces la aceasta prin operatii de nivel inalt, independent de detaliile de organizare hardware ale sistemului. Mai mult, SGBD-ul permite protectia datelor impotriva acceselor neautorizate, asigurand integritatea bazei de date.

SGBD-ul este cea mai importanta componenta software a unui sistem de baze de date, dar nu este singura componenta utilizata. Astfel, orice SGBD este dezvoltat si executat sub controlul sistemului de operare al calcuatorului respectiv. De asemenea, sunt folosite numeroase alte componente software pentru proiectarea, dezvoltarea sau exploatarea aplicatiilor de baze de date.

Utilizatori. Utilizatorii unui sistem de baze de date se pot imparti in trei categorii: programatorii de aplicatii, utilizatorii finali si administratorul bazei de date.

Programatorii de aplicatii sunt cei care scriu (dezvolta) aplicatiile de baze de date, folosind limbaje de programare de nivel inalt (Cobol, PL/1, Fortran, C, C++, Java, Basic) cu extensii care permit incorporarea unor operatii specifice de acces la baza de date. Aplicatiile rezultate pot fi aplicatii cu executie independenta (batch-processing) sau pot fi aplicatii conversationale (on-line) utilizate de utilizatorii finali ai sistemului pentru a accesa (intr-un mod mai eficient si mai sigur) baza de date.

Utilizatorii finali sunt acei utilizatori care acceseaza baza de date prin intermediul unui program de aplicatie care le confera numai anumite posibilitati de executie si drepturi limitate de acces la date. Utilizatorii finali sunt persoane cu pregatire tehnica minimala, care efectueaza un volum mare de operatii asupra bazei de date, dar nu trebuie sa cunoasca mai mult decat posibilitatile oferite de programul pe care il utilizeaza. De exemplu, utilizatorii finali ai unui sistem de rezervare a bietelor de avion sunt agenti de vanzari, care folosesc programul adevcat (scris de programatorii de aplicatii), fara sa fie necesar sa cunoasca intreaga structura a bazei de date.

Administratorul bazei de date este o persoana cu inalta calificare tehnica care are ca sarcina mentinerea functionalitatii bazei de date prin stabilirea drepturilor de acces a diferitelor categorii de utilizatori, prin efectuarea operatiilor periodice de salvare a datelor (backup), prin monitorizarea performantelor sistemului.

Date. Datele memorate intr-o baza de date sunt date persisente, adica date care raman memorate pe suport magnetic, independent de executia programelor de aplicatii. Datele persistente ale unei baze de date se introduc, se sterg sau se actualizeaza folosind date de intrare (provenind de a tastatura, sau receptionte prin transfer de mesaje). Datele de intrare sunt date nepersistente; ele sunt generate de utilizatori si sunt memorate (devenind date persistente) numai dupa ce au fost validate (acceptate) de catre SGBD. Datele de iesire ale unui sistem de baze de date sunt, de asemenea, date nepersistente; ele provin din operatii de interogare a bazei de date si sunt puse a dispozitia utilizatorului (sub forma de afisari, rapoarte tiparite, etc).

Toate aceste componente asigura exploatarea unei baze de date dupa ce aceasta a fost proiectata si realizata. Activitatea de proiectare a unei baze de date implica alte categorii de personal cu inalta calificare tehnica (analisti, programatori) sau administrativa (administrator de date). Proiectantii bazelor de date au responsabilitatea de a analiza realitatea reprezentata (modelata) de baza de date respectiva, de a identifica datele necesare sa fie memorate, care sa asigure mentinerea evidentei activitatii dorite. De asemenea, in cursul proiectarii unei baze de date, proiectantii selecteaza componentele hardware (sistemul de calcul), software (sistem de operare, SGBD, instrumente de dezvoltare si limbaje de programare), stabilesc structura conceptuala a bazei de date si mentin interactiunea cu utilizatorii potentiali, pentru a asigura cerintele de prelucrare ale acestora. Aspecte privind proiectarea bazelor de date vor fi studiate in mai multe din capitolele urmatoare.

1.2. Arhitectura interna a sistemelor de baze de date


Arhitectura interna a unui sistem de baze de date propusa prin standardul ANSI/X3/SPARC (1975) contine trei nivele functionale: nivelul intern, nivelul extern si nivelul conceptual.

Figura 2. Arhitectura interna a sistemelor de gestiune a bazelor de date


Nivelul intern este nivelul de reprezentare a datelor pe suportul fizic.

Nivelul extern reprezinta modul in care datele sunt percepute de utilizatori, existand cate o vedere (view) individuala a datelor pentru fiecare utilizator.

Nivelul conceptual corespunde unei reprezentari unice si abstracte a datelor, care asigura legatura intre nivelul extern si cel intern. Nivelul conceptual este o vedere a intregului continut a bazei de date prin intermediul schemei conceptuale a acesteia.

Toate aceste reprezentari sunt accesate prin intermediul SGBD-ului care asigura, de asemenea, cele doua corespondente (mappings): intre nivelul extern si nivelul conceptual si intre nivelul conceptual si nivelul intern.

1. Limbaje si interfete ale sistemelor de gestiune a bazelor de date


Orice SGBD suporta doua categorii de limbaje conceptuale: limbaje de descriere a datelor (LDD, Data Description Language - DDL) si limbaje de manipulare a datelor (LMD, Data Manipulation Language - DML). LDD permit definirea conceptuala a datelor, fara referinta la modul de memorare fizica a datelor, asigurand in acest fel independenta datelor in sistemele de baze de date. LMD asigura operatiile de introducere si prelucrare a datelor (actualizare, stergere, interogare).

In momentul actual, limbajul cel mai frecvent utilizat in sistemele de baze de date relationale este limbajul SQL (Structured Query Language), care include componentele LDD si LMD. Orice operatie asupra unei baze de date relationale se adreseaza SGBD-ului prin instructiuni SQL.

Instructiunile SQL pot fi trimise de catre utilizatori in mod interactiv (de la o consola) si sunt prelucrate direct de o componenta a SGBD sau pot fi inglobate (embeded SQL) in limbaje de programare de nivel inalt si transmise SGBD-ului in cursul executiei programelor respective. Programele de aplicatii de baze de date mai prezinta, de regula, interfete grafice cu meniuri si comenzi prin intermediul carora utilizatorii finali pot introduce, modifica sau selecta diferite date sau criterii de selectie.

De asemenea, multe SGBD-uri contin o interfata speciala pentru administratorul bazei de date, prin care acesta poate crea conturi, utilizatori, drepturi etc.


1. Avantajele oferite de sistemele de gestiune a bazelor de date


Fata de metodele mai vechi de inregistrare a datelor privind diferite activitati pe fise (documente scrise) sau chiar in fisiere pe disc, sistemele de baze de date ofera avantaje considerabile, ceea ce explica extinsa utilizare a acestora. Cateva dintre avantajele oferite sunt:

- Compactitate ridicata fata de volumul ocupat de documente scrise sau de fisiere necorelate;

- Viteza mare de regasire si actualizare a informatiilor, folosind interogari ale bazei de date.

- Reducerea redundantei datelor memorate, prin partajarea datelor intre mai multi utilizatori si aplicatii. In stocarea pe fise sau in fisiere a datelor, fiecare aplicatie continea propriile seturi de date. In sistemele de baze de date, mai multe aplicatii pot folosi date comune, memorate o singura data. De exemplu, o aplicatie de personal si o aplicatie de rezultate la examene dintr-o universitate care exploateaza o singura baza de date, pot folosi aceleasi informatii referitoare a structurarea facultatilor si a sectiilor.

- Posibilitatea de introducere a standardelor privind modul de stocare a datelor, ceea ce permite interschimbul informatiilor intre diferite organizatii.

- Mentinerea integritatii datelor prin politica de securitate (drepturi de acces diferentiate in functie de rolul utilizatorilor), prin gestionarea tranzactiior si prin refacerea datelor in caz de functionare defectuoasa a diferitelor componente hardware sau software.

- Independenta datelor fata de suportul hardware utilizat. Sistemele de gesiune a bazelor de date ofera o vedere (view) externa (logica) a datelor, care nu se modifica atunci cand se schimba suportul de memorare fizic, ceea ce asigura imunitatea structurii bazei de date si a aplicatiilor la modificari ale sistemului hardware utilizat.

1.5. Clasificarea sistemelor de gestiune a bazelor de date


Se pot lua in considerare mai multe criterii de clasificare ale sistemelor de baze de date.

Clasificare dupa modelul de date. Majoritatea sistemelor de baze de date actuale se bazeaza pe modelul de date relational (relational data model) sau pe modelul de date obiect (object data model). Dezvoltarea continua a acestor modele a condus catre o noua categorie de baze de date, numite obiect-reationale, care combina caracteristicile modelului relational cu cele ale modelului obiect. De asemenea, mai sunt inca in functiune baze de date in modele mai vechi (modelul ierarhic sau modelul retea). Modelele de date utilizate de SGBD-uri vor fi studiate in capitolul urmator.

Clasificare dupa numarul de utilizatori. Majoritatea sistemelor de baze de date sunt sisteme multi-utilizator, adica permit accesul concurent (in acelasi timp) a mai multor utilizatori la aceeasi baza de date. Un numar redus de sistemelor de baze de date sunt de tip mono-utilizator, adica suporta accesul doar a unui singur utilizator (la un moment dat).

Clasificare dupa numarul de statii pe care este distribuita baza de date. Exista doua categorii de sisteme de baze de date: centralizate si distribuite.

Un sistem de baze de date este centralizat daca datele sunt stocate pe o singura statie (calculator). Un sistem centralizat poate suporta unul sau mai multi utilizatori, dar, in ambele situatii, datele, ca si SGBD-ul, rezida in intregime pe o singura statie.

Un sistem de baze de date distribuit poate avea datele, ca si SGDB-ul, distribuite in mai multe statii interconectate intr-o retea de comunicatie.

Sistemele de baze de date pot fi reprezentate din punct de vedere a utilizarii lor printr-o arhitectura de tip client-server.

Intr-un sistem centralizat exista un singur server, care este chiar SGBD-ul, care raspunde cererilor unui singur client (in sistemele mono-utilizator) sau mai multor clienti (in sistemele multi-utilizator), accesand baza de date respectiva. Clientii sunt programe de aplicatii, oferite de furnizorul SGBD-ului sau dezvoltate de programatori (utilizatori). Aplicatiile client pot fi executate pe statii diferite, conectate printr-o retea de comunicatie cu statia pe care este executat serverul. Aceasta arhitectura permite o prelucrare distribuita a datelor si, mai mult, o configurare a sistemului adaptata cerintelor de calcul particulare.

Astfel, serverul bazei de date poate fi un sistem puternic, echipat corespunzator (cu volum mare de memorie secundara), in timp ce fiecare client este o statie personala, cu putere de calcul adecvata aplicatiei executate.

Figura Sisteme de baze de date centralizate:

(a) mono-utilizator;              (b) multi-utilizator


Sistemele de baze de date distribuite pot fi reprezentate intr-un mod asemanator din perspectiva structurarii client-server.



Figura  Sistem de baze de date distribuita


Mai multe servere, continand SGBD si date sunt distribuite pe statii conectate printr-o retea de comunicatie, in timp ce aplicatiile client ruleaza pe alte statii din retea si solicita servicii de la servere. Numeroase probleme de partitionare a datelor memorate, de optimizare, de transparenta a accesului sunt rezolvate de catre SGDB distribuite.

2. Tehnologii utilizate in proiectarea si design-ul site-urilor Web

2.1. Tehnologii client

2.1.1. HTML


Hyper Text Markup Language (HTML) [1,7] este, cu siguranta, cea mai uzuala si cea mai importanta componenta in crearea paginilor web.

HTML este o forma de marcare orientata catre prezentarea documentelor text pe o singura pagina. Se axeaza mai mult pe prezentarea informatiilor decat pe descrierea semanticii documentului. Acesta furnizeaza mijloacele prin care continutul unui document poate fi adnotat cu diverse tipuri de metadate si indicatii de redare.

HTML este  utilizat si in e-mail. Majoritatea aplicatiilor de e-mail folosesc un editor HTML, incorporat pentru compunerea e-mail-urilor si un motor de prezentare a e-mail-urilor de acest tip.

HTML este codul care sta la baza paginilor web. Paginile HTML sunt formate din etichete sau tag-uri si au extensia .html sau .htm.

HTML-ul este format din 2 componente:

Head - sectiunea unde sunt este declarat titlul paginii si detalii despre aceasta;

Body - care contine corpul paginii web.

Exemplu de HTML:

<HTML>

<HEAD>

<TITLE>Titlul paginii</TITLE>

// si alte elemente de inceput

</HEAD>

<BODY>

// corpul documentului

</BODY>

</HTML>

2.1.2. CSS


CSS [1,6,7] (Cascading StyleSheet) este un standard utilizat pentru formatarea elementelor unui document HTML.

Stilurile se pot atasa elementelor HTML prin intermediul unor fisiere externe sau in cadrul documentului, prin elementul "<style>" si/sau atributul "style". CSS se poate utiliza si pentru formatarea elementelor XHTML, XML si SVGL.

Sintaxa CSS poate fi folosita in 3 locatii:

- a proprietate a etichetelor din documentul HTML - de tip in linie (inline);

- informatia este introdusa in blocul head - de tip incorporat (embedded)

- comenzile se afla in pagini separate - de tip extern.

Folosirea unui fisier extern cu comenzi CSS este foarte util deoarece poate fi folosit in mai multe situatii, un fisier CSS poate fi folosit in nenumarate fisiere HTML, timpul necesar reintroducerii codului in fiecare pagina este eliminat.

Legatura paginilor HTML cu fisierele extene CSS se face prin introducerea urmatoarei linii:  

<link rel='stylesheet' type='text/css' href='nume_fisier.css'>[6]

Comenzile incorporate (embedded) sunt cele gazduite intre perechea de etichete <head> si </head> din corpul programului.

Comenzile in linie (inline) sunt cele mai folosite, ele suprascriu orice alta comanda CSS. Sunt amplasate in interiorul etichetelor HTML aflate in zona BODY.

2.1. JavaScript


JavaScript [1,6,7] este un limbaj de programare orientat pe obiecte bazandu-se pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor functionalitati in paginile web, codul Javascript din aceste pagini fiind rulat de catre browser.

Limbajul este binecunoscut pentru folosirea sa in construirea paginilor de internet, fiind folosit si pentru accesul la obiecte incadrate (embedded objects) in alte aplicatii. A fost dezvoltat initial de catre Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, si denumit in final JavaScript.

Chiar daca se aseamana din punct de vedere al sintaxei si al numelui, in afara unori similaritatii, intre JavaScript si limbajul Java nu exista nici o legatura. Asemeni Java, JavaScript are o sintaxa asemanatoare cu cea a limbajului C, dar are mai multe lucruri in comun cu limbajul Self decat cu Java.

JavaScript se foloseste pentru scriptarea paginilor HTML, adica introducerea unor scripturi, cum ar fi: verificarea datelor introduse de utilizator, efecte de animatie etc.

O tehnica tot mai des folosita este AJAX (Asynchronous JavaScript and XML). Aceasta tehnica consta in executarea de cereri HTTP in fundal, fara a reincarca toata pagina web, si actualizarea numai anumitor portiuni ale paginii prin manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfete web cu timp de raspuns mic, intrucat operatia (costisitoare ca timp) de incarcare a unei pagini HTML este in mare parte eliminata.

2.1. jQuery


jQuery este o librarie Javascript ca si mootools, prototype, script.aculo.us etc. Libraria  permite prin multitudinea de functii executia, controlul, modificarea codului html, folosind cod javascript mai simplu si mai putin. Ca dimensiune este relativ mica (aprox 20kb daca este packed&zipped), ceea ce-l face potrivit pentru majoritatea situatiilor.

jQuery  are o documentatie bine elaborata, bine structurata si usor de inteles, asa incat codul sa se poata introduce repede pe pagina de web. In plus, are o promovare foarte mare, unde se pot gasi tutoriale, cod gata facut, plugin-uri, la tot pasul.

Plugin-urile sunt scripturi ce extind capabilitatile jQuery (sunt plugin-uri pentru drag & drop, submiterea unui formular prin ajax, galerii de imagini, etc).

Se introduce intre  <head></head>, sub stilurile .css, unul din urmatoarele coduri:

<script type='text/JavaScript'src='http://code.jquery.com/jquerylatest.js'>

</script>

sau doar:

<script type='text/JavaScript' src='http://code.jquery.com/jquery.js'>

</script>

sau compresat:
<script type='text/JavaScript'

src='http://code.jquery.com/jquerylatest.min.js'>

</script>

De preferat ar fi sa se descarce scriptul si sa fie amplasat pe server pentru a evita anumite complicatii sau alte neclaritati. Linkurile de mai sus reprezinta calea  catre ultima versiune a librariei.

Alte solutii mai sigure ar putea fi  google, pe pagina http://code.google.com/p/jqueryjs/downloads/list , si se selecteaza versiunea:

<script type='text/javascript'

src='http://jqueryjs.googlecode.com/files/jquery-1.2.min.js'>

</script>

2.2. Tehnologii server

2.2.1.  XML


XML [1,3, 6,7] sau Extensible Markup Language a fost definit de consortiul W3C. Este un limbaj de programare, un standard de creare a documentelor specifice si o modalitate de transmitere a datelor intre aplicatii scrise atat in limbaje diferite, cat si pe platforme de dezvoltare diferite. Prin constructie, documentele XML sunt asemenea documentelor SGML.

A fost proiectat pentru :

- a fi simplu de utilizat pe Internet/Intranet;

- sa suporte o mare varietate de aplicatii;

- sa fie compatibil cu SGML;

- sa fie usor de scris programe care vor procesa documente XML;

- numarul facilitatilor optionale din XML sa fie reduse la minim, ideal, la zero;

- documentele XML trebuie sa poata sa fie citite usor de catre utilizatori;

- proiectarea XML trebuie sa fie pregatita rapid;

- designul XML trebuie sa fie formal si concis;

- documentele XML trebuie sa fie usor de creat.

XML este un metalimbaj utilizat si proiectat pentru transferului de date intre aplicatii pe Internet, descriere structura date.

XML ofera numeroase avantaje, cum ar fi: extensibilitatea (se pot defini noi indicatori), validitatea (verificare corectitudinii datelor), posibilitatea de a reprezenta datele intr-un mod independent de aplicatie, este simplu si accesibil (sunt fisiere text create pentru a structura, a stoca si a transporta informatia), poate fi editat, modificat foarte usor.

XML-ul [3,6,7] poate fi folosit in:

- structurarea datelor in baze de date;

- structurarea documentelor;

- grafica vectoriala (VML, sau Vector Markup Language);

- prezentari multimedia (SMIL - Synchronized Multimedia Integration Language, HTML + TIME, sau HTML Timed Interactive Multimedia Extensions);

- comunicarea deschisa intre aplicatii, prin Web cu ajutorul mesajelor bazate pe XML (SOAP, sau Simple Object Access Protocol);

- schimbul de informatii financiare (OFX, sau Open Financial Exchange);

- tranzactii comerciale pe Internet (XFDL, sau eXtensible Forms Description Language);

- resurse umane (HRMML, sau Human Resource Management Markup Language);

- formatarea formulelor matematice pe Web (MathML, sau Mathematical Markup Language);

- descrierea structurilor moleculare (CML, sau Chemical Markup Language);

- descrierea partiturilor muzicale (MusicML, sau Music Markup Language);

- buletine meteo (OMF, sau Weather Observation Markup Format);

- tranzactii imobiliare (RETS, sau Real Estate Transaction Standard).S

Regulile XML sunt simple, multe fiind asemanatoare cu regulile HTML. Acestea faciliteaza atat crearea instrumentelor de analiza a documentelor cat si lucrul efectiv cu XML. Ele pot fi clasificate in doua categorii: reguli de sintaxa XML si reguli de validitate a documentelor XML.

Pagini web dinamice

1. Pagini dinamice vs. Pagini statice


Paginile Web dinamice sunt folosite atunci cand se doreste modificarea dinamica, a continutului paginilor Web. Paginile Web realizate in HTML au dezavantajul ca sunt statice, continutul lor neputand fi modificat odata ce au fost incarcate pe un server decat aducandu-le inapoi pentru a fi editate. Acest lucru este o problema serioasa avand in vedere ca operatia este mare consumatoare de timp. In plus, lucrul cu baze de date nu este posibil in cazul paginilor statice.


Solutia care se adopta in astfel de situatii este plasarea informatiilor intr-o baza de date si accesarea lor ori de cate ori se cere acest lucru de cineva. Mai exact in loc sa se creeze 3-4 pagini Web in HTML care sa fie modificate ori de cate ori apare o schimbare, se va crea o baza de date si cateva scripturi pe partea de server prin care vor construi dinamic, paginile HTML care vor fi afisate. Schimbarile se vor face doar la nivelul bazei de date, ceea ce e mult mai simplu.

Paginile Web se clasifica, in functie de natura continutului, in pagini statice si pagini dinamice.

Principalele caracteristici ale paginilor web statice sunt:

- contin doar elemente HTML;

- codul sursa vizualizat in navigator este identic cu cel al fisierului stocat pe disc;

- nu ofera interactivitate.

Paginile web dinamice se caracterizeaza prin urmatoarele:

- continutul lor este creat dinamic si poate diferi la accesari diferite; de exemplu la acelasi URL continutul paginii poate varia in functie de anumiti parametri cum ar fi locatia geografica a utilizatorului, ora, paginile vizitate anterior, profilul utilizatorului;

- ofera interactivitate;

- posibilitati de interactiune.

In functie de locul in care este evidentiat caracterul dinamic al paginilor exista pagini dinamice pe parte de client si pagini dinamice pe partea de server.

2. Pagini dinamice pe partea client


Exista mai multe tehnologii care permit realizarea de pagini dinamice pe partea de client. Dintre acestea se enumera:

- scripturi pe partea de client (client side scripts);

- DHTML (Dynamic HTML);

- Applet-uri Java;

- Controale ActiveX;

- Elemente multimedia.

Scripturile pe partea de client (client side scripts) sunt secvente de program incluse in pagina HTML care se executa de catre navigator. Secventele de program sunt incluse prin marcatorul <SCRIPT> sau in proprietatile anumitor componente HTML ca raspuns la diferite evenimente.

Limbajele utilizate pentru a realiza scripturi pe partea de client sunt JavaScript, Jscript si VBScript.

Secventele de program scrise folosind aceste scripturi nu ofera acces la resursele sistemului local (fisiere, retea).

Scripturile pe partea de client sunt utilizate pentru asigurarea interactivitatii (meniuri), pentru validarea formularelor, pentru a crea diferite efecte, pentru efectuarea de calcule, diverse elemente de animatie etc.

DHTML (Dynamic HTML) este o tehnologie dezvoltata de Microsoft care combina HTML, foi de stiluri (CSS) si script-uri pentru a realiza pagini Web dinamice sau interactive. Permite utilizatorilor sa interactioneze cu pagina fara a retrimite o cerere la serverul Web.

Applet-uri Java reprezinta aplicatii de dimensiune redusa, scrise in limbajul Java. Codul binar al aplicatiei este descarcat pe masina client de pe server si executat local, in masina virtuala Java (JVM). Aproape toate calculatoarele permit executia applet-urilor, insa pentru functionarea acestora este necesara instalarea unei masini virtuale Java.

In cadrul paginii HTML applet-urile sunt incluse prin intermediul marcatorilor <APPLET> sau <OBJECT>.

Din applet-urile Java nu este permis accesul la sistemul local de fisiere si la retea, astfel riscul ca aceste aplicatii sa contina cod malitios sunt reduse.

Controalele ActiveX sunt componente binare incluse in paginile Web pentru a oferi interactivitate. Sunt asemanatoare applet-urilor, insa spre deosebire de acestea ruleaza pe platforma Windows si au fost dezvoltate in special pentru Internet Explorer.

Controalele ActiveX sunt incluse in cadrul paginii Web print intermediul marcatorului <OBJECT>.

Spre deosebire de scripturile pe partea de client si nu au restrictii in ceea ce priveste accesul la disc, ceea ce face ca anumite componente de acest tip sa fie susceptibile de cod rauvoitor, asemanator virusilor, viermilor sau cailor troieni. De aceea, in cazul in care o pagina contine controale ActiveX, navigatorul printr-o fereastra de dialog cere confirmarea utilizatorului pentru instalarea si rularea acestora.

Elemente multimedia sunt dezvoltate in general folosind produsul Macromedia Flash. Acestea se prezinta sub forma de fisiere SWF multimedia si sunt incluse in pagina Web prin intermediul marcatorului <OBJECT>. Pentru a putea rula pe partea de client aceste fisiere este necesara instalarea unui plug-in denumit Macromedia Shockwave Player.

Fisierele multimedia Flash se realizeaza sub forma unor filme, care sunt proiectate cadru cu cadru. Acestea ofera diverse efecte multimedia (animatie, sunet) si permit interactivitatea cu utilizatorul. Sunt utilizate pentru meniuri, jocuri, filme de animatie etc.

Pagini dinamice generate pe partea server


Interpretorul de scripturi tip server-side are rolul de a executa scripturi la cererea serverului de Web, de cele mai multe ori de a prelua rezultatul unor interogari la nivelul bazelor de date si de a trimite spre serverul Web rezultatul executiei scripturilor sub forma de continut HTML pentru a putea fi afisat de catre navigator.

In momentul in care serverului Web i se solicita rularea unui script, acesta identifica in functie de extensia fisierului care din compilatoare trebuie sa ruleze scriptul respectiv.



Figura 6. Generarea paginilor dinamice pe server

Fiecarui interpetor de scripturi i se asociaza unui limbaj de server-side scripting. Limbajele populare ale momentului sunt: PHP (Personal Home Pages), ASP (Active Server Pages), ASP.NET si JSP (Java Server Pages). La acestea se mai adauga si o serie de alte tehnologii de interes mai restrans.

Caracteristicile generale ale paginilor Web dinamice generate pe partea de server, indiferent de limbajul de scripting folosit sunt:

- necesita un procesor pentru paginile dinamice sau un mediu de executie;

- intr-o pagina de script (ASP, JSP, PHP) pot fi imbinate limbajul HTML si secvente de cod;

- secventele de cod care sunt executate pe partea de server, inainte de a trimite pagina la client;

- exista astfel posibilitatea de a particulariza paginile in mod dinamic;

- ofera posibilitatea de interactiune cu baze de date diferite;

- au acces la toate resursele serverului Web (fisiere, retea).

In mod uzual, prin intermediul scripturilor sunt prelucrare informatiile din campurile formularelor (<FORM>) din cadrul paginilor Web.

.NET

1. Privire de ansamblu asupra tehnologiei

Microsoft .NET este un software care conecteaza informatie, oameni, sisteme si dispozitive. "Cuprinde" clienti, servere si tool-uri de dezvoltare si consta din:

- .NET Framework, folosit la construirea si rularea diferitelor tipuri de software, incluzand aplicatii Web-based, aplicatii client inteligente si servicii Web XML - componente care faciliteaza integrarea prin folosirea in comun a datelor si a functionalitatilor in retea prin protocoale standard, independente de platforma, cum ar fi XML (Extensible Markup Language), SOAP si HTTP.

- Tool-uri de dezvoltare, cum ar fi Microsoft Visual Studio .NET 2008, care asigura un mediu de dezvoltare integrat (IDE) pentru a maximiza productivitatea dezvoltatorului cu .NET Framework.

- Un set de servere, inclusiv Microsoft Windows Server, Microsoft SQL Server si Microsoft BizTalk Server, care integreaza, ruleaza, opereaza si controleaza aplicatii Web-based.

- Software de client, cum ar fi Windows XP, Windows CE si Microsoft Office XP, care ajuta dezvoltatorii sa ofere experienta semnificativa utilizatorilor despre familia de dispozitive si produse existente.

.NET Framework este integral o componenta Windows pentru construirea si rularea urmatoarei generatii de aplicatii software si servicii Web. .NET Framework:

- suporta peste 20 de limbaje de programare diferite;

- administreaza multe din instalatiile implicate in dezvoltarea de software;

- usureaza mai mult ca oricand construirea, amplasarea si administrarea de aplicatii sigure, robuste si cu performante ridicate.

.NET Framework este compus din common language runtime si un set unificat de biblioteci de clase.

Common Language Runtime

Common Language Runtime (CLR) este responsabil pentru servicii run-time cum sunt integrarea de limbaje, intarirea securitatii si managementul memoriei, proceselor si firelor de executie. In plus, CLR are un rol in timpul de dezvoltare. Trasaturi cum ar fi: managementul ciclului de viata, numirea tipurilor, tratarea exceptiilor intre limbaje si legarea dinamica reduc cantitatea de cod pe care dezvoltatorul trebuie sa o scrie pentru a transforma "business logic" intr-o componenta reutilizabila.

Biblioteca de clase

Clasele de baza ofera functionalitati standard, cum ar fi intrare/iesire, manipularea stringurilor, managementul securitatii, comunicatie in retea, managementul firelor de executie, managementul de text si diferite trasaturi legate de design-ul interfetei utilizatorului.

Clasele ADO.NET ofera dezvoltatorilor posibilitatea sa interactioneze cu date in format XML, accesate prin interfete OLE DB, ODBC, Oracle si SQL Server. Clasele XML ofera posibilitatea manipularii, cautarii si translatarilor XML. Clasele ASP.NET suporta dezvoltarea aplicatiilor Web si a serviciilor Web. Clasele Windows Forms suporta dezvoltarea de aplicatii de tip desktop-based smart client.

Impreuna, bibliotecile de clase ofera o interfata comuna si consistenta de dezvoltare pentru toate limbajele suportate de .NET Framework.

Adoptarea lui .NET

.NET Framework "este in viata" din momentul in care versiunea 1.0 a fost lansata, in ianuarie 2002. Ea a trecut prin mai multe puncte de cotitura in adoptare:

compilatoare pentru peste 20 de limbaje de programare sunt disponibile pentru utilizarea in cadrul .NET Framework;

- peste 350 de alte tool-uri sunt disponibile din partea altor distribuitori pentru a ajuta la dezvoltarea .NET Framework, incluzand aproximativ 250 de "adaugiri pentru Visual Studio .NET, precum si IDE-uri de la Borland si Macromedia;

- peste 350 de carti au fost sau vor fi in curand publicate. Ele discuta despre dezvoltarea software-ului folosind .NET Framework;

- peste 750 de grupuri de utilizatori .NET Framework exista in intreaga lume;

milioane de utilizatori viziteaza in fiecare luna site-urile .NET Code Wise Community Web;

- peste 1 milion de dezvoltatori folosesc Visual Studio .NET;

- mii de companii importante, cum ar fi Autodesk, Credit Suisse First Boston, Honeywell, Xerox, fac economii enorme din punct de vedere al costurilor, obtin noi oportunitati de integrare si o imbunatatire a timpului de dezvoltare si de patrundere pe piata a aplicatiilor folosind .NET Framework ;

- Microsoft livreaza agresiv aplicatii construite folosind .NET Framework. MSN, Microsoft CRM, Windows XP Media Center Edition si Microsoft.com Smart 404 sunt doar cateva dintre multiplele aplicatii Microsoft construite deja folosind .NET Framework.

Dezvoltarea rapida

Posibilitatea de a folosi unul dintre multiplele limbaje ale .NET Framework ofera dezvoltatorilor posibilitatea de a folosi limbajul de programare care este cel mai indicat pentru un anumit task si sa combine limbajele in cadrul aceleiasi aplicatii.

Componentele scrise in diferite limbaje pot functiona transparent intre ele, fara a fi necesara munca suplimentara din partea dezvoltatorului. .NET Framework a fost anuntat ca suporta peste 20 de limbaje de programare comerciale si academice.

Design-ul de racordare" libera bazat pe componente ale .NET Framework minimizeaza cantitatea de cod pe care dezvoltatorii trebuie sa o rescrie si maximizeaza potentialul de reutilizare al codului.

     Operatii imbunatatite

     .NET Framework imbunatateste performantele aplicatiilor Web tipice. Compania Middleware, fondatorii forumului de dezvoltatori J2EE The ServerSide.com, au condus un test benchmark pentru .NET Framework si J2EE si au gasit ca .NET Framework a depasit semnificativ J2EE in cazul aplicatiilor Web de hosting, serviciilor Web si tranzactiilor distribuite.

.NET Framework ofera, de asemenea, performante deosebite si beneficii de scalabilitate in raport cu tehnologia Active Server Pages (ASP), multumita tehnologiilor de compilare just-in-time (JIT) si de cache-ing.

Limbaje suportate de .NET

In momentul de fata, .NET suporta urmaatoarele limbaje: C#, VB.NET, C++, J#.

Limbajele anterioare sunt de la Microsoft. Multe alte companii scriu compilatoare pentru alte limbaje folosind suport .NET.

Viitorul .NET-ului

Microsoft urmareste ca in viitor toate tehnologiile sale sa se bazeze pe .NET sau sa fie "inrudite" cu .NET. Versiunea urmatoare a serverului SQL suporta chiar si scrierea de stored procedures in limbajele .NET. .NET runtime va fi o parte componenta a tuturor sistemelor de operare.

.NET este un framework de dezvoltare software ce permite realizarea, distribuirea si rularea aplicatiilor-desktop Windows si aplicatiilor WEB. Tehnologia .NET pune laolalta mai multe tehnologii (ASP, XML, OOP, SOAP, WDSL, UDDI) si limbaje de programare (VB, C++, C#, J#) asigurand, totodata, atat portabilitatea codului compilat intre diferite calculatoare cu sistem Windows (si nu numai, deoarece in ultima vreme au aparut implementari .NET Framework si pe Linux - proiectul Mono), cat si reutilizarea codului in programe, indiferent de limbajul de programare utilizat. .NET Framework este o componenta livrata impreuna cu sistemul de operare Windows. De fapt, .NET 2.0 vine cu Windows Server 2003 si XP SP2 si se poate instala pe versiunile anterioare, pana la Windows 98 inclusiv; .NET 0 vine instalat pe Windows Vista.


Structura platformei .NET


Am ales platforma .NET in primul rand pentru ca ne ofera instrumente pe care le putem folosi si in alte programe, ofera acces usor la baze de date, permite realizarea desenelor sau a altor elemente grafice si o programare a interfetei grafice (User interface) deosebit de facila. Spatiul de nume System.Windows.Forms contine instrumente (controale) ce permit implementarea elementelor interfetei grafice cu utilizatorul. Tot .NET ofera clase care efectueaza majoritatea sarcinilor uzuale cu care se confrunta programele si care plictisesc si fura timpul programatorilor, reducand astfel timpul necesar dezvoltarii aplicatiilor, cum ar fi type safety-ul, exception handling, validarea datelor din User interface sau interfatarea cu mediile de stocare (baze de date sau XML storage).

1. Limbajul C#


Limbajul C# [4,7,18] este un limbaj modern, orientat pe obiecte, avand o sintaxa asemanatoare cu cea din C/C++ si Java, care permite programatorilor sa construiasca rapid o varietate larga de aplicatii pentru platforma Microsoft .Net, platforma care asigura instrumente si servicii pentru exploatarea sistemelor informatice si comunicatiilor.

Datorita designului elegant orientat pe obiecte, C# este o alegere buna pentru conceperea a variate componente - de la aplicatii la nivel de sistem si pana la realizarea aplicatiilor comerciale de nivel ridicat. Folosind concepte simple de limbaj C#, aceste componente pot fi usor convertite in servicii Web XML, permitand accesarea lor prin Internet de catre orice program ruland pe orice sistem de operare.

Unul dintre scopurile limbajului este acela de a simplifica programarea orientata pe componente. Prin componenta se intelege un ansamblu de clase de obiecte care interactioneaza pentru a indeplini anumite functionalitati.

C# a fost proiectat in paralel cu platforma .NET realizata de catre Microsoft si, de aceea, partajeaza cu aceasta un numar insemnat de caracteristici. De exemplu, oricat de surprinzator ar parea, toate tipurile de date (chiar si cele "primitive", cum ar fi int sau char) au o clasa de baza comuna, object. De aceea spunem despre aceasta platforma ca are un sistem unificat de tipuri.

Alte caracteristici, care apartin in egala masura limbajului si platformei sunt:

- utilizarea exceptiilor pentru semnalarea si tratarea erorilor,

- managementul automat al memoriei - memoria este alocata explicit de catre programator, dar dealocata de sistem cand acesta considera ca este cazul;

- suportul pentru versiuni ale codului - codul se schimba in timp ca urmare a cerintelor care se modifica permanent si in .NET aceasta problema este tratata corespunzator.

C# [4,7,18] (C sharp) este un limbaj simplu cu aproximativ 80 de cuvinte cheie, are 12 tipuri de date predefinite. Acesta permite programarea modulara, structurala si orientata pe obiecte si incoporeaza incapsularea, mostenirea si polimorfismul, acestea fiind  principiile de baza ale C#-ului. C# permite si compilarea in linia de comanda, fara a fi necesara folosirea Visual Studio-ului.

O aplicatie C# [4] este formata din una sau mai multe clase, grupate in "spatii de nume" numite namspaces. Un namespace poate contine mai multe clase, cu nume diferite, dar cu functionalitati diferite. Pot aparea clase cu acelasi nume, conditiia fiind ca ele sa nu fie definite in acelasi namespace.

In cadrul unui spatiu de nume, poate fi definit un alt spatiu de nume, acesta fiind un spatiu de nume imbricat.

O clasa se identifica prin numele complet, adica numele propriu prefixat cu spatiul de nume unde este declarata, cele doua cuvinte fiind despartite prin punct ".". O clasa este formata din date si metode sau functii.

In cazul unei aplicatii complexe, care trebuie partajata, C# ofera posibilitatea segmentarii in mai multe fisiere numite "assemblies". Intr-un assembly se pot implementa spatii de nume.

Este obligatoriu ca doar si numai o singura clasa sa contina un punct de intrare, adica metoda Main.

C# [4,18] a fost proiectat pe ideea ca sistemele moderne sunt construite din componente, furnizand suport direct pentru constructii de componente uzuale, permite extinderea componentelor in vederea reutilizarii si a distribuirii. Nu mai foloseste fisiere header si biblioteci speciale ca si C++.

Constructiile noi din cadrul C# sunt delegati - echivalentul pointerilor la functii si atribute custom, care permit notarea elementelor de cod cu informatii aditionale

Pastreaza facilitatiile din C++ precum: suprascrierea operatorilor, conversii utilizator si transmiterea prin referinta.

Spre deosebire de majoritatea limbajelor de programare, C# nu are o biblioteca runtime proprie, ci foloseste bibliotecile oferite de .NET Framework pentru abslout toate facilitatile necesare.

1.1. AvantajeleC#


- Dezvoltare rapida de aplicatii: Unul din cele mai importante obiective ale Microsoft pentru C# este suport pentru RAD (Rapid Application Development). Aplicatiile internet trebuie sa fie dezvoltate in timp paralel cu dezvoltarea internetului; un nou limbaj trebuie sa fie usor de invatat si depanat, iar codul sa se poata modifica usor. In timp ce VB si Delphi exceleaza in aceste domenii, C++ nu a fost tocmai un succes. Limbajul in sine este complex si greu de manuit si putine biblioteci C++ ofera interfete simple. In plus, managementul manual al memoriei si modelul de type-casting complex fac depanarea la C++ foarte dificila.

In plus, C++ nu protejeaza inerent impotriva potentialelor probleme cauzate de incompatibilitati ale versiunilor. Cu tot efortul depus de Microsoft si Borland, C++ nu este potrivit pentru dezvoltare rapida a aplicatiilor.

- Functionare inter-platforme: Limbajele internet ar trebui sa suporte, prin definitie, o functionare inter-platforme. Deoarece internetul este o retea de sisteme disparate, serviciile trebuie sa functioneze pe o gama larga de hardware si software. In plus, software-ul orientat pe client ar trebui sa ruleze pe mai multe tipuri de dispozitive, inclusiv PDA si telefoane mobile.

O astfel de flexibilitate este o provocare pentru toate limbajele, cu exceptia Java. In special VB produce doar aplicatii Windows pentru masini bazate pe Intel. Delphi, de asemenea , are aceleasi restrictii. Delphi pentru Linux este disponibil deja, dar nu ofera inca suport pentru aplicatii internet. Nici VB, nici Delphi nu indeplinesc conditiile pentru functionarea independenta de platforma.

- Acces la resursele caracteristice platformei: Programatorii cer tot mai mult acces la resursele specifice platformei, spune un studiu Microsoft. Adesea este nevoie de astfel de acces pentru a scrie aplicatii tinta puternice. Visual J++ 6.0 oferea programatorilor acces la Windows API, ceea ce Java de obicei nu permite. In schimb, Java ofera functionare independenta de platforma, prin definirea unui cel mai mic numitor comun standard implementat de orice masina virtuala. Programatorii Java trebuie sa codeze folosind acest standard mai putin puternic, in loc sa profite de serviciile mai puternice oferite doar de anumite platforme. Astfel, Java nu reuseste sa indeplineasca obiectivul de a da acces la resurse specifice platformei.

- Suport pentru platformele COM si .Net: Microsoft a hotarat ca suportul pentru COM si .Net este principalul obiectiv ce trebuie sa-l indeplineasca C#. Nici un alt limbaj nu suporta platforma .Net, deorece era inca in constructie. Spre deosebire de .Net, COM exista de ceva vreme dar, totusi, duce lipsa suportului unui limbaj puternic. Majoritatea limbajelor, incluzand C++ si Delphi, necesita ca programatorii sa mai faca in plus o declarare IDL, o fabrica de clase si impachetari speciale pentru fiecare obiect COM creat.

C# asigura colectarea spatiului disponibil in stilul limbajului Java: una dintre cele mai semnificative caracteristici RAD ale limbajului C# este colectarea spatiului disponibil in stilul limbajului Java. La intervalele arbitrare din timpul momentul executiei, toate obiectele care nu mai sunt referite sunt in mod automat sterse.

C# permite programatorilor sa dezactiveze local colectarea spatiului disponibil, marcand codul cu "nesigur", in situatiile in care este necesara realizarea performantei in timp real.

C# pune in aplicare un tip, un sistem valoare/referinta in stilul limbajelor Java/Delphi. Pentru a sprijini RAD, C# foloseste in continuare pointerul de C, C++ in favoarea tipului de sistem valoare/referinta Java si Delphi. In acest sistem, tipurile predefinite (intreg, real,string, si asa mai departe), enumerarile si structurile, sunt toate tipuri de valoari.

Operatori de comparatie copiaza si verifica valorile acestor tipuri de variabile. Interfetele, clasele si delegate-urile sunt toate tipuri de referinte. Operatorii de comparare copiaza si verifica identitatea obiectelor la care se refera aceste tipuri de variabile.
 Acest tip de sistem este mult mai simplu decat pointerii din C++. Face mai usoara folosirea obiectelor si elimina multe din erorile ce apar in programele de C si C++.

In C#, interfetele sunt declarate separat de clase: C# de asemenea sprijina un model de interfata Delphi si Java, unde interfetele sunt declarate in mod independent de clase. Este opusul modelului C++, unde interfetele sunt clase de baza abstracte. Ambele interfete si clase pot sa mosteneasca interfetele multiple. In timp ce clasele pot sa mosteneasca o singura clasa de baza, interfetele nu pot sa mosteneasca clase deloc.

Acest model evita problema multiplei mosteniri, in care pot aparea conflicte. Nevoia pentru mecanismele complexe ca de exemplu mostenirea virtuala este de asemenea eliminata. Interfata simplificata a C#-ului ajuta la marirea vitezei aplicatiei.

Declaratiile si definitiile metodelor de clasa sunt combinate: C# simplifica dezvoltarea aplicatiilor prin combinarea declaratiilor si definitiilor de metodele clasei,asa cum face Java. Programatorii de C++ trebuie sa mentina separate fisierele pentru declaratii( fisierul antet) si definitii( fisierul de implementare), complicand dezvoltarea procesului software. Usurand programatorul de inca un task, C# descopera automat relatii printre modulele sursei

Acolo unde C++ necesita #include( si Delphi 'uses') C# nu are nevoie de nimic aditional pentru a localiza fisierele inrudite de sursa.

C# foloseste referirile metodelor, numiti 'delegate', in loc de pointerii la metoda: C# foloseste referintele la metode pentru a conecta repede obiectele si metodele. Numite si 'delegate',aceste metode sunt asemanatoare cu tipurilor procedurale ale limbajului Delphi. Hejlsberg a prezentat acel mecanism in Visual J++ desi el nu este parte standard a limbajului Java. Referintele la metoda sunt intrucatva asemanatoare cu pointerii la metoda din C++, dar sunt de departe mult mai elegante, sigure, si folositoare.

Un delegat este un tip de o referinta care tine semnatura metodei. O aplicatie sa poata sa desemneze oricare metoda care un potriveste aceasta o semnatura la o variabila 'delegate'. Cand 'delegate' este invocat, este chemata si metoda asociata..
        Spre deosebire de tipurile de proceduri Delphi, 'delegates' suporta si multicasting-ul. O aplicatie poate sa desemneze multe metode la o variabila 'delegat'; Cand variabila este invocata, sunt apelate toate metodele.

C# foloseste mecanismul Java pentru sincronizarea unui singur fir: Pentru a pune in aplicare sincronizarea firelor de executie in C#, un programator pur si simplu marcheaza blocurile critice de cod. Unde un programator Java foloste cuvantul cheie 'synchronised',un programator de C# foloseste'lock'=lacat. Un mutex protejeaza blocul, permitand numai un fir sa execute codul odata.

Declaratiile suprascrise explicite: in cele din urma, C# foloseste declaratiile de suprascriere explicit pentru a sprijini RAD-ul. Declaratiile de suprascriere explicite sprijina dezvoltarea rapida a aplicatiilor, protejand metoda claselor namespaces si expunand accidental conflictele. 

Un programator al unei o clase C# derivate, trebuie in mod clar sa marcheze o suprascriere de metoda cu cuvantul cheie 'override', asa cum face si in Delphi. Daca o clasa derivata include o metoda care are acelasi nume ca metoda virtuala din clasa de baza, compilatorul nu poate precis sa desluseasca intentia autorului.

Pe de alta parte, un conflict de nume ar putea foarte bine accidental; se intampla in special cand clasa de baza si clasa derivata au fost implementate in mod independent de doi programatori, lucrand poate in companiile diferite. in astfel de caz, compilatorul va da un avertisment si va trata metodele clasei derivate ca o declaratie noua,nu ca pe o suprascriere.

Daca, pe pe de alta parte, programatorul a decis in mod constient sa foloseasca nume pentru o noua metoda dintr-o clasa derivata, care are acelasi nume ca o metoda virtuala din clasa de baza, el sau ea poate includa cuvantul cheie 'new' pentru a impiedica avertizarea data de compilator.

Alte facilitati C

Luand in considerare toate caracteristicile discutate deja, suport puternic pentru RAD pare a fi unul din principalele obiective ale Microsoft pentru C#. Sunt si alte nevoi de dezvoltare importante la care C# trebuie sa raspunda. Acestea includ dezvoltare independenta de platforma, acces la resurse tipice platformei, si suport petru platformele COM si .NET. Sa examinam facilitatile C# prin care se intentioneaza a satisface aceste nevoi.

- Functionare independenta de platforma:  C# rezolva problema functionarii independente de platforma in acelasi mod ca si Java. Compilatorul de C# genereaza un flux de cod binar care este interpretat de .Net runtime. Componenta runtime lucreaza ca si o masina virtuala Java; o aplicatie poate fi rulata pe orice masina pe care a fost portat .Net runtime.

- Accesul aplicatiei la resurse specifice platformei Spre deosebire de masina virtuala Java, .Net runtime ofera acces programatic la resursele specifice platformei. Un program C# poate folosi, de exemplu, Windows API pentru a rula ca o aplicatie completa sub Windows 2000. Acelasi program poate rula pe un PDA folosind subsetul Windows CE API. Bineinteles, nu toate serviciile pe care aplicatia le asteapta vor fi disponibile pe toate masinile. De aceea, este responsabilitatea developerului sa testeze software-ul pe toate platformele tinta, si sa scrie cod special, daca este nevoie, care sa permita functionarea in absenta unor servicii asteptate.

- Suport pentru COM si .Net Pentru a sprijini atat platforma COM, cat si .Net, C# include o importanta facilitate a limbajului, numita atribute. Un atribut este de fapt o clasa C# care <> codul sursa pentru a oferi metainformatie. Atributele faciliteaza suportul oferit de C# unor tehnologii specifice precum COM sau .Net fara a ingreuna specificatiile limbajului in sine.

De exemplu, C# pune la dispozitie clase de atribute care convertesc interfete C# in interfete COM. Altele convertesc clase C# in coclase COM. Nu este nevoie de IDL sau de vreo fabrica de clase pentru a face aceste conversii. Unii comentatori ai limbajului au declarat ca toate clasele C# sunt obiecte COM. Acest lucru nu corespunde tocmai adevarului, dar nu atributele corespunzatoare, orice clasa C# poate fi exprimata ca un obiect COM.

Alta biblioteca de atribute oferita impreuna cu compilatorul de C# impacheteaza clasele si functiile ca servicii Web. Un serviciu Web este un modul software gazduit care poate fi chemat prin internet folosind un protocol precum SOAP. SOAP impacheteaza apelari de metode, impreuna cu parametrii si valorile returnate de acestea, inpachete de date XML. Serviciile Web pot fi scrise in multe limbaje si livrate pentru multe platforme software si hardware. Mai mult, mai multe servicii Web pot coopera si forma o intreaga aplicatie Web. Folosind atributele corespunzatoare, un programator poate modifica cu usurinta  orice clasa sau functie C# intr-un serviciu Web.

5. Programarea web utilizand ASP.NET

5.1. Scurt istoric

ASP este o tehnologie creata de Microsoft pentru a usura dezvoltarea interactiva a aplicatiilor Web. La inceputurile Internetului, era utilizata pentru a transmite pagini HTML ca raspuns la cererile HTTP ale unui browser. Aceste pagini Web includeau hyperlink-uri care permiteau utilizatorilor sa navigheze cu usurinta de la o pagina la alta.

O data cu aparitia Internetului si a infrastructurii World-Wide-Web nascuta in anii '90, ideea si solutia aplicatiilor distribuite a capatat o alta culoare. Aplicatiile distribuite au luat nastere in urma vizualizarii clare a lumii informatice, a imposibilitatii de a avea dispozitive informatice care sa ruleze aplicatii monopost complexe, lucru care evident nu a condus decat la o centralizare a informatiei si a aplicatiilor in general. Bazata pe modelul client/server, platforma WWW ofera o infrastructura viabila si testata ca serviciu al retelei Internet si promite la nivel de client o interfata standardizata, chiar independenta de platforma, comuna pentru vizualizarea informatiilor Web, interfata cunoscuta sub numele de browser sau navigator Web.

Modelul de realizare a aplicatiior Web a cunoscut o intreaga evolutie a tehnologiilor de programare la nivel de server. Putem enumera astfel:

- solutia CGI (Common Gateway Interface) reprezinta o serie de script-uri executate pe serverul WWW. Acestea pot fi scrise in orice limbaj de programare (interpretat sau compilat) cu respectarea urmatoarelor restrictii: programul scrie datele la iesirea standard si genereaza antete care permit serverului Web sa interpreteze corect iesirea scriptului, conform specificatiilor HTTP (de exemplu, se pot folosi limbaje precum bash, Perl, C/C++, Delphi). Neajunsul CGI-urilor il reprezinta faptul creerii unui nou proces pe serverul Web pentru fiecare cerere si restrictionarea task/fisier executabil.

- solutia ISAPI (Internet Server API) reprezinta o alternativa CGI pe platforme Windows. Dezvoltatorii Win32 pot scrie un program care sa comunice direct cu aceasta interfata pentru a face orice lucru posibil cu CGI, pot folosi ISAPI pentru a obtine date din formulare si pentru a trimite continut HTML la client. Codul la nivel de server poate fi scris in oricare limbaj cu suport pentru DLL-uri Windows, ca C/C++, Java, Visual Basic, rezultatul compilarii fiind un fisier .dll. Fata de CGI, ISAPI ruleaza in acelasi spatiu de adrese cu serverul HTTP, are acces la toate resursele serverului HTTP, pot fi incluse mai multe task-uri intr-un .dll si nu creaza procese aditionale pentru rezolvarea cererilor clientilor Web. O alternativa la ISAPI este NSAPI-utilizabila in cadrul serverului Web Netscape.

- solutia PHP (1994) sau ASP (1996) marcheaza un salt in dezvoltarea aplicatiilor Web. Desi difera din punct de vedere al sintaxei, ambele limbaje sunt interpretate, codul lor fiind stocat in fisiere externe cu extensia .php/.asp. De fapt, ASP nu ofera un limbaj nou, ci se bazeaza pe limbajele VBScript si JScript. Un fisier PHP/ASP poate fi combinat cu date de tip text, marcatori HTML si comenzi script. In momentul executiei, in urma cererii unui client Web, fisierul este procesat, fiecare script din cadrul lui este interpretat si rezultatul executiei este introdus inapoi in fisierul static HTML inainte ca rezultatul sa fie trimis catre browser. Mai mult, in sprijinul programatorului, limbajele pun la dispozitia acestuia o serie de metode si obiecte care usureaza lucrul cu cookie-uri, cu bazele de date (Oracle, MSSQL, MySQL, etc.), care preiau elegant intrarile unui formular HTML si le proceseaza pe server, care preiau informatii despre utilizator (clientul Web), care trimit informatii la utilizator, care stocheaza informatii despre sesiunea unui utilizator (Session), care partajeaza informatii intre utilizatorii unei aplicatii (Application) s.a.m.d.. Mai nou, din partea PHP-ului, incepand cu versiunea 0, acesta ofera suport pentru programarea obiectuala: incapsularea datelor, mostenirea si polimorfismul. Aceste modele completeaza destul de bine suportul dezvoltarii aplicatiilor Web, insa aduc unele limitari: sunt lente deoarece la fiecare accesare fisierele sunt procesate si interpretate (in loc sa fie compilate), nu sunt capabile sa construiasca controale reutilizabile care sa incapsuleze functionalitati complexe pentru interactiunea cu utilizatorul.

- JSP (JavaServer Pages) face parte din familia Java si reprezinta o tehnologie care permite crearea de aplicatii Web independente de platforma. JSP separa interfata utilizator de continutul generat dinamic permitand schimbarea intregului sablon al site-ului WEB fara a altera informatiile afisate. Tehnologia utilizeaza marcatori XML si scripturi scrise in limbajul de programare Java pentru a incapsula logica aplicatiei care genereaza continutul paginilor WEB. JSP-urile sunt o extensie a tehnologiei Java Servlet. Servlet-urile sunt independente de platforma 100% si reprezinta module la nivel de server care se integreaza in cadrul unei aplicatii Web si care pot fi utilizate pentru a extinde capabilitatile unui server WEB. Tehnologia JSP si servlet-urile ofera o alternativa pentru crearea aplicatiilor WEB fata de alte limbaje de scripting/programare a aplicatiilor WEB, oferind independenta de platforma, performanta, separarea logicii aplicatiei de partea de interfata utilizator, administrare usoara si extensibilitate.

Dupa mai multe incercari esuate (cum ar fi fisierele ADC/HTX), Microsoft a stabilit Active Server Pages ca si modalitatea proprie de creare dinamica a paginilor HTML bazata pe date introduse de utilizator. Dar oricat de util a fost si cat succes a avut, ASP are cateva limitari importante care au dus la dezvoltarea ASP.NET:

- Cod interpretabil si de tip pierdere: motorul de executie pe care se bazeaza Active Server Pages interpreteaza codul linie cu linie, de fiecare data cand este apelata pagina. Aceasta impiedica performanta si face dificila tratarea erorilor. Pentru a depasi aceasta limitare, multi utilizatori ASP au incercat mutarea pe cat a fost logic posibil pe componente automate COM, cum ar fi ActiveX DLL create de Microsoft Visual Basic. Din nefericire, aceasta a dus la un efect nedorit: a data ce DLL este incarcat de ASP, ramane in memorie pana cand serverul Web este oprit, facand dificila mentinerea aplicatiilor ASP.

- Colaborare dificila: Cele mai multe echipe de dezvoltare Web includ doua grupuri diferite: unul responsabil cu scrierea codului, iar celalalt are rolul de a face site-ul atractiv si interesant. Modul in care ASP incurajeaza imbinarea codului cu HTML face dificila colaborarea dintre programatori si designeri pentru o pagina fara a se amesteca unul in munca celuilalt.

- Unelte limitate pentru dezvoltarea si compilare: Microsoftf Visual InterDev, Macromedia Visual UltraDev si alte unelte au incercat sa imbunatateasca productivitatea programatorilor ASP prin oferirea unor medii de dezvoltare grafice. Totusi, aceste unelte nu au atins usurinta utilizarii sau nivelul de accepptare atins de aplicatiile Microsoft Windows, cum ar fi Visual Basic sau Microsoft Access. Cei mai multi utilizatori ASP inca se bazeaza in mare parte sau exclusiv pe Notepad. Aceasta pentru ca paginile ASP tipice combina elemente din diferite tehnologii, incluzand VBScript, JavaScript, Dynaimc HTML, ADO, si in ultimul timp chiar XML si XSL style sheets.

- Setari de configuratie obscure: pentru a memora setari de configuratie, ASP foloseste metabaza, componenta a IIS, a carei structura este greu de inteles pentru multi utilizatori. In plus, este greu de transferat setarile metabazei de la un server Web la altul. ASP.NET a fost creat ca raspuns direct la problemele pe care programatorii le aveau folosind ASP clasic. Desi .NET Framework a aparut pentru a include mult mai mult decat ASP.NET, impulsul care a dus la crearea sa a fost nevoia de o modalitate noua de coonstruire eficienta a aplicatiilor Web moderne. De aceea nu e de mirare ca ASP.NET rezolva toate neajunsurile clasicului ASP:

- Cod compilabil: ASP.NET foloseste .NET Common Language Runtime (CLR), in locul unui motor scriptic. Aceasta inseamna ca intraga putere a limbajelor .NET este disponibila programatorilor ASP.NET, si codul este compilabil folosind procesul standard just-in-time de compilare .NET.

- Separarea codului de HTML: arhitectura ASP.NET creaza o separare clara intre HTML si elementele de cod a fiecarei pagini, si permite stocarea acestor elemente in fisiere separate. Aceasta usureaza colaborarea eficienta a echipelor de programatori.

- Mediu de dezvoltare grafic: Visual Studio.NET ofera un mediu de dezvoltare bogat pentru programatorii Web. Se pot seta proprietati si introduce controale ca si in Visual Basic. In plus, mediul de dezvoltare Visual Studio .NET este programabil si extensibil.

- Fisiere de configuratie XML: Setarile de configuratie in ASP.NET sunt stocate in fisiere XML care pot fi cu usurinta citite si editate. Pot fi de asemenea usor copiate pe alt server, impreuna cu alte fisiere care comprima aplicatia.

5.2. Introducere in ASP .NET

ASP.NET este tehnologia Microsoft care permite dezvoltarea de aplicatii web moderne, utilizand platforma Microsoft .NET cu toate beneficiile sale. Pentru a intelege procesul de realizare a unui site web cu ASP.NET este important sa cunoastem modul in care functioneaza comunicarea intre browser si serverul web.

Acest proces este format din urmatoarele etape principale:

1. Browserul Web initiaza o cerere (request) a unei resurse catre serverul Web unde este instalata aplicatia dorita.

2. Cererea este trimisa serverului Web folosind protocolul HTTP.

Serverul Web proceseaza cererea.

Serverul web trimite un raspuns browserului folosind protocolul HTTP.

5. Browserul proceseaza raspunsul in format HTML, afisand pagina web.

6. Utilizatorul poate introduce date (sa spunem intr-un formular), apasa butonul Submit si trimite date inapoi catre server.

7. Serverul Web proceseaza datele.

8. Se reia de la pasul

Serverul web primeste cererea (request), iar apoi trimite un raspuns (response) inapoi catre browser, dupa care conexiunea este inchisa, si sunt eliberate resursele folosite pentru procesarea cererii. Acesta este modul de lucru folosit pentru afisarea paginilor statice (datele dintr-o pagina nu depind de alte date din alte pagini sau de alte actiuni precedente ale utilizatorului) si nici o informatie nu este stocata pe server.

In cazul paginilor web dinamice, serverul poate sa proceseze cereri de pagini ce contin cod care se executa pe server, sau datele pot fi salvate pe server intre doua cereri din partea browserului.

Trimiterea datelor de la browser catre server se poate realiza prin metoda GET sau POST. Prin GET, URL-ul este completat cu un sir de caractere (QueryString) format din perechi de tipul cheie = valoare separate prin &.

Exemplu:

GET /getPerson.aspx?Id=1&city=Cluj HTTP/1.1

Folosind POST, datele sunt plasate in corpul mesajului trimis serverului:

Exemplu:

POST /getCustomer.aspx HTTP/1.1 Id=123&color=blue

Prin Get nu se pot trimite date de dimensiuni mari, iar datorita faptului ca datele sunt scrise in URL-ul browser-ului, pot aparea probleme de securitate. De aceea, de preferat este sa se foloseasca metoda POST pentru trimiterea de date.

Trimiterea datelor inapoi catre server este numita deseori PostBack. Actiunea de PostBack poate fi folosita atat cu metoda GET cat si cu metoda POST. Pentru a sti daca se trimit date (POST) sau pagina este doar ceruta de browser (GET), cu alte cuvinte pentru a sti daca pagina curenta se incarca pentru prima data sau nu, in ASP.NET se foloseste o proprietate a clasei Page numita IsPostBack.

5. Structura unei pagini ASP.NET

La crearea unui proiect nou, in fereastra Solution Explorer apare o noua pagina web numita Default.aspx. Orice pagina web .aspx este formata din 3 sectiuni: sectiunea de directive, sectiunea de cod, si sectiunea de layout. Sectiunea de directive se foloseste pentru a seta mediul de lucru, precizand modul in care este procesata pagina.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>


Sectiunea de cod, contine codul C# asociat paginii sau obiectelor din pagina. Codul poate fi plasat direct in pagina sau intr-un fisier cu extensia .cs, cu acelasi nume ca al paginii (de ex. Default.aspx.cs). In cazul in care se gaseste direct in pagina codul este cuprins intre tag-urile <script> </script>:


<script runat="server">

protected void Button1_Click(object sender, EventArgs e)


</script>

De obicei blocurile <script> contin cod care se executa pe partea de client, insa daca se foloseste atributul runat = "server", codul se va executa pe serverul web. In cazul exemplului de mai sus, la apasarea butonului se schimba titlul paginii Web in browser.

In cazul in care in fereastra pentru adaugarea unei pagini noi in proiect, se bifeaza optiunea Place code in separate file, codul este plasat intr-un fisier separat, iar in sectiunea de directive este precizat numele acestui fisier.

Exemplu: CodeFile="Default.aspx.cs".

Sectiunea de layout contine codul HTML din sectiunea Body:


<body>

<form id="form1" runat="server">

<div>

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click"

Text="Button" /></div>

</form>

</body>


Atributul runat="server" pentru un anumit control, specifica faptul ca pentru obiectul respectiv, ASP.NET Runtime Engine care ruleaza pe serverul web (IIS) va face transformarea intr-un obiect HTML standard. Aceasta conversie se realizeaza in functie de tipul browserului, de varianta de javascript instalata pe browser si de codul C# asociat obiectului respectiv (numit code behind).

De exemplu pagina aspx de mai sus este transformata in urmatorul fisier html:


<form name="form1" method="post" action="Default.aspx" id="form1">

<div>

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"

value="/wEPDwUKMTQ2OTkzNDMyMWRkIftHHP/CS/zQf/D4XczzogN1M1w=" />

</div>

<div>&nbsp;<br />

<input type="submit" name="Button1" value="Button" id="Button1" style="zindex:

102;left: 349px; position: top: 156px" />

</div>

<div>

<input type="hidden" name="__EVENTVALIDATION" = "__EVENTVALIDATION" value =

"/wEWAgKlr8nLBAKM54rGBh7DPY7SctG1t7rMEnJSrO+1hHyP" />

</div>

</form>

5. Controale Server

Un control server poate fi programat, prin intermediul unui cod server-side, sa raspunda la anumite evenimente din pagina. Isi mentine in mod automat starea intre 2 cereri catre server, trebuie sa aiba atributul id si atributul runat.

Exista doua tipuri de controale server: Web si Html. Controalele server web ofera mai multe functionalitati programabile decat cele HTML. De asemenea pot detecta tipul browserului si pot fi transformate corespunzator in tag-urile html corespunzatoare. ASP.NET vine cu o suita foarte bogata de controale care pot fi utilizate de catre programatori si care acopera o foarte mare parte din functionalitatile necesare unei aplicatii web.

O proprietate importanta a controalelor server este AutoPostBack. Pentru a intelege exemplificarea, vom considera o pagina in care avem un obiect de tip checkbox si un obiect de tip textbox care are proprietatea visible = false. In momentul in care este bifat checkbox-ul, vrem ca obiectul textbox sa apara in pagina.

Codul poate fi urmatorul:


protected void CheckBox1_CheckedChanged(object sender, EventArgs e)


else


Cand vom rula pagina, vom constata ca totusi nu se intampla nimic. Pentru a se executa metoda CheckBox1_CheckedCanged, pagina trebuie retrimisa serverului in momentul bifarii checkbox-ului. Serverul trebuie sa execute codul si apoi sa retrimita catre browser pagina in care textbox-ul este vizibil sau nu. De aceea controlul checkbox trebuie sa genereze actiunea de PostBack, lucru care se intampla daca este setata valoarea true proprietatii AutoPostBack. Unele controale genereaza intotdeauna Postback atunci cand apare un anumit eveniment. De exemplu evenimentul click al controlului button.

Pentru a intelege mai bine fenomenul de PostBack, ne propunem sa realizam urmatoarea aplicatie. Intr-o pagina avem un textbox si un buton. Dorim ca in textbox sa avem initial (la incarcarea paginii) valoarea 0, si de fiecare data cand se apasa butonul, valoarea din textbox sa fie incrementata cu 1.

Codul evenimentului Click al butonului si al evenimentului Load al paginii ar putea fi urmatorul:

protected void Page_Load(object sender, EventArgs e)


protected void Button1_Click(object sender, EventArgs e)


Vom observa, insa, ca dupa prima incrementare valoarea in textbox ramane 1. Acest lucru se intampla deoarece evenimentul Load se executa la fiecare incarcare a paginii (indiferent ca este vorba de request-ul initial al browserului sau de apelul de postback generat automat de evenimentul clic al butonului). Pentru a remedia aceasta situatie, obiectul Page in ASP are proprietarea isPostBack, a.i. putem sa rescriem codul metodei Load:

protected void Page_Load(object sender, EventArgs e)


5.5. Pastrarea informatiilor in aplicatiile web

Exista o deosebire fundamentala intre aplicatiile Windows si cele Web. Anume, in aplicatiile Windows odata creat un obiect acesta ramane in memorie in principiu pana la terminarea aplicatiei si va putea fi utilizat si din alte ferestre decat cele in care a fost creat, atata timp cat este public. Pe de alta parte, in aplicatiile web paginile nu se pastreaza in memorie pe calculatorul utilizatorului (clientului) iar aici ne vom pune problema pastrarii informatiilor.

Cand browserul cere o anumita pagina, ea este incarcata de serverul web, se executa codul asociat pe baza datelor trimise de user, rezultand un raspuns in format html trimis browserului. Dupa ce este prelucrata pagina de catre server, obiectele din pagina sunt sterse din memorie, pierzand astfel valorile. De aceea apare intrebarea: cum se salveaza/transmit informatiile intre paginile unui site web sau chiar in cadrul aceleiasi pagini, intre doua cereri succesive catre server?

5.5.1. Pastrarea starii controalelor


Obiectul ViewState

Starea controalelor unei pagini este pastrata automat de catre ASP.NET si astfel nu trebuie sa ne facem griji cu privire la informatiile care apar in controale pentru ca ele nu vor disparea la urmatorul PostBack - adica la urmatoarea incarcare a paginii curente. De exemplu, daca scriem un text intr-o casuta de text si apoi apasam un buton care genereaza un PostBack iar pagina se reincarca, ea va contine casuta de text respectiva cu textul introdus de noi inainte de reincarcare.

In momentul generarii codului Html de catre server se genereaza un control html de tip <input type="hidden"> , a carui valoare este un sir de caractere ce codifica starea controalelor din pagina:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"

value="/wEPDwULLTE1OTg1NDYyNDZkZFCFstl/DwSGv81TuCB397Tk5+CJ" />


Se pot adauga valori in ViewState si de catre programator, folosind obiectul ViewState cu metoda Add (cheie, valoare_obiect): ViewState.Add("TestVariable", "Hello");

protected void Page_Load(object sender, EventArgs e)



Regasirea datelor se realizeaza folosind ca indice numele obiectului:

protected void Button1_Click(object sender, EventArgs e)


5.5.2. Pastrarea informatiilor

Asa cum am observat in paragraful anterior, starea controalelor de pe o anumita pagina web ASP.NET se pastreaza intre mai multe cereri catre server pentru aceeasi pagina, folosind obiectul ViewState in mod automat, transparent pentru programator. Daca dorim sa pastram mai multe informatii decat doar continutul controalelor, cum ar fi valorile unor variabile instantiate intr-o anumita pagina, atunci va trebui sa o facem explicit, pentru ca acestea se pierd in momentul in care serverul web regenereaza pagina curenta, ceea ce se intampla la fiecare PostBack , cum se intampla de exemplu la apasarea unui buton ASP.NET.


Profile

O posibilitate de pastrare a informatiilor specifice unui utilizator consta in folosirea obiectului Profile, prin intermediul fisierului de configurare Web.Config. Acesta este un fisier XML in care se retin optiuni de configurare. Pentru a adauga o proprietate obiectului profile, in fisierul Web.Config se adauga:

<profile enabled="true">

<properties>

<add name ="ProfileTest" allowAnonymous ="true"/>

</properties>

</profile>


Atributul name retine numele proprietatii. Dupa aceste modificari, proprietatea definita in Web.config poate fi apelata pentru obiectul Profile:


Profile.ProfileTest = "Hello world";

Sau

Label1.Text = Profile.ProfileTest;

Session

Obiectul Session este creat pe serverul web la prima accesare a sitului de catre un utilizator si ramane in memorie in principiu atat timp cat utilizatorul ramane conectat la site. Exista si exceptii, dar ele nu fac obiectul acestui material. Pentru a adauga un obiect in sesiune, trebuie doar sa scriem un cod de genul urmator:


protected void Button1_Click(object sender, EventArgs e)


Session este de fapt un dictionar (lista de perechi cheie - valoare), in care valorile sunt de tip object. Ceea ce inseamna ca la citirea unor valori din sesiune va trebui sa realizam o conversie de tip.


protected void Button2_Click(object sender, EventArgs e)


Odata introdus un obiect in Session, el poate fi accesat din toate paginile aplicatiei, atat timp cat el exista acolo. Programatorul poate realiza scoaterea obiectului din sesiune atunci cand doreste acest lucru:

Session.Remove("sir");


Application

Obiectul Application se comporta in mod identic cu Session, doar ca este specific intregii aplicatii, adica tuturor utilizatorilor care acceseaza un site web la un moment dat, si nu unei anumite sesiuni. Cu alte cuvinte odata introdus un obiect in Application, va putea fi accesat din orice loc al sitului si de catre toti utilizatorii acestuia.


Membrii statici

Toate variabilele declarate ca fiind statice sunt specifice intregii aplicatii si nu unei anumite sesiuni. De exemplu, daca atunci cand un site este accesat de Utilizator1 si o variabila declarata:


static string test = "init";

se modifica de catre acesta:

test = "modificat";

atunci toti utilizatorii aplicatiei vor vedea valoarea modificata din acel moment inainte.

In cazul obiectului ViewState, datele sunt salvate in pagina web sub forma unui sir de caractere, iar in cazul obiectului Session respectiv Application in memoria serverului web. Daca datele salvate sunt de dimensiuni mari, in primul caz creste dimensiunea paginii web, care va fi transmisa mai incet, iar in al doilea caz rezulta o folosire excesiva a memoriei serverului web, ceea ce duce la scaderea vitezei de lucru.

Aceasta folosire excesiva a memoriei poate sa apara si in cazul unei dimensiuni a datelor ceva mai redusa, dar a unui numar mare de utilizatori care acceseaza simultan pagina (pentru fiecare se va creea un obiect sesiune).

5.6. Validarea datelor

In toate aplicatiile web si nu numai se pune problema validarii datelor introduse de utilizator. Cu alte cuvinte, trebuie sa ne asiguram ca utilizatorul site-ului nostru introduce numai date corecte in casutele de text care ii sunt puse la dispozitie.

De exemplu, daca pe o pagina web se cere utilizatorului introducerea varstei sale si pentru asta ii punem la dispozitie o casuta de text, va fi obligatoriu sa ne asiguram ca in acea casuta se pot introduce numai cifre si ca numarul rezultat este incadrat intr-un anumit interval. Sau, un alt exemplu, este introducerea unei adrese de email valida din punct de vedere al formatului.

ASP.NET vine cu o serie de controale gata create in scopul validarii datelor. Aceste controale sunt de fapt clase care provin din aceeasi ierarhie, avand la baza o clasa cu proprietati comune tuturor validatoarelor.

5.6.1. Proprietati comune

ControlToValidate: este proprietatea unui control de validare care arata spre controlul (casuta de text) care trebuie sa fie validat.

ErrorMessage: reprezinta textul care este afisat in pagina atunci cand datele din controlul de validat nu corespund regulii alese.

EnableClientSideScript: este o proprietate booleana care specifica locul in care se executa codul de validare (pe client sau pe server).

Alte proprietati, specifice tipului de validator.

5.6.2. Validatoare

1. RequiredFieldValidator. Verifica daca in casuta de text asociata prin proprietatea ControlToValidate s-a introdus text. Util pentru formularele in care anumite date sunt obligatorii.

2. RangeValidator. Verifica daca informatia introdusa in casuta de text asociata face parte dintr-un anumit interval, specificat prin tipul datei introduse (prorietatea Type) si MinimumValue respectiv MaximumValue.

RegularExpressionValidator. Verifica daca informatia din casuta de text asociata este conform unei expresii regulate specificate. Este util pentru validarea unor informatii de genul adreselor de email, numerelor de telefon, etc - in general informatii care trebuie sa respecte un anumit format. Trebuie setata proprietatea ValidationExpression in care se pot alege cateva expresii uzuale gata definite.

CompareValidator. Compara datele introduse in casuta de text asociata cu o valoare prestabilita (ValueToCompare), in functie de operatorul ales (proprietatea Operator) si de tipul de date care se asteapta (proprietatea Type).

Pe langa validatoarele prezentate mai sus, programatorul poate crea validatoare customizate, care sa verifice datele introduse de utilizator conform unor reguli proprii.

5.7. Securitatea in ASP.NET

Pentru o aplicatie securizata, avem mai multe posibilitati de autentificare, cele mai des intalnite fiind sintetizate in tabelul de pe slide. Implementarea politicii de securitate se poate face atat din IIS cat si din aplicatia ASP.NET.


Tipul aplicatiei

Modul de autentificare

Descriere

Aplicatie web publica

pe Internet.

Anonim

Nu avem nevoie de securizare.

Aplicatie web pentru

Intranet.

Windows Integrated

Acest mod autentifica utilizatorii folosind lista de useri

de pe server (Domain Controller). Drepturile userilor in

aplicatia web este dat de nivelul de privilegii al contului

respectiv.

Aplicatie web disponibila

pe Internet, dar cu acces privat.

Windows Integrated

Utilizatorii companiei pot accesa aplicatia din afara Intranetului, folosind conturi din lista serverului (Domain Controller).

Aplicatii web

comerciale.

Forms Authentication

Aplicatii care au nevoie de informatii confidentiale si

eventual in care sunt mai multe tipuri de utilizatori.


5.7.1. Windows Authentication

In acest mod de autentificare, aplicatia ASP .NET are incorporate procedurile de autentificare, dar se bazeaza pe sistemul de operare Windows pentru autentificarea utilizatorului.

1. Utilizatorul solicita o pagina securizata de la aplicatia Web.

2. Cererea ajunge la Serverul Web IIS care compara datele de autentificare ale utilizatorului cu cele ale aplicatiei (sau ale domeniului)

Daca acestea doua nu corespund, IIS refuza cererea utilizatorului

Calculatorul clientului genereaza o fereastra de autentificare

5. Clientul introduce datele de autentificare, dupa care retrimite cererea catre IIS

6. IIS verifica datele de autentificare, si in cazul in care sunt corecte, directioneaza cererea catre aplicatia Web.

7. Pagina securizata este returnata utilizatorului.

5.7.2. Forms-Based Authentication

Atunci cand se utilizeaza autentificarea bazata pe formulare, IIS nu realizeaza autentificarea, deci este necesar ca in setarile acestuia sa fie permis accesul anonim.

1. In momentul in care un utilizator solicita o pagina securizata, IIS autentifica clientul ca fiind un utilizator anonim, dupa care trimite cererea catre ASP.NET

2. Acesta verifica pe calculatorul clientului prezenta unui anumit cookie1

Daca cookie-ul nu este prezent sau este invalid, ASP.NET refuza cererea clientului si returneaza o pagina de autentificare (Login.aspx)

Clientul completeaza informatiile cerute in pagina de autentificare si apoi trimite informatiile

5. Din nou, IIS autentifica clientul ca fiind un utilizator anonim si trimite cererea catre ASP.NET

6. ASP.NET autentifica clientul pe baza informatiilor furnizate. De asemenea genereaza si un cookie. Cookie reprezinta un mic fisier text ce pastreaza diverse informatii despre utilizatorul respectiv, informatii folosite la urmatoarea vizita a sa pe site-ul respectiv, la autentificare, sau in diverse alte scopuri.

7. Pagina securizata ceruta si noul cookie sunt returnate clientului. Atata timp cat acest cookie ramane valid, clientul poate solicita si vizualiza orice pagina securizata ce utilizeaza aceleasi informatii de autentificare.

5.7. Securizarea unei aplicatii web

Securizarea unei aplicatii web presupune realizarea a doua obiective: (1) autentificarea si (2) autorizarea.

1. Autentificarea presupune introducerea de catre utilizator a unor credentiale, de exemplu nume de utilizator si parola, iar apoi verificarea in sistem ca acestea exista si sunt valide.

2. Autorizarea este procesul prin care un utilizator autentificat primeste acces pe resursele pe care are dreptul sa le acceseze.


Aceste obiective pot fi atinse foarte usor utilizand functionalitatile si uneltele din ASP.NET respectiv Visual Studio, anume clasa Membership si unealta ASP.NET Configuration (din meniul Website al Visual Studio Web Developer Express). Configurarea autentificarii si autorizarii se poate realiza dupa cum se vede in acest tutorial: http://msdn2.microsoft.com/en-us/library/879kf95c(VS.80).aspx.

5.8. Accesul la o baza de date intr-o pagina web

Pentru adaugarea unei baze de date proiect, din meniul Add Item se alege SQL Database. Baza de date va fi adaugata in directorul App_data al proiectului. Legatura intre baza de date si controalele html se realizeaza prin intermediul obiectului SqlDataSource. Din meniul contextual asociat acestui obiect se alege optiunea Configure Data Source, se alege baza de date, si se construieste interogarea SQL pentru regasirea datelor.

La aceasta sursa de date se pot lega controale de afisare a datelor cum ar fi: GridView, Detailview, FormView. Din meniul contextual asociat acestor controale se alege optiunea Choose data source, de unde se alege sursa de date.

5.9. Avantajele utilizarii ASP.NET

ASP.NET are multe avantaje, atat pentru programator cat si pentru utilizatorul final. Sa ne uitam in continuare la 4 dintre avantajele de care beneficiaza detinatorul unui website realizat in ASP.NET. [7]

Functionalitate sporita in lucrul cu bazele de date : Ca si ASP (platforma  precedenta ASP.NET), ASP.NET permite programatorilor sa dezvolte aplicatii web care sa lucreze conectate la o baza de date. Avantajul ASP.NET este acela ca este orientat-obiect si detine mai multe instrumente de programare care permit o dezvoltare mai rapida si mai multa functionalitate.

Aplicatii web mai rapide : Doua aspecte fac ASP.NET mai rapid: codul compilat si cacheing-ul. In trecut, codul era interpretat in "limbajul masina" cand site-ul era accesat de catre un vizitator. Acum, cu ASP.NET codul este compilat in "limbajul masina" inainte ca vizitatorul sa ajunga pe site. Caching-ul presupune stocarea informatiei care va fi refolosita intr-o locatie a memoriei pentru un acces mai rapid mai tarziu. ASP.NET permite programatorilor sa seteze pagini sau doar zone din pagini care sunt de obicei refolosite sa fie pastrate in memoria tampon (cache) o perioada de timp pentru a imbunatati performanta aplicatiilor web. In plus, ASP.NET permite pastrarea informatiei din baza de date in zona de memorie tampon astfel incat website-ul sa nu fie incetinit de accesarile succesive ale bazei de date daca aceasta nu se schimba foarte des. ASP.NET a fost testat si a reiesit ca este de 10 ori mai rapid decat tehnologia competitoare de la JAVA, J2EE. Desi au existat dezbateri in ceea ce priveste metodele de testare, rezultatele au fost validate de catre companii terte.

Protectie impotriva "scurgerilor de memorie" si a erorilor : ASP.NET isi revine automat dupa erori astfel incat web site-ul ramane mereu accesibil.

Suport pentru diverse limbaje de programare : Programtorii isi pot scrie codul in mai mult de 25 de limbaje .NET (inclusiv VB.NET, C# si Jscript.NET). Aceasta permite programatorilor sa dezvolte site-urile in limbajul pe care il cunosc cel mai bine si astfel pot fi gasiti alti programatori care sa dezvolte site-ul daca este nevoie.

Descrierea aplicatiei

Aplicatia descrisa in aceasta lucrare este un site de turism realizat folosind tehnologia ASP.NET.

1. Proiectarea aplicatiei

ASP.NET este tehnologia Microsoft pentru web-development, fiind una din cele mai dinamice tehnologii existente pe piata, ce capteaza interesul tot mai multor dezvoltatori de pagini web prin usurinta in utilizare si pentru profesionalismul platformei.

Este necesar a avea instalat pe masina server .NET Framework 5 si serverul web IIS. In cazul de fata, pentru dezvoltare am utilizat .NET 5 iar ca si server web am folosit IIS 7.

Dezvoltarea site-ului s-a facut utilizand Visual Web Developer 2008 Express Edition, downloadabil gratuit de pe site-ul Microsoft. Comunicarea dintre baza de date si site-ul web se realizeaza folosind ADO.NET, tehnologia de acces la baze de date a Microsoft.

Aplicatia are suport multi-user, fiind accesibila simultan mai multor utilizatori. Baza de date unica asigura sincronizarea intre date, astfel incat fiecare utilizator poate vedea in orice moment continutul actualizat al site-ului.

Fiecarui utilizator ii este atribuit un rol, pentru fiecare rol fiind definite drepturi de acces, cum sunt: adaugari, editari, stergeri etc.

2. Proiectarea bazei de date

Baza de date a aplicatiei a fost proiectata pentru a acoperi o gama larga de scenarii de utilizare si a oferi suport pentru dezvoltari ulterioare rapide.

Vom prezenta in continuare structura pe grupe de tabele.


Tabelele pentru utilizatori sunt ilustrate in figura de mai jos:


Tabelele pentru date de contact pentru entitatile turistice :


Tabelele pentru entitati turistice :


Structuri de cazare :




3 Implementarea aplicatiei


In cadrul acestui sub-capitol vom prezenta pas cu pas optiunile puse la dispozitie de aplicatie precum si modul de utilizare al acestora.


1 Pagina principala. Inregistrarea si autentificarea


Pentru inregistrare si autentificare se face click pe link-ul Login / Register , care se gaseste pozitionat in partea superioara a ecranului.


Pagina de autentificare :



Pagina de inregistrare :



Odata ce utilizatorul s-a autentificat ca si administrator, meniul de administrare devine disponibil :



2 Administrare Module Aplicatie


Aceasta pagina permite definirea si administrarea tuturor modulelor aplicatiei.



3 Administrare Drepturi Aplicatie


Aceasta pagina permite definirea si administrarea tuturor drepturilor ce pot fi atribuite unui utilizator al aplicatiei :



4 Administrare Drepturi Utilizatori


Permite administrarea drepturilor pentru fiecare utilizator, pe toate modulele definite :

5 Administrare tipuri utilizatori




6 Administrare utilizatori



7. Administrare Tari, Judete, Orase


Permite definirea tarilor, judetelor si oraselor gestionate de aplicatie :



8. Administrare tipuri de informatii de contact



9. Administrare valute



10 Administrare clasificare tipuri camere




11 Administrare clasificari unitati de cazare



12 Administrare servicii de alimentatie




13 Administrare tipuri de cabine de vapor



14 Administrare tipuri de caroserii auto



15 Administrare tipuri de combustibili



16 Administrare producatori auto si modele auto




17 Administrare facilitati si grupe de facilitati



18 Administrare mijloace de transport




19 Administrare tipuri de entitati turistice




20 Administrare entitati turistice



21 Adaugarea unei entitati turistice



22 Editarea unei entitati turistice



23 Vizualizare oferte hoteluri


24 Vizualizare oferte sejururi


25 Vizualizare oferte circuite


26 Vizualizare oferte croaziere


27 Vizualizare oferte rent-a-car


5. Concluzii


Pe parcursul acestei lucrari au fost prezentate cele mai importante elemente necesare cand se doreste dezvoltarea unei solutii software integrate bazate pe platforma .NET.
Am ales platforma ASP.NET pentru ca dispune de o gama larga de unelte software pentru proiectare, implementare si prezentare a aplicatiilor fiind un mediu ideal de dezvoltare pentru aplicatii complexe si cu inalte cerinte din punct de vedere al performantelor si securitatii.

Bibliografie


[1] Afaceri in economia digitala, Prof.dr. Bogdan GHILIC-MICU Catedra de Informatica Economica, A.S.E. Bucuresti, Revista Informatica Economica, nr. 3(23)/2002

[2] Platforme pentru comertul electronic, Lect.dr. Liviu Ion CIORA, prep. Ion BULIGIU, Revista Informatica Economica, nr. 1(21)/2002

[3] Efectele comertului electronic, Conf. univ. dr. Ion Botescu, articol disponibil in format pdf la adresa : http://www.amfiteatrueconomic.ase.ro/arhiva/pdf/no21/articol_fulltext_pag156.pdf

[4] http://enisa.europa.eu/doc/pdf/Country_Pages/Romania.pdf

[5]  Expert C# Business Objects, Rockford Lhotka, Ed. Apress, 2004

[6] Retele de calculatoare, Andrew S. Tanenbaum, Editura:Byblos, 2004

[7] Introducere in programarea .NET Framework, Nusa Dumitru-Lupan, Adrian Nita, Maria Nita, curs downloadabil in format pdf de la adresa http://www.microsoft.com/romania/educatie/cursnet/default.mspx

[8] POO cu Visual Basic.Net si Visual C#.Net, Robin Reynolds Haertle, Ed. Teora, 2007

[9] Dezvoltare de aplicatii in Visual Studio .NET, Gabriel Negara, Ed. Polirom, 2005

[10] Professional C# 3rd Edition, Simon Robinson, Christian Nagel, Karli Watson, Jay Glynn, Morgan Skinner, Bill Evjen , Wiley Publishing, 2008

[11]  Dezvoltarea aplicatiilor cu VISUAL STUDIO.NET , Richard Grimes, Ed. Teora, 2002

[12]  C# 2005 Programmer's Reference, Adrian Kingsley-Hughes, Kathie Kingsley-Hughes, Ed. Wrox, 2005

[13]  Pro C# 2008 and the .NET 5 Platform, Fourth Edition, Andrew Troelsen, Ed. Apress, 2007




Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright