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
Lucrare de diploma calculatoare - implementarea unei interfete web pentru o agentie de turism



Lucrare de diploma calculatoare - implementarea unei interfete web pentru o agentie de turism


UNIVERSITATEA DIN ORADEA

FACULTATEA DE INGINERIE ELECTRICA SI

TEHNOLOGIA INFORMATIEI

SPECIALIZAREA CALCULATOARE

FORMA DE INVATAMANT ZI



LUCRARE DE DIPLOMA



IMPLEMENTAREA UNEI INTERFETE WEB PENTRU O AGENTIE DE TURISM



Introducere


Lucrarea de fata are ca si scop realizarea unui site web pentru o agentie de turism.



Aplicatia este realizata in ASP.NET, o platforma inovatoare si moderna ce permite scrierea unor aplicatii complexe, oferind fiabilitate si securitate.

Pe parcursul lucrarii vom detalia pasii ce au fost urmati, de la motivarea alegerii temei, pana la implementarea propriu-zisa.

In Capitolul I este prezentat aspectul comercial al aplicatiei: ce anume inseamna comert electronic, ce presupune activitatea de turism in spatiul virtual si, mai ales, care este importanta economica a unei asemenea aplicatii.

In Capitolele II si III descriu pe scurt tehnologiile ce stau la baza proiectarii aplicatiei web. Acest capitol poate avea atat rolul de a familiariza cititorul cu principalele tehnologii internet, cat si ca o sursa rapida de documentatie , prin exemplele oferite.

In final, Capitolul IV prezinta realizarea efectiva a aplicatiei, pornind de la etapa de proiectare si continuand cu implementarea si utilizarea ei. Sunt descrise principalele avantaje oferite de aplicatie, precum si modul in care acestea pot fi utilizate.



1.    Afaceri electronice

1.1.          Caracteristicile afacerilor electronice


Pentru ca o afacere sa supravietuiasca, este necesar ca potentialii ei clienti sa stie de existenta acesteia. World Wide Web ofera o oportunitate unica, aceea de a permite lumii sa afle despre existenta companiei, despre produsele si serviciile pe care ea le ofera si dispune de mijloacele care permit clientilor sa comande produsele si serviciile pe care firma le ofera, toate acestea utilizand Internetul.

Afacerile derulate pe Web sunt asemanatoare afacerilor realizate intr-o maniera traditionala. Prezenta companiei pe Web, prin intermediul unui site are cateva avantaje clare comparativ cu deschiderea unui sediu fizic al firmei. Avantajele pot fi impartite, in functie de beneficiarul lor direct, in avantaje directe ale firmei, avantaje ale beneficiarilor produselor si serviciilor firmei si avantaje ale societatii.

Principalele avantaje aduse activitatii firmelor de care diferitele tipuri de afaceri electronice sunt:

- Faciliteaza extinderea activitatii, asigurand acces rapid la pietele locale si nationale, dar mai important si la pietele internationale;

- Scaderea costurilor cu desfasurarea activitatii firmei, in special acelea cu realizarea, procesarea, distribuirea, pastrarea si regasirea informatiilor pastrate pe hartie; in cazul afacerilor electronice sunt folosite solutii informatice, automatizate, pentru aceste activitati;

- Creeaza posibilitatea modelarii facile a produselor si serviciilor conform nevoilor cumparatorilor;

- Costuri de comunicatie, transport sunt mult reduse.

Avantajele consumatorilor sunt numeroase, dintre care sunt enumerate:

- Ofera posibilitatea consumatorilor sa cumpere sau sa efectueze tranzactii 24 h/zi, in tot timpul anului din aproape orice locatie;

- Acorda consumatorilor mai multe posibilitati de alegere;

- Cumparatorii pot sa aleaga mai usor cel mai mic pret pentru un produs sau serviciu;

- Permite livrarea rapida a produselor si/sau serviciilor (in unele cazuri);

- Consumatorii pot sa primeasca informatie relevanta intr-un timp scurt: in cateva secunde si nu in zile sau chiar saptamani cum este cazul in multe afaceri traditionale;

- Face posibila participarea la licitatii virtuale;

- Faciliteaza competitia, ceea ce duce la scaderea preturilor produselor si serviciilor;

- Permite consumatorilor sa interactioneze cu alti cumparatori prin intermediul comunitatilor electronice, sa schime impresii si sa-si compare experientele.

De asemenea, afacerile electronice aduc o serie de avantaje societatii, printre care:

- Ofera posibilitatea mai multor persoane sa lucreze de acasa si sa cumpere de acasa, ceea ce poate duce, in timp, la scaderea traficului auto si la scaderea poluarii;

- Anumite marfuri pot fi vandute la preturi mai mici, acest lucru avantajandu-i pe cei cu venituri mai mici, contribuind astfel la protectia sociala;

- Afacerile electronice contribuie la cresterea eficientei si/sau imbunatatirea calitatii produselor si serviciilor.

Pe langa aceste avantaje, afacerile electronice au si o serie de limite. Cele mai importante neajunsuri ale afacerilor electronice sunt:

- Lipsa unor standarde universal acceptate pentru calitate, securitate si incredere in afacerile electronice;

- Instrumentele de dezvoltare software pentru derularea afacerilor electronice sunt inca in plina evolutie;

- Existe unele dificultati in ceea ce priveste integrarea aplicatiilor software de comert electronic cu unele aplicatii existente si bazele de date;

- Accesul la Internet este inca scump si/sau inoportun pentru o mare parte a populatiei.

In ultimii ani s-a constatat o crestere a afacerilor electronice si in tara noastra si tendinta este de crestere continua.

1.2. Categorii de afaceri electronice


In ceea ce priveste afacerile electronice exista o multitudine de categorii in care aceste sunt impartite. Strans legate de afacerile electronice este comertule electronic.

Comertul electronic (e-commerce) este procesul de cumparare, vanzare sau schimb de produse, servicii sau informatii prin intermediul retelelor de calculatoare.

Afacerile electronice (e-business) nu se limiteaza la cumpararea si vanzarea de bunuri sau servicii, ci includ si facilitati pentru servirea cumparatorilor, colaborarea cu partenerii de afaceri sau conducerea unei organizatii prin mijloace electronice.

Serviciile electronice (e-services) reprezinta o serie de solutii complete pentru afaceri, formate dintr-o componenta hardware, o parte software si consultanta pentru afaceri.

Exista posibilitatea ca numai anumite activitati din cele ale afacerilor traditionale sa fie automatizate. Astfel afacerile electronice pot fi partiale sau totale si ele presupun desfasurarea a cel putin uneia din urmatoarele activitati:

- Prezenta on-line (existenta unui site de prezentare);

- Comanda on-line;

- Plata on-line;

- Transmiterea on-line a produsului sau serviciului.

Strans legata de comertul electronic este piata virtuala, aceasta reprezentand locul unde se intalnesc cumparatorii si vanzatorii pentru schimbul de produse, servicii sau informatii contra bani.

Activitatile din categoria afacerilor electronice sunt acele parti ale afacerilor traditionale care pot fi automatizate si mai mult, se pot desfasura pe Internet.

1.3. Etapele realizarii unei afaceri electronice


Etapele realizarii afacerilor electronice sunt similare celor realizarii afacerilor traditionale si anume:

Analiza afacerii are ca principale etape:

- Identificarea tipului de afacere si incadrarea ei intr-una din categoriile de afaceri electronice prezentate;

- Stabilirea obiectivelor si performantelor afacerii;

- Stabilirea canalului/canalelor ce vor fi utilizate pentru vanzarea si distributia produselor/serviciilor;

- Alegerea unui furnizor de servicii internet (ISP), care va oferi si servicii de gazduire a site-ului;

- Stabilirea imaginii si continutului site-ului; acesta trebuie sa fie scalabil si sa aiba implementate elemente de securitate;

- Alegerea strategiei de promovare a produselor si a site-ului;

- Alegerea mijloacelor si a modalitatilor ce vor fi folosite pentru plata produselor/ serviciilor: cecuri, carti de credit etc.

Cele mai importante mijloace pentru argumentarea oportunitatii variantei electronice a afacerii sunt:

- Explicarea avantajelor afacerilor electronice pentru beneficiarii sau clientii firmei;

- Explicarea implicatiilor tehnologiei folosite pentru desfasurarea afacerii electronice, in desfasurarea afacerii;

- Realizarea unui proiect pilot;

- Estimarea costurilor cu instruirea personalului, intretinerea afacerii si suportul tehnic necesar desfasurarii afacerii;

- Calculul productivitatii afacerii si compararea acesteia cu productivitatea afacerii in varianta traditionala a acesteia.

Este necesara identificarea riscurilor care pot sa apara in realizarea unei afaceri electronice. Exista o serie de riscuri suplimentare ale afacerilor electronice fata de riscurile afacerilor traditionale care trebuie avute in vedere si anume:

- Daca in cazul afacerilor traditionale competitia era locala sau nationala, acest lucru depinzand de aria de intindere a afacerii, in cazul afacerilor electronice competitia este mondiala deoarece localizarea companiei nu mai are, in majoritatea cazurilor, nici o importanta;

- Un factor cheie in desfasurarea afacerilor electronice il reprezinta securizarea site-ului; "spargerea" site-ului ducand la imposibilitatea desfasurarii afacerii;

- Viabilitatea - exista anumite tipuri de activitati/ domenii pentru care nu este oportuna construirea unei afaceri electronice;

Exista cateva primejdii care ar putea pune afacerea in pericol si anume:

- Pierderea increderii clientilor in situatia in care afacerea ar avea un punct vulnerabil sau daca acestia nu ar constata ca produsele sau serviciile nu corespund descrierii acestora;

- Fluxul virusilor este o primejdie deosebita pentru site si acestia pot pune in pericol afacerea, daca site-ul nu este securizat suficient;

- Posibilitatea fraudei - exista o serie de cazuri in care diferite persoane au folosit informatii insusite fraudulos sau au intrat pe site-uri prin punctele sale vulnerabile si au beneficiat de produse/servicii prin frauda.

Exista mai multe tehnici care pot fi folosite pentru atragerea vizitatorilor site-ului:

- Oferirea de informatii gratuite sub forma de ghiduri, raspunsuri la intrebarile vizitatorilor;

- Personalizarea continutului site-ului din punctul de vedere al informatiilor si a prezentarii, conform optiunii utilizatorilor;

- Suport on-line/off-line pentru derularea afacerii electronice;

- Anticiparea dorintelor clientilor;

- Traducerea informatiilor in limba materna; exemplu: google.com versus google.ro;

- Realizarea unei interfete atractive.

Realizarea site-ului presupune separarea datelor (continutului) de forma de prezentare (de forma). Realizarea site-ului consta in parcurgerea unei serii de etape, pentru fiecare etapa putandu-se folosi una sau mai multe, dintr-o serie de tehnologii de programare.Etapele si tehnologiile corespunzatoare sunt prezentate in tabelul de mai jos:

Etapa

Tehnologiile folosite

Generarea documentului la nivelul clientului

JavaScript, applet-uri Java, DHTML, DOM

Generarea documentului la nivelul serverului

CGI, PHP, ASP, ASP.NET, ISAPI

Transformarea datelor XML in pagini HTML

XSL, CSS

Stocarea si interogarea datelor

XML, XQL, SQL, CGI, ASP, PHP


Promovarea afacerii electronice reprezinta urmatorul pas in derularea unei afaceri electronice. Etapele promovarii unei afaceri electronice sunt: publicarea site-ului si anuntarea aparitiei pe Web.

Pentru publicarea site-ului este necesara alegerea furnizorului pentru gazduire (web hosting). Principalele elemente de care trebuie sa se tina cont la alegerea furnizorului sunt:

- costul lunar al serviciului (exista furnizori care ofera acest serviciu gratuit);

- caracteristicile tehnice ale suportului oferit: platforma pe care va fi stocat site-ul (sistemul de operare), tehnologiile ce vor putea fi folosite pentru accesarea datelor, sistemul de gestiune a bazelor de date disponibil pentru stocarea informatiilor, elementele de securitate pe care le pune la dispozitie sistemul;

- largimea de banda disponibila utilizatorilor pentru accesarea site-ului.

De asemenea trebuie ales un nume de domeniu si achizitionarea acestuia. Unele firme includ gratuit aceasta optiune in pachetele de servicii. Domeniile pot fi achizitionate direct de la organizatia existenta in fiecare tara, organizatie care gestioneaza numele de domenii.

Anuntarea aparitiei pe Web este necesara in promovarea site-ului firmei. Principalele solutii ce pot fi folosite pentru promovarea site-ului sunt:

- In toate cataloagele, publicatiile si brosurile, practic in toate locurile in care apare numele companiei trebuie sa apara si adresa site-ului;

- Inscrierea site-ului in cataloagele portalurilor romanesti si straine;

- Inregistrarea site-ului la motoarele de cautare si optimizarea continutului sau pentru indexarea adecvata de motoarele de cautare;

- Promovarea site-ului pe forumuri si in grupuri de discutii;

- Participarea la clasamentele site-urilor care fac topuri.

Administrarea afacerii presupune utilizarea unor sisteme avansate de gestiune a informatiilor. Exista sisteme pentru gestiunea cunostintelor, a relatiilor cu clientii, pentru colaborare, pentru managementul imaginii companiei etc. Fiecare sistem ofera posibilitatea de introducere de informatii in bazele de date asociate, de prelucrare, de regasire a informatiilor si de obtinere de rapoarte privind diverse situatii. Managementul imaginii companiei presupune urmatoarele activitati:

- Construirea profilului utilizatorilor (data-mining);

- Analiza fisierelor cu informatii despre utilizatorii care au accesat site-ul;

Stabilirea popularitatii site-ului prin analiza urmatoarelor elemente:

numarul de accesari, intr-o perioada de timp;

viteza de incarcare a datelor;

timpul de vizitare al site-ului;

numarul de bannere vizualizate.

Pentru realizarea unei afaceri electronice sunt necesare o serie de investitii, care vor fi amortizate prin derularea afacerii, cu conditia existentei unei analize obiective a acesteia si a unui management de calitate.

1.4. Platforme software pentru afaceri electronice


Datorita faptului ca domeniul afacerilor electronice este unul in dezvoltare, multe companii si-au concentrat eforturile in vederea realizarii de solutii complete pentru afacerile electronice.

Cand se doreste realizarea unui site de comert electronic se poate construi site-ul folosind tehnologiile traditionale sau se poate achizitiona o platforma software pentru dezvoltarea afacerilor electronice, solutii ce permit, in general, generarea automata a unui sistem si adaptarea sa conform particularitatilor afacerii, dorintelor beneficiarului si complexitatii dorite.

1.5. Turismul ca activitate economica


Originea lingvistica a termenului "turism" este strans legata de semnificatia cuvintelor latine "tornare" (a se intoarce) si "tornus" (miscare circulara) si desemneaza o calatorie (deplasare circulara cu intoarcerea in punctul de plecare).

Aceeasi semnificatie, de revenire in punctul initial din care s-a pornit, cu alte cuvinte de circuit, se regaseste in limbile moderne europene: "tourisme" la francezi, "tourismus" la nemti, "tourism" la englezi, "tourismo" la italieni, "turizm" la rusi si "turism" la romani.

Pentru prima oara, termenul de turist a fost folosit in anul 1800, de catre Samuel Pegge, intr-o lucrare intitulata "Anecdote ale limbii engleze", prin formularea "A traveller is now -a- days called Tourist" respectiv, un calator, astazi este numit turist.

Realizarea activitatii turistice presupune prezenta altor elemente cu rol hotarator in desavarsirea actului turistic si care servesc argumentatiei de a inscrie turismul in sectorul tertiar, atat in mod direct, prin activitatea serviciilor de cazare, alimentatie publica, transport etc., cat si in mod indirect, prin intermediul aportului specific al altor ramuri ale sectorului tertiar la activitatea turistica (agricultura, constructii, industrie alimentara etc.).

Cei mai multi autori considera produsul turistic drept un rezultat al -" asocierilor, interdependentelor dintre resurse (patrimoniu) si servicii", iar "resursele vor lua forma diferitelor produse turistice numai prin intermediul prestarilor de servicii specifice".

Deci, determinarea si individualizarea produselor turistice se realizeaza pornind de la calitatea activitatii de prestatii, iar serviciile constituie, dintr-un anumit punct de vedere, componenta " dominanta sau determinanta a ofertei turistice"[1]

Serviciul turistic constituie " un ansamblu de activitati ce au ca obiect satisfacerea nevoilor turistului in perioada in care se deplaseaza si in legatura cu aceasta"[2]. Deci, o parte a activitatilor care compun prestatia turistica, vizeaza acoperirea unor necesitati obisnuite, cotidiene (odihna, hrana), iar  alta parte determina specificitatea turismului si particularizeaza formele sale de manifestare.

Serviciul turistic trebuie sa creeze si sa asigure conditiile necesare refacerii capacitatii de munca, in mod simultan cu petrecerea placuta si instructiva a timpului liber.

Derularea prestatiei turistice presupune, in marea majoritate a cazurilor, activitati grupate in urmatoarele tipuri de servicii:

- servicii de cazare;

- servicii de alimentatie;

- servicii de agrement-divertisment;

- servicii de transport;

- servicii suplimentare (complementare).



Consumul serviciilor turistice presupune derularea, intr-o anumita ordine, a unor tipuri de activitati, atat specifice, cat si nespecifice turismului, in functie de tipul prestatiei, momentul si locul prestatiei, forma de turism etc..

In raport cu natura prestatiei si motivatia cererii turistice, se intalnesc urmatoarele tipuri de servicii[3]

- servicii turistice specifice, a caror existenta si complexitate sunt determinate de esenta fenomenului turistic ca atare.

La randul lor, pot fi grupate astfel:

servicii turistice de organizare si pregatire a consumului turistic (organizarea calatoriilor, consultanta acordata turistilor, promovare, rezervarea serviciilor etc.);

servicii de baza, referitoare la activitati care reprezinta motivatia de baza a calatoriei. In aceasta categorie sunt incluse urmatoarele tipuri de servicii[4]:

Serviciul de cazare vizeaza, prin continutul sau, crearea conditiilor si a confortului necesar adapostirii si odihnei calatorului si reprezinta produsul a ceea ce se numeste "industrie hoteliera", respectiv acel sector care, conform acceptiunii actuale, inglobeaza ansamblul activitatilor desfasurate in spatiul de cazare.

Fiind alcatuit, la randul sau, dintr-un grup de prestatii oferite turistului pe timpul sejurului, in unitatile de cazare, serviciul de cazare se prezinta ca o activitate complexa.

Activitatea turistica si industria hoteliera se afla in legaturi stranse de interdependenta. Serviciul hotelier, pe langa cazarea propriu-zisa, este completat de o serie de prestatii suplimentare (alimentatie, activitati de informare, comerciale etc.), intre care exista relatii de interferenta si care sunt dezvoltate in functie de specificul fiecarei unitati hoteliere.

Cazarea constituie, insa, principala functie indeplinita de unitatea hoteliera, obiectivul sau principal fiind asigurarea conditiilor de odihna si igiena ale turistului, prin intermediul unui echipament corespunzator.

- Serviciul de alimentatie determina, la randul sau, calitatea prestatiei turistice in ansamblul ei, influenteaza atat continutul, cat si atractivitatea ofertei turistice si are implicatii directe asupra modului de orientare a fluxurilor turistice.

Constituindu-se intr-o componenta de importanta majora a ofertei turistice, serviciul de alimentatie publica este supus unui proces continuu de perfectionare si modernizare (de

exemplu, din punct de vedere al modernizarii structurii retelei, se remarca tendinta de creare a unor unitati cu functii complexe, precum si a unor noi tipuri de unitati, mai bine adaptate specificului unor segmente de clienti) si, in acelasi timp, de diversificare, prin oferirea unor prestatii cu caracter complementar.

- Serviciul de agrement-divertisment cuprinde acele activitati care, prin mijloace specifice, contribuie la satisfacerea nevoilor fizice si psihice ale turistului, prin asigurarea cadrului necesar petrecerii placute si instructive a timpului liber.

Pe langa faptul ca serviciul de agrement necesita o baza tehnico-materiala adecvata motivatiei turistice si dotarea cu un personal cu calificare corespunzatoare, contribuind astfel in mod direct la dezvoltarea economica a zonei sau statiunii turistice. Rolul sau este cu atat mai important cu cat, printr-un mod de organizare modern, in care turistul devine participant activ la divertismentul efectiv, contribuie la orientarea fluxurilor turistice si la cresterea eficientei activitatii turistice.

- Serviciul de transport turistic are un rol determinant in cresterea calitatii prestatiei turistice, deoarece, prin intermediul sau, este asigurat accesul turistilor in zonele de interes turistic, intalnirea cererii cu oferta turistica si, prin aceasta, transformarea lor din stare potentiala, intr-una efectiva.

Deoarece timpul total de vacanta al unui turist poate fi considerat, dintr-un anumit punct de vedere, ca este compus din doua elemente si anume, timp de transport si timp de sejur, rezulta necesitatea asigurarii unui transport rapid, care sa permita reducerea timpului de deplasare, atat intre punctele-cheie ale itinerariilor turistice, cat si la nivelul unei statiuni sau localitati.

Servicii turistice suplimentare sau complementare in randul carora este cuprinsa o serie de activitati care au drept scop asigurarea unei odihne active, unei recreeri a turistilor, activitati care nu se substituie, insa, serviciilor de agrement.

Caracterizate printr-o mare varietate, unele dintre ele pot fi anticipate de catre turisti, intrand in costul initial al programului turistic. Altele vor fi cunoscute abia la destinatie, iar solicitarea lor ramane la alegerea turistilor.

Cele mai importante servicii suplimentare sunt considerate a fi urmatoarele[5]:

- servicii de informare a clientelei turistice;

- servicii de intermediere (inchirieri, rezervari etc.);

- servicii si activitati turistice cu caracter special (organizarea de simpozioane, festivaluri, expozitii etc.);

- servicii si activitati turistice cu caracter sportiv;

- servicii de tratament balneo-medicale;

- servicii diverse.

Dintre acestea, serviciile de cura si tratament balneo-medical pot fi considerate suplimentare in situatiile in care turistii isi completeaza sejurul intr-o statiune cu efectuarea unor tratamente (bai de namol, cure de ape minerale etc.), in mod preventiv.

Deoarece, atat pe plan mondial, cat si pe plan national, se remarca necesitatea cresterii rolului medicinei preventive, prin apelarea la remedii oferite de factorii terapeutici naturali, de sine statatori sau combinati cu mijloace terapeutice, se constata o preocupare sustinuta pentru punerea in valoare a factorilor naturali-curativi, pentru dezvoltarea bazei materiale si de tratament in localitatile care dispun de acesti factori, pentru pregatirea unui personal calificat corespunzator.

Serviciile turistice nespecifice, sunt asigurate de catre diferite unitati prestatoare de servicii, de care turistii beneficiaza in anumite imprejurari: transport in comun, gospodarie comunala, reparatii si intretinere, telecomunicatii, servicii de igiena si infrumusetare etc., care, in mod indirect, contribuie la satisfacerea nevoilor turistilor.

2. Comunicatii electronice si Internet

2.1. Retele de calculatoare


O retea de calculatoare reprezinta un ansamblu de calculatoare (sisteme de calcul) interconectate prin intermediul unor medii de comunicatie (cablu coaxial, fibra optica, linie telefonica, unde radio) in scopul utilizarii in comun de catre un numar foarte mare de utilizatori - chiar la nivel mondial - a tuturor resurselor fizice (hardware), logice (software de baza si aplicatii) si informationale (baze de date) asociate calculatoarelor din retea.

O retea de calculatoare este compusa dintr-o parte hardware (servere, statii de lucru, cabluri, imprimante etc.) si o parte software (sistem de operare si aplicatii). Prin astfel de retele de calculatoare se poate asigura o integrare informatica a unui numar foarte mare de utilizatori la nivel local, regional si mondial. Astfel, in context retea:

- un cabinet medical poate consulta o baza de date a OMS (Organizatia Mondiala a Sanatatii) pentru a afla date despre medicamentele noi aparute;

- un cumparator, utilizand un telefon si un modem conectat la calculator, poate telefona in diverse locatii pentru a emite comenzile sale;

- datele pot fi transmise de un calculator la altul etc.

Mediul Internet este un ansamblu de retele de calculatoare interconectate care, impreuna cu miile de calculatoare individuale (terminale, statii de lucru) si milioane de utilizatori, constituie comunitatea Internet, care are la dispozitie un mediu informational si de calcul cu foarte multe servicii informatice si resurse (baze de date diverse, biblioteci de programe, documentatii etc.).

Mediul Internet constituie un ansamblu complex de arhitecturi, componente fizice si sisteme de operare, care trateaza in mod egal atat minicalculatoarele sau retelele de calculatoare, cat si PC-urile sau mainframe-urile. Facilitatile mediului au o importanta egala, iar componentele sale se comporta una fata de alta fara nici o discriminare. Mediul pentru realizarea comunicatiilor electronice automate este reprezentat de retelele de calculatoare.

Toate retelele, inclusiv cele complexe, includ trei blocuri fundamentale:

- dispozitive care furnizeaza servicii retelei;

- dispozitive care utilizeaza serviciile oferite de retea;

- un set de reguli pentru comunicarea intre aceste dispozitive.




Figura 2.1. Exemplu de retea


O retea este gestionata si functioneaza sub controlul unui sistem de operare a retelei (Network Operating System - NOS), care ofera cel putin urmatoarele servicii:

- partajarea pachetelor de aplicatii si a datelor;

- securitate;

- salvare/restaurare centralizata a datelor si aplicatiilor (backup/recovering);

- posta electronica (E-mail);

- comunicarea cu statii aflate la distanta (remote), retele locale si calculatoare mini/mainframe; prin acest serviciu, de exemplu, datele pot fi transferate intre retele, fisierele pot fi create la nivelul unui birou central si diseminate in fiecare locatie a birourilor locale etc.

Sistemul de operare al retelei poate fi Unix, Linux, MacOS, Novell NetWare, Windows 2003 Server etc.

Statiile de lucru dintr-o retea sunt conectate la un server. Orice retea de calculatoare poate contine unul sau mai multe servere. Tehnologiile actuale au produs o varietate de dispozitive pentru a interconectarea retelelor. Aceste dispozitive de interconectare includ:

- concentratoare (hub);

- rutere (router);

- repetoare (repeater);

- modulatoare de semnal (modem);

- porti (gateway);

- punti (bridge).

Retele de calculatoare se impart in mod conventional in trei categorii: LAN (Local Area Network), MAN (Metropolitan Area Network) si WAN (Wide Area Network).

Principalele tipuri de conexiuni de date sau, mai general, de realizare a schimbului de mesaje in retea sunt retele locale LAN si retele extinse WAN, diferenta tehnologica dintre ele constand in mod esential in limitarile de distanta impuse de metodele de conectare.

O retea locala (LAN) leaga impreuna calculatoarele personale (statii de lucru) astfel incat acestea sa poata comunica intre ele si sa foloseasca in comun resurse cum ar fi imprimante, aplicatii software, fisiere, directoare, baze de date etc. Retelele locale LAN se afla de regula intr-o singura cladire sau un grup de cladiri pe o suprafata care nu depaseste cativa kilometri patrati.

Retelele care se intind pe mai putin de cativa de cativa kilometri patrati se numesc retele de metropolitane (MAN), putand acoperi pana la o zona de oras sau o localitate mica.

Retelele care se intind pe mai mult de cativa kilometri patrati se numesc retele de mare suprafata (WAN), putand acoperi un oras, o tara sau intregul glob.

Retelele pot fi cu fir (wired) sau fara fir (wireless). Cele fara fir pot fi:

retele WPAN (Wireless Personal Area Network, ex. Bluetooth);

retele WLAN (WiFi);

retele WMAN;

retele WWAN (2.4 GHz, usually);

retele mobile (prin companiile de telefonie fara fir):

o      GSM (Global System for Mobile Communications);

o      PCS (Personal Communications Service);

o      D-AMPS (Digital Advanced Mobile Phone Service - inlocuit in mare parte cu GSM).

Retelele extinse WAN se prezinta sub forma de intranet (ca retele extinse private) si Internet (cea mai mare retea extinsa din lume − reteaua mondiala publica).

2.2. Comunicatii in Internet

2.2.1. World Wide Web


Internet-ul reprezinta o multime globala de calculatoare interconectate, similar unei retele locale, dar la o scara mult mai larga. Elementul primar al Internet-ului este World Wide Web (cunoscut sub numele de Web sau WWW). WWW este un suport pentru text, grafica, animatie si sunet. Documentele destinate Web-ului sunt cunoscute sub numele de pagini Web.

Pentru a intelege mai bine World Wide Web se porneste de la modul in care este organizata informatia in mediile tiparite. Aceste medii reprezinta un model adecvat pentru Web si modul sau de organizare.

Daca se analizeaza caracteristicile fizice si de organizare ale unei carti, se observa ca aceasta este compusa din unitati de informatii: paginile. La randul lor, paginile sunt organizate conceptual in capitole. Capitolele sunt legate impreuna, dand astfel nastere cartii. Prin urmare, se poate aprecia ca o carte este o colectie de pagini organizate intr-un format care implica citirea ei intr-o anumita ordine, de la prima pagina la ultima pagina. Totodata, modul ei de organizare permite sarirea anumitor pagini sau capitole, avand astfel posibilitatea de a crea o strategie proprie de navigare prin informatiile existente.

Structura unei carti este un exemplu de organizare liniara a informatiei. Ca si filmele, cele mai multe carti sunt organizate in ideea ca lectura se incepe de la prima pagina si se termina la ultima pagina. Exista insa si un mod mai evoluat de parcurgere a unei carti, care ofera anumite avantaje pentru cititor. De exemplu, in loc sa intoarca pagi-na in mod fizic, s-ar putea atinge o zona de la baza fiecarei pagini, o sageata inainte pentru a trece la pagina urmatoare, o sageata inapoi pentru pagina precedenta. De asemenea, atunci cand priveste cuprinsul cartii, cititorul poate atinge descrierea unui capitol pentru a trece direct la pagina unde incepe acel capitol.  

Un asemenea model se numeste hipermediu sau hipertext, termen imaginat de specialisti ai stiintei calculatoarelor inca de la mijlocul secolului XX (in anul 1965), si utilizat de catre Theodor H Nelson in cartea sa "Computer Lib/Dream Machines", aparuta in anul 1974.

Un avantaj imediat este ca indexul de subiecte devine realmente util: prin capacitatea de a atinge un subiect de interes, un text explicativ sau o referinta descriptiva, se poate utiliza aceeasi carte ca material de referinta, in plus fata de manualul organizat liniar pe care il ofera cartea. Este aceeasi diferenta dintre accesul direct oferit de un CD cu muzica si fluxul liniar al unei casete audio sau video.

Un alt avantaj al hipertextului vizeaza notele explicative de la subsolul paginilor. Textul de subsol nu mai trebuie inghesuit in partea de jos a paginii, deoarece cu ajutorul hipertextului se poate atinge asteriscul sau numarul notei de subsol din cadrul textului - moment in care se va deschide o caseta care afiseaza nota de subsol.

Se poate atinge o ilustratie pentru a obtine o versiune la scara mai mare a acelei ilustratii, sau chiar pentru a converti ilustratia intr-o secven-ta animata sau in spatiu 3D, in care se poate naviga si examina obiectul respectiv din diverse puncte convenabile.

Aceasta descriere este similara paginilor Web. Acestea insa ofera si alte posibilitati care fac lucrurile mult mai interesante: paginile de in-formatii se pot regasi pe calculatoare raspandite in lumea intreaga. Pagi-nile in sine pot fi documente foarte complexe, interesante si atractive.

Paginile Web sunt memorate pe discul unui server specializat si gestionate printr-un software special si sunt regasite si afisate prin intermediul navigatoarelor Web (browsere). Navigatoarele Web (cum ar fi Internet Explorer, Opera sau Netscape Navigator) afiseaza paginile de Web prin interpretarea unor marcatori - definiti cu ajutorul unui limbaj special denumit HTML (HyperText Markup Language) - utilizati pentru a codifica pagina de Web cu informatia de afisat. Marcatorii au diferite semnificatii. De exemplu acestia specifica modul in care vor fi afisate diversele parti ale paginii sau stabilesc legaturi intre documente/fisiere. Tipic, o pagina de Web este legata de o diversitate de fisiere cum ar fi fisiere text, grafice sau multimedia. Mecanismul prin care sunt create caile de acces intre documente este denumit hipertext (hypertext), prezentat anterior. Atunci cand utilizatorul actioneaza prin clic de mouse asupra unei legaturi, cum ar fi o portiune de text, un element grafic etc., navigatorul incarca fisierul la care puncteaza aceasta legatura si il afisea-za. Legaturile din cadrul textului sunt usor de identificat deoarece majoritatea navigatoarelor, implicit, coloreaza diferit de restul textului aceste legaturi si le subliniaza.

Un site Web este definit ca o colectie coerenta de informatii prezentata sub forma unor pagini Web, fisiere multimedia, documente si de alte tipuri, intre care exista legaturi. Paginile Web si colectia de fisiere referite si sunt integrate printr-o pagina Web denumita pagina principala denumita in mod tipic index.html, default.html, sau home.html (extensia html poate aparea ca htm). Aceasta pagina contine in mod uzual un cuprins sau un index care face referiri la celelalte pagini din site-ul Web. Intr-un site bine proiectat toate celelalte pagini puncteaza catre aceasta pagina principala chiar daca navigatoarele moderne au butoane pentru acest lucru.

Atunci cand se realizeaza un site Web, aceste fisiere sunt pastrate, in mod uzual, intr-un director sau o colectie de directoare in discul local si este referit cu numele de site local. Serverul Web este dedicat memorarii, transmiterii si regasirii paginilor de Web si a fisierelor legate de acestea.

Prin publicarea unui site local (upload), directorul sau local, impreuna cu continutul sau (fisierele site-ului si subdirectoarele din el), este transferat la serverul Web care contine software-ul prin care site-ul este transmis navigatoarelor Web ale calculatoarelor conectate la Internet. Odata publicat, site-ul se transforma din site local in site Web, iar interactiunea utilizatorului cu el are loc similar modului descris in figura:

Figura 2.2. Comunicatia dintre navigatorul Web si serverul Web

Desi cea mai mare parte a informatiilor din World Wide Web este stocata in pagini Web scrise folosind limbajul HTML, exista un numar destul de mare de documente provenite din alte tipuri de servicii de publicare a informatiilor din Internet.

2.2.2. Adresarea calculatoarelor in Internet


In Internet, fiecare calculator are o adresa unica exprimata ca un numar pe 32 de biti. Aceste adrese sunt organizate in cinci clase de la A la E. Fiecare clasa care apartine uneia din clasele A, B sau C consta dintr-un identificator de retea (netid) si un identificator de calculator gazda (hostid). Clasa de adrese D este rezervata grupurilor de broadcast, iar clasa E este rezervata pentru utilizari ulterioare. In tabelul de mai jos sunt prezentate numarul maxim de retele si numarul maxim de calculatoare din cadrul unei retele pentru clasele A, B si C.


Clasa

Numar maxim retele

Numar maxim calculatoare pe retea

A

126

16777214

B

16382

65534

C

2097152

254


Adresele Internet sunt exprimate in notatia zecimala cu puncte.

Elementul fundamental al comunicatiei bazate pe mesaje este reprezentat de realizarea distinctiei dintre doua tipuri de roluri in care poate fi implicat un proces si anume acela de transmitator/expeditor si receptor/destinatar. Din momentul in care un mesaj a fost transmis si pana in momentul in care a fost receptionat mesajul este in transmisie. Comunicatia bazata pe mesaje poate fi de unul din tipurile:

- punct la punct (point to point) in care fiecare calculator este explicit identificat printr-o adresa unica;

- oricine la unul (any to one) in care un proces trebuie sa fie ca-pabil sa primeasca mesaje de la orice expeditor;

- un transmitator la mai multi receptori;

- mai multi transmitatori la mai multi receptori.

Pentru realizarea comunicatiei sunt utilizate canale de comuni-catie. Un canal este definit ca un mediu general de comunicatie intre o multime de expeditori si o multime de destinatari. Un canal de comunicatie care accepta multipli expeditori si multipli destinatari preva-zut cu cozi de asteptare pentru mesaje este referit sub numele de casuta postala.

Canalele de comunicatie care au un singur destinatar sunt referite cu numele de port (de exemplu, portul cu numarul 80 este asociat implicit serverlor Web). Canalul de comunicatie in care este un singur expeditor si un singur destinatar se numeste legatura si se refera in general la o conexiune fizica, de exemplu legatura telefonica dintre calculatorul local si furnizorul de servicii Internet prin dial-up. O conexiune este o legatura bidirectionala intre doua procese care conserva ordinea si sensul transmiterii mesajelor.


Utilizarea adreselor numerice ale statiilor in vederea realizarii comunicarii ar fi extrem de dificila pentru utilizatorii obisnuiti. In Internet acestia acceseaza serverele si resursele utilizand nume, de cele mai multe ori chiar relevante. Aceste nume sunt asociate adresei numerice a statiei si sunt gestionate si atribuite la cerere de catre DNS (Domain Naming System).

Domeniile sunt impartite in domenii generice (net, org, mil) si nume de tari (ro, at, ie). In tabelul de mai jos sunt prezentate cateva nume de domenii:


Domeniu

Semnificatie

.arts

Grupuri culturale

.biz

ShowBiz

.com

Afaceri generale si individuale

.edu

Scoli/educatie

.firm

Afaceri

.gov

Guvern

.info

Servicii informationale

.mil

Militar

.net

Furnizori de servicii Internet sau retele generale

.nom

Indivizi

.org

Organizatii nonprofit

.rec

Situri recreative

.store

Vanzare en-detail

.web

Organizatii referitoare la Web

.ro, .fr, .deu, .uk .

Domenii de tara


Internetul s-a confruntat cu o mare problema deoarece nu dispunea de o autoritate sau organizatie centrala, motiv pentru care colectii voluminoase de date au fost aranjate intr-o maniera nesemnificativa. Atunci cand Tim Berners Lee si echipa sa de la CERN (institut de cercetare din Elvetia care a creat tehnologia de baza a World Wide Web) au inceput sa creeze un mecanism comun pentru identificarea unica a informatiilor din spatiul de date, s-a inteles necesitatea unei scheme care sa contina anumite parti si care sa poata fi extinsa astfel incat sa includa o varietate de servicii Internet. Rezultatul a fost URL (Uniform Resource Locator).


2.2.3. URL


Formatul unei locatii din Internet este numita URL (Uniform Resource Locator - Descriptor Uniform de Resurse). Pentru o buna intelegere a codului HTML, este de preferat cunoasterea locatiilor posibile de apelat din cadrul acestuia.

Intr-o pagina Web, legaturile (links) sunt reprezentate de siruri de text special formatate sau elemente de grafica care, atunci cand sunt actionate (prin click de mouse, de exemplu), afiseaza mai mult text sau grafic. Aceste fisiere catre care trimite o legatura pot fi reprezentate de alte pagini Web sau fisiere de diverse tipuri ca grafice, imagini, sunet, animatie, formulare de culegere date, apleturi Java, film si orice alt tip necesar.

Structura completa a unui URL este urmatoarea:

protocol://nume-calculator-gazda:port/cale-director/resursa

Protocolul sau serviciul este reprezentat de regulile care guverneaza transferul datelor in retea. In practica se utilizeaza urmatoarele protocoale:

- file -specifica un URL local;

- http - indica adresa Internet a unei pagini Web sau alta resursa;

- ftp - utilizat pentru adresarea in Internet a fisierelor prin intermediul protocolului de transfer de fisiere FTP.

- gopher - indica adresa URL a unui director Gopher; Gopher reprezinta un sistem utilizat pentru localizarea si transferul informatiilor de indexare a numelor fisierelor in Internet.

- telnet -permite conectarea in timp real la un alt calculator in Internet si utilizarea acestuia ca si cum ar fi un calculator local.

In sistemele Windows, in anumite situatii, protocolului poate lipsi pentru anumite adrese, tipul acestuia fiind determinat din numele gazdei (www pentru http, ftp pentru ftp etc).

Numele calculatorului gazda identifica in mod unic un calculator in cadrul retelei. Numele poate reprezentat atat printr-o adresa IP cat si prin denumirea unui calculator local sau a unui calculator din Internet folosind specificatiile DNS.

Portul este reprezentat printr-un numar si specific fiecarei aplicatii. Majoritatea aplicatiilor de retea utilizeaza porturi pentru comunicare. Pe un calculator pot exista mai multe aplicatii de retea, fiecare aplicatie utilizand un port distinct. O parte din porturile sunt standard si sunt asociate anumitor aplicatii. In cazul in care nu se schimba aceste porturi, la accesarea unor resurse prin intermediul URL-urilor acestea pot sa lipseasca. In mod implicit portul pentru protocolul http este 80 si nu este necesara specificarea acestuia in URL.

Calea de directoare reprezinta locatia relativa a fisierelor in cadrul serverului.

Numele resursei este reprezentata de numele fisierului referit. Acesta poate fi o pagina Web, un fisier multimedia, un document, un fisier executabil.

In cazul protocolului http daca din URL lipseste numele fisierului, fisierul cautat va fi index.htm(l), default.htm(l) sau orice nume de fisier care a fost setat ca fiind fisier implicit ca pagina principala.

O limitare o constituie faptul ca un URL nu poate contine spatii si alte caractere speciale, astfel ca orice spatiu sau caracter special se va converti printr-un cod asociat acestora precedat de simbolul "%".

Alte URL-uri folosite alaturi de cele prezentate sunt cele de:

- e-mail, prin intermediul carora se pot doar trimite mesaje de posta electronica.

- stiri Usenet - in care trebuie sa se identifice un server de stiri care sa ofere acces.

Totusi, cele mai utilizate sunt URL-urile de tip HTTP, acesta fiind serviciul cel mai utilizat.

3 Tehnologii utilizate in implementarea aplicatiei

3.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.

3.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 3.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.

3.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 3.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.

3.1.3. 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.

3.1.4. 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.

3.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 3.3. 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 3.4. 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.

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

3.2.1. Tehnologii client

3.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>

3.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.

3.2.1.3. 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.

3.2.1.4. 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.3.2.min.js'>

</script>

3.2.2. Tehnologii server

3.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.

3.3. Pagini web dinamice

3.3.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.

3.3.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.

3.3.3. 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 3.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.

3.4. .NET

3.4.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 3.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).

3.4.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.

3.4.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.

3.5. Programarea web utilizand ASP.NET

3.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 4.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.

3.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.

3. Serverul Web proceseaza cererea.

4. 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 4.

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.

3.5.3. 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>

3.5.4. 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)


3.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?

3.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)


3.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).

3.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.

3.5.6.1. Proprietati comune

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

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

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

4.     Alte proprietati, specifice tipului de validator.

3.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.

3.     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.

4.      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.

3.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.


3.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)

3. Daca acestea doua nu corespund, IIS refuza cererea utilizatorului

4. 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.

3.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

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

4. 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.

3.5.7.3. 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.

Totusi, este indicat pentru o securitate de nivel mai inalt - securitate atat de necesara uneori - ca administratorul aplicatiei si al serverului IIS (sau al serverului Mono, sub Linux) sa fie mereu cat mai la curent cu ultimele vulnerabilitati si sa upgradeze periodic serverul si, eventual, aplicatia conform acelor vulnerabilitati.

3.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.

3.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.


4. Descrierea aplicatiei

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

4.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 3.5 si serverul web IIS. In cazul de fata, pentru dezvoltare am utilizat .NET 3.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.

4.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 :




4.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.


4.3.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 :



4.3.2 Administrare Module Aplicatie


Aceasta pagina permite definirea si administrarea tuturor modulelor aplicatiei.



4.3.3 Administrare Drepturi Aplicatie


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



4.3.4 Administrare Drepturi Utilizatori


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

4.3.5 Administrare tipuri utilizatori




4.3.6 Administrare utilizatori



4.3.7. Administrare Tari, Judete, Orase


Permite definirea tarilor, judetelor si oraselor gestionate de aplicatie :



4.3.8. Administrare tipuri de informatii de contact



4.3.9. Administrare valute



4.3.10 Administrare clasificare tipuri camere




4.3.11 Administrare clasificari unitati de cazare



4.3.12 Administrare servicii de alimentatie




4.3.13 Administrare tipuri de cabine de vapor



4.3.14 Administrare tipuri de caroserii auto



4.3.15 Administrare tipuri de combustibili



4.3.16 Administrare producatori auto si modele auto




4.3.17 Administrare facilitati si grupe de facilitati



4.3.18 Administrare mijloace de transport




4.3.19 Administrare tipuri de entitati turistice




4.3.20 Administrare entitati turistice



4.3.21 Adaugarea unei entitati turistice



4.3.22 Editarea unei entitati turistice



4.3.23 Vizualizare oferte hoteluri



4.3.24 Vizualizare oferte sejururi



4.3.25 Vizualizare oferte circuite



4.3.26 Vizualizare oferte croaziere



4.3.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 cerinte inalte 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 3.5 Platform, Fourth Edition, Andrew Troelsen, Ed. Apress, 2007

[14] http://msdn2.microsoft.com/en-us/netframework

[15] http://www.codeproject.com

[16] http://www.c-sharpcorner.com/

[17] http://www.wikipedia.org

[18] http://www ecomerce - guide.com

[19] http://www.planet-source-code.com/



[1] - Bran F., Marin D., Simon T., Op. Cit., pag. 68

[2] - Barbu Gh. (coord.), "Turismul in economia nationala", Ed. Sport-Turism, Bucuresti, 1981, pag.27

[3] - Cosmescu I., Op. Cit., pag. 155-156

[4] - Snack O., "Economia si organizarea turismului", Ed. Sport-Turism, Bucuresti, 1975

[5] - Bran F., Marin D., Simon T., Op. Cit., pag. 84



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