Implementarea Unei Interfete Web Pentru O Agentie DE Turism
IMPLEMENTAREA UNEI INTERFEȚE WEB PENTRU O AGENȚIE DE TURISM
Cuprins
Introducere
1. Afaceri electronice
1.1. Caracteristicile afacerilor electronice
1.2. Categorii de afaceri electronice
1.3. Etapele realizării unei afaceri electronice
1.4. Platforme software pentru afaceri electronice
1.5. Turismul ca activitate economică
2. Comunicații electronice și Internet
2.1. Rețele de calculatoare
2.2. Comunicații în Internet
2.2.1. World Wide Web
2.2.2. Adresarea calculatoarelor în Internet
2.2.3. URL
3. Tehnologii utilizate în implementarea aplicației
3.1. Baze de date. Noțiuni introductive
3.1.1. Componentele unui sistem de gestiune a bazelor de date
3.1.2. Arhitectura internă a sistemelor de baze de date
3.1.3. Limbaje și interfețe ale sistemelor de gestiune a bazelor de date
3.1.4. Avantajele oferite de sistemele de gestiune a bazelor de date
3.1.5. Clasificarea sistemelor de gestiune a bazelor de date
3.2. Tehnologii utilizate în proiectarea și design-ul site-urilor Web
3.2.1. Tehnologii client
3.2.1.1. HTML
3.2.1.2. CSS
3.2.1.3. JavaScript
3.2.1.4. jQuery
3.2.2. Tehnologii server
3.2.2.1. XML
3.3. Pagini web dinamice
3.3.1. Pagini dinamice vs. Pagini statice
3.3.2. Pagini dinamice pe partea client
3.3.3. Pagini dinamice generate pe partea server
3.4. .NET
3.4.1. Privire de ansamblu asupra tehnologiei
3.4.1. Limbajul C#
3.4.1.1. AvantajeleC#
3.5. Programarea web utilizând ASP.NET
3.5.1. Scurt istoric
3.5.2. Introducere în ASP .NET
3.5.3. Structura unei pagini ASP.NET
3.5.4. Controale Server
3.5.5. Păstrarea informațiilor în aplicațiile web
3.5.5.1. Păstrarea stării controalelor
3.5.5.2. Păstrarea informațiilor
3.5.6. Validarea datelor
3.5.6.1. Proprietăți comune
3.5.6.2. Validatoare
3.5.7. Securitatea în ASP.NET
3.5.7.1. Windows Authentication
3.5.7.2. Forms-Based Authentication
3.5.7.3. Securizarea unei aplicații web
3.5.8. Accesul la o baza de date într-o pagină web
3.5.9. Avantajele utilizării ASP.NET
4. Descrierea aplicației
4.1. Proiectarea aplicației
4.2. Proiectarea bazei de date
4.3 Implementarea aplicatiei
4.3.1 Pagina principala. Inregistrarea si autentificarea
4.3.2 Administrare Module Aplicatie
4.3.3 Administrare Drepturi Aplicatie
4.3.4 Administrare Drepturi Utilizatori
4.3.5 Administrare tipuri utilizatori
4.3.6 Administrare utilizatori
4.3.7. Administrare Tari, Judete, Orase
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
Bibliografie
Introducere
Lucrarea de față are ca și scop realizarea unui site web pentru o agenție de turism.
Aplicația este realizată în ASP.NET, o platformă inovatoare și modernă ce permite scrierea unor aplicații complexe, oferind fiabilitate și securitate.
Pe parcursul lucrării vom detalia pașii ce au fost urmați, de la motivarea alegerii temei, până la implementarea propriu-zisă.
În Capitolul I este prezentat aspectul comercial al aplicației: ce anume înseamnă comerț electronic, ce presupune activitatea de turism în spațiul virtual și, mai ales, care este importanța economică a unei asemenea aplicații.
În Capitolele II și III descriu pe scurt tehnologiile ce stau la baza proiectării aplicației web. Acest capitol poate avea atât rolul de a familiariza cititorul cu principalele tehnologii internet, cât și ca o sursă rapidă de documentație , prin exemplele oferite.
În final, Capitolul IV prezintă realizarea efectivă a aplicației, pornind de la etapa de proiectare și continuând cu implementarea și utilizarea ei. Sunt descrise principalele avantaje oferite de aplicație, precum și modul în care acestea pot fi utilizate.
Afaceri electronice
Caracteristicile afacerilor electronice
Pentru ca o afacere să supraviețuiască, este necesar ca potențialii ei clienți să știe de existența acesteia. World Wide Web oferă o oportunitate unică, aceea de a permite lumii să afle despre existența companiei, despre produsele și serviciile pe care ea le oferă și dispune de mijloacele care permit clienților să comande produsele și serviciile pe care firma le oferă, toate acestea utilizând Internetul.
Afacerile derulate pe Web sunt asemănătoare afacerilor realizate într-o manieră tradițională. Prezența companiei pe Web, prin intermediul unui site are câteva avantaje clare comparativ cu deschiderea unui sediu fizic al firmei. Avantajele pot fi împărțite, în funcție de beneficiarul lor direct, în avantaje directe ale firmei, avantaje ale beneficiarilor produselor și serviciilor firmei și avantaje ale societății.
Principalele avantaje aduse activității firmelor de care diferitele tipuri de afaceri electronice sunt:
– Facilitează extinderea activității, asigurând acces rapid la piețele locale și naționale, dar mai important și la piețele internaționale;
– Scăderea costurilor cu desfășurarea activității firmei, în special acelea cu realizarea, procesarea, distribuirea, păstrarea și regăsirea informațiilor păstrate pe hârtie; în cazul afacerilor electronice sunt folosite soluții informatice, automatizate, pentru aceste activități;
– Creează posibilitatea modelării facile a produselor și serviciilor conform nevoilor cumpărătorilor;
– Costuri de comunicație, transport sunt mult reduse.
Avantajele consumatorilor sunt numeroase, dintre care sunt enumerate:
– Oferă posibilitatea consumatorilor să cumpere sau să efectueze tranzacții 24 h/zi, în tot timpul anului din aproape orice locație;
– Acordă consumatorilor mai multe posibilități de alegere;
– Cumpărătorii pot să aleagă mai ușor cel mai mic preț pentru un produs sau serviciu;
– Permite livrarea rapidă a produselor și/sau serviciilor (în unele cazuri);
– Consumatorii pot să primească informație relevantă într-un timp scurt: în câteva secunde și nu în zile sau chiar săptămâni cum este cazul în multe afaceri tradiționale;
– Face posibilă participarea la licitații virtuale;
– Facilitează competiția, ceea ce duce la scăderea prețurilor produselor și serviciilor;
– Permite consumatorilor să interacționeze cu alți cumpărători prin intermediul comunităților electronice, să schime impresii și să-și compare experiențele.
De asemenea, afacerile electronice aduc o serie de avantaje societății, printre care:
– Oferă posibilitatea mai multor persoane să lucreze de acasă și să cumpere de acasă, ceea ce poate duce, în timp, la scăderea traficului auto și la scăderea poluării;
– Anumite mărfuri pot fi vândute la prețuri mai mici, acest lucru avantajându-i pe cei cu venituri mai mici, contribuind astfel la protecția socială;
– Afacerile electronice contribuie la creșterea eficienței și/sau îmbunătățirea calității produselor și serviciilor.
Pe lângă aceste avantaje, afacerile electronice au și o serie de limite. Cele mai importante neajunsuri ale afacerilor electronice sunt:
– Lipsa unor standarde universal acceptate pentru calitate, securitate și încredere în afacerile electronice;
– Instrumentele de dezvoltare software pentru derularea afacerilor electronice sunt încă în plină evoluție;
– Existe unele dificultăți în ceea ce privește integrarea aplicațiilor software de comerț electronic cu unele aplicații existente și bazele de date;
– Accesul la Internet este încă scump și/sau inoportun pentru o mare parte a populației.
În ultimii ani s-a constatat o creștere a afacerilor electronice și în țara noastră și tendința este de creștere continuă.
1.2. Categorii de afaceri electronice
În ceea ce privește afacerile electronice există o multitudine de categorii în care aceste sunt împărțite. Strâns legate de afacerile electronice este comerțule electronic.
Comerțul electronic (e-commerce) este procesul de cumpărare, vânzare sau schimb de produse, servicii sau informații prin intermediul rețelelor de calculatoare.
Afacerile electronice (e-business) nu se limitează la cumpărarea și vânzarea de bunuri sau servicii, ci includ și facilități pentru servirea cumpărătorilor, colaborarea cu partenerii de afaceri sau conducerea unei organizații prin mijloace electronice.
Serviciile electronice (e-services) reprezintă o serie de soluții complete pentru afaceri, formate dintr-o componentă hardware, o parte software și consultanță pentru afaceri.
Există posibilitatea ca numai anumite activități din cele ale afacerilor tradiționale să fie automatizate. Astfel afacerile electronice pot fi parțiale sau totale și ele presupun desfășurarea a cel puțin uneia din următoarele activități:
– Prezența on-line ( existența unui site de prezentare);
– Comanda on-line;
– Plata on-line;
– Transmiterea on-line a produsului sau serviciului.
Strâns legată de comerțul electronic este piața virtuală, aceasta reprezentând locul unde se întâlnesc cumpărătorii și vânzătorii pentru schimbul de produse, servicii sau informații contra bani.
Activitățile din categoria afacerilor electronice sunt acele părți ale afacerilor tradiționale care pot fi automatizate și mai mult, se pot desfășura pe Internet.
1.3. Etapele realizării unei afaceri electronice
Etapele realizării afacerilor electronice sunt similare celor realizării afacerilor tradiționale și anume:
Analiza afacerii are ca principale etape:
– Identificarea tipului de afacere și încadrarea ei într-una din categoriile de afaceri electronice prezentate;
– Stabilirea obiectivelor și performanțelor afacerii;
– Stabilirea canalului/canalelor ce vor fi utilizate pentru vânzarea și distribuția produselor/serviciilor;
– Alegerea unui furnizor de servicii internet (ISP), care va oferi și servicii de găzduire a site-ului;
– Stabilirea imaginii și conținutului site-ului; acesta trebuie să fie scalabil și să aibă implementate elemente de securitate;
– Alegerea strategiei de promovare a produselor și a site-ului;
– Alegerea mijloacelor și a modalităților ce vor fi folosite pentru plata produselor/ serviciilor: cecuri, cărți de credit etc.
Cele mai importante mijloace pentru argumentarea oportunității variantei electronice a afacerii sunt:
– Explicarea avantajelor afacerilor electronice pentru beneficiarii sau clienții firmei;
– Explicarea implicațiilor tehnologiei folosite pentru desfășurarea afacerii electronice, în desfășurarea afacerii;
– Realizarea unui proiect pilot;
– Estimarea costurilor cu instruirea personalului, întreținerea afacerii și suportul tehnic necesar desfășurării afacerii;
– Calculul productivității afacerii și compararea acesteia cu productivitatea afacerii în varianta tradițională a acesteia.
Este necesară identificarea riscurilor care pot să apară în realizarea unei afaceri electronice. Există o serie de riscuri suplimentare ale afacerilor electronice față de riscurile afacerilor tradiționale care trebuie avute în vedere și anume:
– Dacă în cazul afacerilor tradiționale competiția era locală sau națională, acest lucru depinzând de aria de întindere a afacerii, în cazul afacerilor electronice competiția este mondială deoarece localizarea companiei nu mai are, în majoritatea cazurilor, nici o importanță;
– Un factor cheie în desfășurarea afacerilor electronice îl reprezintă securizarea site-ului; “spargerea” site-ului ducând la imposibilitateaa cumpărarea și vânzarea de bunuri sau servicii, ci includ și facilități pentru servirea cumpărătorilor, colaborarea cu partenerii de afaceri sau conducerea unei organizații prin mijloace electronice.
Serviciile electronice (e-services) reprezintă o serie de soluții complete pentru afaceri, formate dintr-o componentă hardware, o parte software și consultanță pentru afaceri.
Există posibilitatea ca numai anumite activități din cele ale afacerilor tradiționale să fie automatizate. Astfel afacerile electronice pot fi parțiale sau totale și ele presupun desfășurarea a cel puțin uneia din următoarele activități:
– Prezența on-line ( existența unui site de prezentare);
– Comanda on-line;
– Plata on-line;
– Transmiterea on-line a produsului sau serviciului.
Strâns legată de comerțul electronic este piața virtuală, aceasta reprezentând locul unde se întâlnesc cumpărătorii și vânzătorii pentru schimbul de produse, servicii sau informații contra bani.
Activitățile din categoria afacerilor electronice sunt acele părți ale afacerilor tradiționale care pot fi automatizate și mai mult, se pot desfășura pe Internet.
1.3. Etapele realizării unei afaceri electronice
Etapele realizării afacerilor electronice sunt similare celor realizării afacerilor tradiționale și anume:
Analiza afacerii are ca principale etape:
– Identificarea tipului de afacere și încadrarea ei într-una din categoriile de afaceri electronice prezentate;
– Stabilirea obiectivelor și performanțelor afacerii;
– Stabilirea canalului/canalelor ce vor fi utilizate pentru vânzarea și distribuția produselor/serviciilor;
– Alegerea unui furnizor de servicii internet (ISP), care va oferi și servicii de găzduire a site-ului;
– Stabilirea imaginii și conținutului site-ului; acesta trebuie să fie scalabil și să aibă implementate elemente de securitate;
– Alegerea strategiei de promovare a produselor și a site-ului;
– Alegerea mijloacelor și a modalităților ce vor fi folosite pentru plata produselor/ serviciilor: cecuri, cărți de credit etc.
Cele mai importante mijloace pentru argumentarea oportunității variantei electronice a afacerii sunt:
– Explicarea avantajelor afacerilor electronice pentru beneficiarii sau clienții firmei;
– Explicarea implicațiilor tehnologiei folosite pentru desfășurarea afacerii electronice, în desfășurarea afacerii;
– Realizarea unui proiect pilot;
– Estimarea costurilor cu instruirea personalului, întreținerea afacerii și suportul tehnic necesar desfășurării afacerii;
– Calculul productivității afacerii și compararea acesteia cu productivitatea afacerii în varianta tradițională a acesteia.
Este necesară identificarea riscurilor care pot să apară în realizarea unei afaceri electronice. Există o serie de riscuri suplimentare ale afacerilor electronice față de riscurile afacerilor tradiționale care trebuie avute în vedere și anume:
– Dacă în cazul afacerilor tradiționale competiția era locală sau națională, acest lucru depinzând de aria de întindere a afacerii, în cazul afacerilor electronice competiția este mondială deoarece localizarea companiei nu mai are, în majoritatea cazurilor, nici o importanță;
– Un factor cheie în desfășurarea afacerilor electronice îl reprezintă securizarea site-ului; “spargerea” site-ului ducând la imposibilitatea desfășurării afacerii;
– Viabilitatea – există anumite tipuri de activități/ domenii pentru care nu este oportună construirea unei afaceri electronice;
Există câteva primejdii care ar putea pune afacerea în pericol și anume:
– Pierderea încrederii clienților în situația în care afacerea ar avea un punct vulnerabil sau dacă aceștia nu ar constata că produsele sau serviciile nu corespund descrierii acestora;
– Fluxul virușilor este o primejdie deosebită pentru site și aceștia pot pune în pericol afacerea, dacă site-ul nu este securizat suficient;
– Posibilitatea fraudei – există o serie de cazuri în care diferite persoane au folosit informații însușite fraudulos sau au intrat pe site-uri prin punctele sale vulnerabile și au beneficiat de produse/servicii prin fraudă.
Există mai multe tehnici care pot fi folosite pentru atragerea vizitatorilor site-ului:
– Oferirea de informații gratuite sub formă de ghiduri, răspunsuri la întrebările vizitatorilor;
– Personalizarea conținutului site-ului din punctul de vedere al informațiilor și a prezentării, conform opțiunii utilizatorilor;
– Suport on-line/off-line pentru derularea afacerii electronice;
– Anticiparea dorințelor clienților;
– Traducerea informațiilor în limba maternă; exemplu: google.com versus google.ro;
– Realizarea unei interfețe atractive.
Realizarea site-ului presupune separarea datelor (conținutului) de forma de prezentare (de formă). Realizarea site-ului constă în parcurgerea unei serii de etape, pentru fiecare etapă putându-se folosi una sau mai multe, dintr-o serie de tehnologii de programare.Etapele și tehnologiile corespunzătoare sunt prezentate în tabelul de mai jos:
Promovarea afacerii electronice reprezintă următorul pas în derularea unei afaceri electronice. Etapele promovării unei afaceri electronice sunt: publicarea site-ului și anunțarea apariției pe Web.
Pentru publicarea site-ului este necesară alegerea furnizorului pentru găzduire (web hosting). Principalele elemente de care trebuie să se țină cont la alegerea furnizorului sunt:
– costul lunar al serviciului (există furnizori care oferă 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 informațiilor, elementele de securitate pe care le pune la dispoziție sistemul;
– lărgimea de bandă disponibilă utilizatorilor pentru accesarea site-ului.
De asemenea trebuie ales un nume de domeniu și achiziționarea acestuia. Unele firme includ gratuit această opțiune în pachetele de servicii. Domeniile pot fi achiziționate direct de la organizația existentă în fiecare țară, organizație care gestionează numele de domenii.
Anunțarea apariției pe Web este necesară în promovarea site-ului firmei. Principalele soluții ce pot fi folosite pentru promovarea site-ului sunt:
– În toate cataloagele, publicațiile și broșurile, practic în toate locurile în care apare numele companiei trebuie să apară și adresa site-ului;
– Înscrierea site-ului în cataloagele portalurilor românești și străine;
– Înregistrarea site-ului la motoarele de căutare și optimizarea conținutului său pentru indexarea adecvată de motoarele de căutare;
– Promovarea site-ului pe forumuri și în grupuri de discuții;
– Participarea la clasamentele site-urilor care fac topuri.
Administrarea afacerii presupune utilizarea unor sisteme avansate de gestiune a informațiilor. Există sisteme pentru gestiunea cunoștințelor, a relațiilor cu clienții, pentru colaborare, pentru managementul imaginii companiei etc. Fiecare sistem oferă posibilitatea de introducere de informații în bazele de date asociate, de prelucrare, de regăsire a informațiilor și de obținere de rapoarte privind diverse situații. Managementul imaginii companiei presupune următoarele activități:
– Construirea profilului utilizatorilor (data-mining);
– Analiza fișierelor cu informații despre utilizatorii care au accesat site-ul;
Stabilirea popularității site-ului prin analiza următoarelor elemente:
numărul de accesări, într-o perioadă de timp;
viteza de încărcare a datelor;
timpul de vizitare al site-ului;
numărul de bannere vizualizate.
Pentru realizarea unei afaceri electronice sunt necesare o serie de investiții, care vor fi amortizate prin derularea afacerii, cu condiția existenței unei analize obiective a acesteia și a unui management de calitate.
1.4. Platforme software pentru afaceri electronice
Datorită faptului că domeniul afacerilor electronice este unul în dezvoltare, multe companii și-au concentrat eforturile în vederea realizării de soluții complete pentru afacerile electronice.
Când se dorește realizarea unui site de comerț electronic se poate construi site-ul folosind tehnologiile tradiționale sau se poate achiziționa o platformă software pentru dezvoltarea afacerilor electronice, soluții ce permit, în general, generarea automată a unui sistem și adaptarea sa conform particularităților afacerii, dorințelor beneficiarului și complexității dorite.
1.5. Turismul ca activitate economică
Originea lingvistică a termenului „turism” este strâns legată de semnificația cuvintelor latine „tornare” (a se întoarce) și „tornus” (mișcare circulară) și desemnează o călătorie (deplasare circulară cu întoarcerea în punctul de plecare).
Aceeași semnificație, de revenire în punctul inițial din care s-a pornit, cu alte cuvinte de circuit, se regasește în limbile moderne europene: „tourisme” la francezi, „tourismus” la nemți, „tourism” la englezi, „tourismo” la italieni, „turizm” la ruși și „turism” la români.
Pentru prima oară, termenul de turist a fost folosit în anul 1800, de către Samuel Pegge, într-o lucrare intitulată „Anecdote ale limbii engleze”, prin formularea „A traveller is now -a- days called Tourist” respectiv, un călător, astăzi este numit turist.
Realizarea activității turistice presupune prezența altor elemente cu rol hotărâtor în desăvârșirea actului turistic și care servesc argumentației de a înscrie turismul în sectorul terțiar, atât în mod direct, prin activitatea serviciilor de cazare, alimentație publică, transport etc., cât și în mod indirect, prin intermediul aportului specific al altor ramuri ale sectorului terțiar la activitatea turistică (agricultură, construcții, industrie alimentară etc.).
Cei mai mulți autori consideră produsul turistic drept un rezultat al –“… asocierilor, interdependențelor dintre resurse (patrimoniu) și servicii”, iar …”resursele vor lua forma diferitelor produse turistice numai prin intermediul prestărilor de servicii specifice”.
Deci, determinarea și individualizarea produselor turistice se realizează pornind de la calitatea activității de prestații, iar serviciile constituie, dintr-un anumit punct de vedere, componenta “… dominantă sau determinantă a ofertei turistice”.
Serviciul turistic constituie “… un ansamblu de activități ce au ca obiect satisfacerea nevoilor turistului în perioada în care se deplasează și în legătură cu aceasta”. Deci, o parte a activităților care compun prestația turistică, vizează acoperirea unor necesități obișnuite, cotidiene (odihnă, hrană), iar altă parte determină specificitatea turismului și particularizează formele sale de manifestare.
Serviciul turistic trebuie să creeze și să asigure condițiile necesare refacerii capacității de muncă, în mod simultan cu petrecerea plăcuta și instructivă a timpului liber.
Derularea prestației turistice presupune, în marea majoritate a cazurilor, activități grupate în următoarele tipuri de servicii:
– servicii de cazare;
– servicii de alimentație;
– servicii de agrement-divertisment;
– servicii de transport;
– servicii suplimentare (complementare).
Consumul serviciilor turistice presupune derularea, într-o anumită ordine, a unor tipuri de activități, atât specifice, cât și nespecifice turismului, în funcție de tipul prestației, momentul și locul prestației, forma de turism etc..
În raport cu natura prestației și motivația cererii turistice, se întâlnesc următoarele tipuri de servicii:
– servicii turistice specifice, a căror existență și complexitate sunt determinate de esența fenomenului turistic ca atare.
La rândul lor, pot fi grupate astfel:
servicii turistice de organizare și pregatire a consumului turistic (organizarea călătoriilor, consultanță acordată turiștilor, promovare, rezervarea serviciilor etc.);
servicii de bază, referitoare la activități care reprezintă motivația de bază a călătoriei. În această categorie sunt incluse următoarele tipuri de servicii:
Serviciul de cazare vizează, prin conținutul său, crearea condițiilor și a confortului necesar adăpostirii și odihnei călătorului și reprezintă produsul a ceea ce se numește „industrie hotelieră”, respectiv acel sector care, conform accepțiunii actuale, înglobează ansamblul activităților desfășurate în spațiul de cazare.
Fiind alcătuit, la rândul sau, dintr-un grup de prestații oferite turistului pe timpul sejurului, în unitățile de cazare, serviciul de cazare se prezintă ca o activitate complexă.
Activitatea turistică și industria hotelieră se află în legături strânse de interdependență. Serviciul hotelier, pe lângă cazarea propriu-zisă, este completat de o serie de prestații suplimentare (alimentație, activități de informare, comerciale etc.), între care există relații de interferență și care sunt dezvoltate în funcție de specificul fiecărei unități hoteliere.
Cazarea constituie, însă, principala funcție îndeplinită de unitatea hotelieră, obiectivul său principal fiind asigurarea condițiilor de odihnă și igienă ale turistului, prin intermediul unui echipament corespunzător.
– Serviciul de alimentație determină, la rândul său, calitatea prestației turistice în ansamblul ei, influențează atât conținutul, cât și atractivitatea ofertei turistice și are implicații directe asupra modului de orientare a fluxurilor turistice.
Constituindu-se într-o componentă de importanță majoră a ofertei turistice, serviciul de alimentație publică este supus unui proces continuu de perfecționare și modernizare (de
exemplu, din punct de vedere al modernizării structurii rețelei, se remarcă tendința de creare a unor unități cu funcții complexe, precum și a unor noi tipuri de unități, mai bine adaptate specificului unor segmente de clienți) și, în același timp, de diversificare, prin oferirea unor prestații cu caracter complementar.
– Serviciul de agrement-divertisment cuprinde acele activități care, prin mijloace specifice, contribuie la satisfacerea nevoilor fizice și psihice ale turistului, prin asigurarea cadrului necesar petrecerii plăcute și instructive a timpului liber.
Pe lângă faptul că serviciul de agrement necesită o bază tehnico-materială adecvată motivației turistice și dotarea cu un personal cu calificare corespunzătoare, contribuind astfel în mod direct la dezvoltarea economică a zonei sau stațiunii turistice. Rolul său este cu atât mai important cu cât, printr-un mod de organizare modern, în care turistul devine participant activ la divertismentul efectiv, contribuie la orientarea fluxurilor turistice și la creșterea eficienței activității turistice.
– Serviciul de transport turistic are un rol determinant în creșterea calității prestației turistice, deoarece, prin intermediul său, este asigurat accesul turiștilor în zonele de interes turistic, întâlnirea cererii cu oferta turistică și, prin aceasta, transformarea lor din stare potențială, într-una efectivă.
Deoarece timpul total de vacanță al unui turist poate fi considerat, dintr-un anumit punct de vedere, că este compus din două elemente și anume, timp de transport și timp de sejur, rezultă necesitatea asigurării unui transport rapid, care să permită reducerea timpului de deplasare, atât între punctele-cheie ale itinerariilor turistice, cât și la nivelul unei stațiuni sau localități.
– Servicii turistice suplimentare sau complementare în rândul cărora este cuprinsă o serie de activități care au drept scop asigurarea unei odihne active, unei recreeri a turiștilor, activități care nu se substituie, însă, serviciilor de agrement.
Caracterizate printr-o mare varietate, unele dintre ele pot fi anticipate de către turiști, intrând în costul inițial al programului turistic. Altele vor fi cunoscute abia la destinație, iar solicitarea lor rămâne la alegerea turiștilor.
Cele mai importante servicii suplimentare sunt considerate a fi următoarele:
– servicii de informare a clientelei turistice;
– servicii de intermediere (închirieri, rezervări etc.);
– servicii și activități turistice cu caracter special (organizarea de simpozioane, festivaluri, expoziții etc.);
– servicii și activități turistice cu caracter sportiv;
– servicii de tratament balneo-medicale;
– servicii diverse.
Dintre acestea, serviciile de cură și tratament balneo-medical pot fi considerate suplimentare în situațiile în care turiștii își completează sejurul într-o stațiune cu efectuarea unor tratamente (băi de nămol, cure de ape minerale etc.), în mod preventiv.
Deoarece, atât pe plan mondial, cât și pe plan național, se remarcă necesitatea creșterii rolului medicinei preventive, prin apelarea la remedii oferite de factorii terapeutici naturali, de sine stătători sau combinați cu mijloace terapeutice, se constată o preocupare susținută pentru punerea în valoare a factorilor naturali-curativi, pentru dezvoltarea bazei materiale și de tratament în localitățile care dispun de acești factori, pentru pregătirea unui personal calificat corespunzător.
Serviciile turistice nespecifice, sunt asigurate de către diferite unități prestatoare de servicii, de care turiștii beneficiază în anumite împrejurări: transport în comun, gospodărie comunală, reparații și întreținere, telecomunicații, servicii de igienă și înfrumusetare etc., care, în mod indirect, contribuie la satisfacerea nevoilor turiștilor.
2. Comunicații electronice și Internet
2.1. Rețele de calculatoare
O rețea de calculatoare reprezintă un ansamblu de calculatoare (sisteme de calcul) interconectate prin intermediul unor medii de comunicație (cablu coaxial, fibră optică, linie telefonică, unde radio) în scopul utilizării în comun de către un număr foarte mare de utilizatori – chiar la nivel mondial – a tuturor resurselor fizice (hardware), logice (software de bază și aplicații) și informaționale (baze de date) asociate calculatoarelor din rețea.
O rețea de calculatoare este compusă dintr-o parte hardware (servere, stații de lucru, cabluri, imprimante etc.) și o parte software (sistem de operare și aplicații). Prin astfel de rețele de calculatoare se poate asigura o integrare informatică a unui număr foarte mare de utilizatori la nivel local, regional și mondial. Astfel, în context rețea:
– un cabinet medical poate consulta o bază de date a OMS (Organizația Mondială a Sănătății) pentru a afla date despre medicamentele noi apărute;
– un cumpărător, utilizând un telefon și un modem conectat la calculator, poate telefona în diverse locații pentru a emite comenzile sale;
– datele pot fi transmise de un calculator la altul etc.
Mediul Internet este un ansamblu de rețele de calculatoare interconectate care împreună cu miile de calculatoare individuale (terminale, stații de lucru) și milioane de utilizatori, constituie comunitatea Internet care are la dispoziție un mediu informațional și de calcul cu foarte multe servicii informatice și resurse (baze de date diverse, biblioteci de programe, documentații etc.).
Mediul Internet constituie un ansamblu complex de arhitecturi, componente fizice și sisteme de operare, care tratează în mod egal atât minicalculatoarele sau rețelele de calculatoare, cât și PC-urile sau maiframe-urile. Facilitățile mediului au o importanță egală, iar componentele sale se comportă una față de alta fără nici o discriminare. Mediul pentru realizarea comunicațiilor electronice automate este reprezentat de rețelele de calculatoare.
Toate rețelele, inclusiv cele complexe, includ trei blocuri fundamentale:
– dispozitive care furnizează servicii rețelei;
– dispozitive care utilizează serviciile oferite de rețea;
– un set de reguli pentru comunicarea între aceste dispozitive.
Figura 2.1. Exemplu de rețea
O rețea este gestionată și funcționează sub controlul unui sistem de operare a rețelei (Network Operating System – NOS), care oferă cel puțin următoarele servicii:
– partajarea pachetelor de aplicații și a datelor;
– securitate;
– salvare/restaurare centralizată a datelor și aplicațiilor (backup/recovering);
– poștă electronică (E-mail);
– comunicarea cu stații aflate la distanță (remote), rețele locale și calculatoare mini/mainframe; prin acest serviciu, de exemplu, datele pot fi transferate între rețele, fișierele pot fi create la nivelul unui birou central și diseminate în fiecare locație a birourilor locale etc.
Sistemul de operare al rețelei poate fi Unix, Linux, MacOS, Novell NetWare, Windows 2003 Server etc.
Stațiile de lucru dintr-o rețea sunt conectate la un server. Orice rețea de calculatoare poate conține unul sau mai multe servere. Tehnologiile actuale au produs o varietate de dispozitive pentru a interconectarea rețelelor. Aceste dispozitive de interconectare includ:
– concentratoare (hub);
– rutere (router);
– repetoare (repeater);
– porți (gateway);
– punți (bridge).
Rețele de calculatoare se împart în mod convențional in trei categorii: LAN (Local Area Network), MAN (Metropolitan Area Network) și WAN (Wide Area Network).
Principalele tipuri de conexiuni de date sau, mai general, de realizare a schimbului de mesaje în rețea sunt rețele locale LAN și rețele extinse WAN, diferența tehnologică dintre ele constând în mod esențial în limitările de distanță impuse de metodele de conectare.
O rețea locală (LAN) leagă împreună calculatoarele personale (stații de lucru) astfel încât acestea să poată comunica între ele și să folosească în comun resurse cum ar fi imprimante, aplicații software, fișiere, directoare, baze de date etc. Rețelele locale LAN se află de regulă într-o singură clădire sau un grup de clădiri pe o suprafață care nu depășește câțiva kilometri pătrați.
Rețelele care se întind pe mai puțin de câțiva de câțiva kilometri pătrați se numesc rețele de metropolitane (MAN), putând acoperi până la o zonă de oraș sau o localitate mică.
Rețelele care se întind pe mai mult de câțiva kilometri pătrați se numesc rețele de mare suprafață (WAN), putând acoperi un oraș, o țară sau întregul glob.
Rețelele extinse WAN se prezintă sub formă de intranet (ca rețele extinse private) și Internet (cea mai mare rețea extinsă din lume − rețeaua mondială publică).
2.2. Comunicații în Internet
2.2.1. World Wide Web
Internet-ul reprezintă o mulțime globală de calculatoare interconectate, similar unei rețele locale, dar la o scară mult mai largă. Elementul primar al Internet-ului este World Wide Web (cunoscut sub numele de Web sau WWW). WWW este un suport pentru text, grafică, animație și sunet. Documentele destinate Web-ului sunt cunoscute sub numele de pagini Web.
Pentru a înțelege mai bine World Wide Web se pornește de la modul în care este organizată informația în mediile tipărite. Aceste medii reprezintă un model adecvat pentru Web și modul său de organizare.
Dacă se analizează caracteristicile fizice și de organizare ale unei cărți, se observă că aceasta este compusă din unități de informații: paginile. La rândul lor, paginile sunt organizate conceptual în capitole. Capitolele sunt legate împreună, dând astfel naștere cărții. Prin urmare, se poate aprecia că o carte este o colecție de pagini organizate într-un format care implică citirea ei într-o anumită ordine, de la prima pagină la ultima pagină. Totodată, modul ei de organizare permite sărirea anumitor pagini sau capitole, având astfel posibilitatea de a crea o strategie proprie de navigare prin informațiile existente.
Structura unei cărți este un exemplu de organizare liniară a informației. Ca și filmele, cele mai multe cărți sunt organizate în ideea că lectura se începe de la prima pagină și se termină la ultima pagină. Există însă și un mod mai evoluat de parcurgere a unei cărți, care oferă anumite avantaje pentru cititor. De exemplu, în loc să întoarcă pagi-na în mod fizic, s-ar putea atinge o zonă de la baza fiecărei pagini, o săgeată înainte pentru a trece la pagina următoare, o săgeată înapoi pentru pagina precedentă. De asemenea, atunci când privește cuprinsul cărții, cititorul poate atinge descrierea unui capitol pentru a trece direct la pagina unde începe acel capitol.
Un asemenea model se numește hipermediu sau hipertext, termen imaginat de specialiști ai științei calculatoarelor încă de la mijlocul secolului XX (în anul 1965), și utilizat de către Theodor H Nelson în cartea sa “Computer Lib/Dream Machines”, apărută în anul 1974.
Un avantaj imediat este că indexul de subiecte devine realmente util: prin capacitatea de a atinge un subiect de interes, un text explicativ sau o referință descriptivă, se poate utiliza aceeași carte ca material de referință, în plus față de manualul organizat liniar pe care îl oferă cartea. Este aceeași diferență dintre accesul direct oferit de un CD cu muzică și fluxul liniar al unei casete audio sau video.
Un alt avantaj al hipertextului vizează notele explicative de la subsolul paginilor. Textul de subsol nu mai trebuie înghesuit în partea de jos a paginii, deoarece cu ajutorul hipertextului se poate atinge asteriscul sau numărul notei de subsol din cadrul textului – moment în care se va deschide o casetă care afișează nota de subsol.
Se poate atinge o ilustrație pentru a obține o versiune la scară mai mare a acelei ilustrații, sau chiar pentru a converti ilustrația într-o secven-ță animată sau în spațiu 3D, în care se poate naviga și examina obiectul respectiv din diverse puncte convenabile.
Această descriere este similară paginilor Web. Acestea însă oferă și alte posibilități care fac lucrurile mult mai interesante: paginile de in-formații se pot regăsi pe calculatoare răspândite în lumea întreagă. Pagi-nile în sine pot fi documente foarte complexe, interesante și atractive.
Paginile Web sunt memorate pe discul unui server specializat și gestionate printr-un software special și sunt regăsite și afișate prin intermediul navigatoarelor Web (browsere). Navigatoarele Web (cum ar fi Internet Explorer, Opera sau Netscape Navigator) afișează paginile de Web prin interpretarea unor marcatori – definiți cu ajutorul unui limbaj special denumit HTML (HyperText Markup Language) – utilizați pentru a codifica pagina de Web cu informația de afișat. Marcatorii au diferite semnificații. De exemplu aceștia specifică modul în care vor fi afișate diversele părți ale paginii sau stabilesc legături între documente/fișiere. Tipic, o pagină de Web este legată de o diversitate de fișiere cum ar fi fișiere text, grafice sau multimedia. Mecanismul prin care sunt create căile de acces între documente este denumit hipertext (hypertext), prezentat anterior. Atunci când utilizatorul acționează prin clic de mouse asupra unei legături, cum ar fi o porțiune de text, un element grafic etc., navigatorul încarcă fișierul la care punctează această legătură și îl afișea-ză. Legăturile din cadrul textului sunt ușor de identificat deoarece majoritatea navigatoarelor, implicit, colorează diferit de restul textului aceste legături și le subliniază.
Un site Web este definit ca o colecție coerentă de informații prezentată sub forma unor pagini Web, fișiere multimedia, documente și de alte tipuri, între care există legături. Paginile Web și colecția de fișiere referite și sunt integrate printr-o pagină Web denumită pagină principală denumită în mod tipic index.html, default.html, sau home.html (extensia html poate apărea ca htm). Această pagină conține în mod uzual un cuprins sau un index care face referiri la celelalte pagini din site-ul Web. Într-un site bine proiectat toate celelalte pagini punctează către această pagină principală chiar dacă navigatoarele moderne au butoane pentru acest lucru.
Atunci când se realizează un site Web, aceste fișiere sunt păstrate, în mod uzual, într-un director sau o colecție de directoare în discul local și este referit cu numele de site local. Serverul Web este dedicat memorării, transmiterii și regăsirii paginilor de Web și a fișierelor legate de acestea.
Prin publicarea unui site local (upload), directorul său local, împreună cu conținutul său (fișierele site-ului și subdirectoarele din el), este transferat la serverul Web care conține software-ul prin care site-ul este transmis navigatoarelor Web ale calculatoarelor conectate la Internet. Odată publicat, site-ul se transformă din site local în site Web, iar interacțiunea utilizatorului cu el are loc similar modului descris în figura:
Figura 2.2. Comunicația dintre navigatorul Web și serverul Web
Deși cea mai mare parte a informațiilor din World Wide Web este stocată în pagini Web scrise folosind limbajul HTML, există un număr destul de mare de documente provenite din alte tipuri de servicii de publicare a informațiilor din Internet.
2.2.2. Adresarea calculatoarelor în Internet
În Internet, fiecare calculator are o adresă unică exprimată ca un număr pe 32 de biți. Aceste adrese sunt organizate în cinci clase de la A la E. Fiecare clasă care aparține uneia din clasele A, B sau C constă dintr-un identificator de rețea (netid) și un identificator de calculator gazdă (hostid). Clasa de adrese D este rezervată grupurilor de broadcast, iar clasa E este rezervată pentru utilizări ulterioare. În tabelul de mai jos sunt prezentate numărul maxim de rețele și numărul maxim de calculatoare din cadrul unei rețele pentru clasele A, B și C.
Adresele Internet sunt exprimate în notația zecimală cu puncte.
Elementul fundamental al comunicației bazate pe mesaje este reprezentat de realizarea distincției dintre două tipuri de roluri în care poate fi implicat un proces și anume acela de transmițător/expeditor și receptor/destinatar. Din momentul în care un mesaj a fost transmis și până în momentul în care a fost recepționat mesajul este în transmisie. Comunicația bazată pe mesaje poate fi de unul din tipurile:
– punct la punct (point to point) în care fiecare calculator este explicit identificat printr-o adresă unică;
– oricine la unul (any to one) în care un proces trebuie să fie ca-pabil să primească mesaje de la orice expeditor;
– un transmițător la mai mulți receptori;
– mai mulți transmițători la mai mulți receptori.
Pentru realizarea comunicației sunt utilizate canale de comuni-cație. Un canal este definit ca un mediu general de comunicație între o mulțime de expeditori și o mulțime de destinatari. Un canal de comunicație care acceptă multipli expeditori și multipli destinatari prevă-zut cu cozi de așteptare pentru mesaje este referit sub numele de căsuță poștală.
Canalele de comunicație care au un singur destinatar sunt referite cu numele de port (de exemplu, portul cu numărul 80 este asociat implicit serverlor Web). Canalul de comunicație în care este un singur expeditor și un singur destinatar se numește legătură și se referă în general la o conexiune fizică, de exemplu legătura telefonică dintre calculatorul local și furnizorul de servicii Internet prin dial-up. O conexiune este o legătură bidirecțională între două procese care conservă ordinea și sensul transmiterii mesajelor.
Utilizarea adreselor numerice ale stațiilor în vederea realizării comunicării ar fi extrem de dificilă pentru utilizatorii obișnuiți. În Internet aceștia accesează serverele și resursele utilizând nume, de cele mai multe ori chiar relevante. Aceste nume sunt asociate adresei numerice a stației și sunt gestionate și atribuite la cerere de către DNS (Domain Naming System).
Domeniile sunt împărțite în domenii generice (net, org, mil) și nume de țări (ro, at, ie). În tabelul de mai jos sunt prezentate câteva nume de domenii:
Internetul s-a confruntat cu o mare problemă deoarece nu dispunea de o autoritate sau organizație centrală, motiv pentru care colecții voluminoase de date au fost aranjate într-o manieră nesemnificativă. Atunci când Tim Berners Lee și echipa sa de la CERN (institut de cercetare din Elveția care a creat tehnologia de bază a World Wide Web) au început să creeze un mecanism comun pentru identificarea unică a informațiilor din spațiul de date, s-a înțeles necesitatea unei scheme care să conțină anumite părți și care să poată fi extinsă astfel încât să includă o varietate de servicii Internet. Rezultatul a fost URL (Uniform Resource Locator).
2.2.3. URL
Formatul unei locații din Internet este numită URL (Uniform Resource Locator – Descriptor Uniform de Resurse). Pentru o bună înțelegere a codului HTML, este de preferat cunoașterea locațiilor posibile de apelat din cadrul acestuia.
Într-o pagină Web, legăturile (links) sunt reprezentate de șiruri de text special formatate sau elemente de grafică care, atunci când sunt acționate (prin click de mouse, de exemplu), afișează mai mult text sau grafic. Aceste fișiere către care trimite o legătură pot fi reprezentate de alte pagini Web sau fișiere de diverse tipuri ca grafice, imagini, sunet, animație, formulare de culegere date, apleturi Java, film și orice alt tip necesar.
Structura completă a unui URL este următoarea:
protocol://nume-calculator-gazdă:port/cale-director/resursă
Protocolul sau serviciul este reprezentat de regulile care guvernează transferul datelor în rețea. În practică se utilizează următoarele protocoale:
– file –specifică un URL local;
– http – indică adresa Internet a unei pagini Web sau altă resursă;
– ftp – utilizat pentru adresarea în Internet a fișierelor prin intermediul protocolului de transfer de fișiere FTP.
– gopher – indică adresa URL a unui director Gopher; Gopher reprezintă un sistem utilizat pentru localizarea și transferul informațiilor de indexare a numelor fișierelor în Internet.
– telnet –permite conectarea în timp real la un alt calculator în Internet și utilizarea acestuia ca și cum ar fi un calculator local.
În sistemele Windows, în anumite situații, protocolului poate lipsi pentru anumite adrese, tipul acestuia fiind determinat din numele gazdei (www pentru http, ftp pentru ftp etc).
Numele calculatorului gazdă identifică în mod unic un calculator în cadrul rețelei. Numele poate reprezentat atât printr-o adresă IP cât și prin denumirea unui calculator local sau a unui calculator din Internet folosind specificațiile DNS.
Portul este reprezentat printr-un număr și specific fiecărei aplicații. Majoritatea aplicațiilor de rețea utilizează porturi pentru comunicare. Pe un calculator pot exista mai multe aplicații de rețea, fiecare aplicație utilizând un port distinct. O parte din porturile sunt standard și sunt asociate anumitor aplicații. În cazul în care nu se schimbă aceste porturi, la accesarea unor resurse prin intermediul URL-urilor acestea pot sa lipsească. În mod implicit portul pentru protocolul http este 80 și nu este necesară specificarea acestuia în URL.
Calea de directoare reprezintă locația relativă a fișierelor în cadrul serverului.
Numele resursei este reprezentată de numele fișierului referit. Acesta poate fi o pagină Web, un fișier multimedia, un document, un fișier executabil.
În cazul protocolului http dacă din URL lipsește numele fișierului, fișierul căutat va fi index.htm(l), default.htm(l) sau orice nume de fișier care a fost setat ca fiind fișier implicit ca pagină principală.
O limitare o constituie faptul că un URL nu poate conține spații și alte caractere speciale, astfel că orice spațiu sau caracter special se va converti printr-un cod asociat acestora precedat de simbolul „%”.
Alte URL-uri folosite alături de cele prezentate sunt cele de:
– e-mail, prin intermediul cărora se pot doar trimite mesaje de poștă electronică.
– știri Usenet – în care trebuie să se identifice un server de știri care să ofere acces.
Totuși, cele mai utilizate sunt URL-urile de tip HTTP, acesta fiind serviciul cel mai utilizat.
3. Tehnologii utilizate în implementarea aplicației
3.1. Baze de date. Noțiuni introductive
Sistemele de baze de date au devenit o componentă esențială a vieții de fiecare zi în societatea modernă. În cursul oricărei zile, fiecare dintre noi desfășurăm activități care implică interacțiunea cu o bază de date, ca de exemplu, depunerea sau extragerea unor sume de bani din bancă, rezervarea biletelor la tren sau avion, rezervarea locurilor la hotel, căutarea unei referințe bibiografice într-o bibliotecă computerizată (digital library), etc.
În sensul cel mai larg, o bază de date (database) este o colecție de date corelate din punct de vedere logic, care reflectă un anumit aspect al lumii reale și este destinată unui anumit grup de utilizatori. O bază de date poate fi creată și menținută manual (de exemplu, fișele de evidență a cărților dintr-o bibliotecă, așa cum erau folosite cu ani în urmă) sau computerizat, ceea ce reprezintă obiectul cursului de față.
Un sistem de baze de date (database system) este un sistem computerizat de menținere a evidenței unei anumite activități.
Sistemele de baze de date pot avea dimensiuni (număr de înregistrări) extrem de variate, de la câteva zeci de înregistrări (de exemplu, o agendă cu numere de telefon) sau poate ajunge la sute de milioane de înregistrări (de exemplu, într-un sistem de plată a taxelor și impozitelor).
Utilizatorul unei baze de date are posibilitatea de a efectua mai multe categorii de operații asupra datelor stocate:
– Introducerea de noi date (insert);
– Ștergerea unora din datele existente (delete);
– Modificarea datelor memorate (update);
– Interogarea bazei de date (query), pentru a regăsi anumite informații, selectate după un criteriu ales.
Definiția unei colecții de date ca fiind o bază de date se aplică, în sens mai restrâns, acelor colecții de date care permit toate operațiile de mai sus, inclusiv operația de interogare. Simple colecții de fișe (documente) dau fișiere de date, care conțin înregistrări cu o organizare simplă și care nu admit operații de interogare (selectarea unor informații după un criteriu ales), nu sunt considerate baze de date.
De exemplu, un editor de text (ca Microsoft Word) permite memorarea unor informații (texte), care pot fi create, modificate și consultate, dar nu se pot efectua operații de interogare. La fel, un instrument de calcul tabelar (cum este Microsoft Excel) oferă reprezentarea în diferite forme a unor date (tabele, grafice), dar nu permite operații 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 regulă, instalate pe calculatoare de uz general, de la calculatoare PC standard, până la stații multiprocesor puternice. Bineînțeles, performanțele generale de operare ale calculatorului (numărul și viteza procesoarelor, dimensiunea și viteza de operare a memoriei principale) influențează în mod corespunzător performanțele sistemului de baze de date. Dar, ceea ce interesează în mod deosebit în utilizarea unui calculator pentru un sistem de baze de date este volumul (capacitatea) memoriei secundare, utilizată pentru memorarea colecției de date persistente ale bazei de date. Dat fiind că într-un sistem de baze de date este necesar accesul rapid la oricare din înregistrările de date, pentru memorarea acestora se folosesc discurile magnetice (hard-discuri), benzile magnetice fiind utilizate numai pentru duplicarea (backup) datelor.
Software. Între baza de date (colecția de date memorate fizic în fișiere pe hard-discuri) și utilizatorii sistemului există 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, ștergere, modificare sau interogare) sunt gestionate (administrate) de către SGBD, care eliberează utilizatorii de necesitatea de a cunoaște organizarea particulară ale sistemului (driverele de disk, fișieree memorate, structura înregistrărilor de date). Cu alte cuvinte, SGBD permite utilizatorilor să aibă o viziune (vedere – view) la un nivel înalt a bazei de date, precum și acces la aceasta prin operații de nivel înalt, independent de detaliile de organizare hardware ale sistemului. Mai mult, SGBD-ul permite protecția datelor împotriva acceselor neautorizate, asigurând integritatea bazei de date.
SGBD-ul este cea mai importantă componentă software a unui sistem de baze de date, dar nu este singura componentă utilizată. Astfel, orice SGBD este dezvoltat și executat sub controlul sistemului de operare al calcuatorului respectiv. De asemenea, sunt folosite numeroase alte componente software pentru proiectarea, dezvoltarea sau exploatarea aplicațiilor de baze de date.
Utilizatori. Utilizatorii unui sistem de baze de date se pot împărți în trei categorii: programatorii de aplicații, utilizatorii finali și administratorul bazei de date.
Programatorii de aplicații sunt cei care scriu (dezvoltă) aplicațiile de baze de date, folosind limbaje de programare de nivel înalt (Cobol, PL/1, Fortran, C, C++, Java, Basic) cu extensii care permit încorporarea unor operații specifice de acces la baza de date. Aplicațiile rezultate pot fi aplicații cu execuție independentă (batch-processing) sau pot fi aplicații conversaționale (on-line) utilizate de utilizatorii finali ai sistemului pentru a accesa (într-un mod mai eficient și mai sigur) baza de date.
Utilizatorii finali sunt acei utilizatori care accesează baza de date prin intermediul unui program de aplicație care le conferă numai anumite posibilități de execuție și drepturi limitate de acces la date. Utilizatorii finali sunt persoane cu pregătire tehnică minimală, care efectuează un volum mare de operații asupra bazei de date, dar nu trebuie să cunoască mai mult decât posibilitățile oferite de programul pe care îl utilizează. De exemplu, utilizatorii finali ai unui sistem de rezervare a bietelor de avion sunt agenți de vânzări, care folosesc programul adevcat (scris de programatorii de aplicații), fără să fie necesar să cunoască întreaga structură a bazei de date.
Administratorul bazei de date este o persoană cu înaltă calificare tehnică care are ca sarcină menținerea funcționalității bazei de date prin stabilirea drepturilor de acces a diferitelor categorii de utilizatori, prin efectuarea operațiilor periodice de salvare a datelor (backup), prin monitorizarea performanțelor sistemului.
Date. Datele memorate într-o bază de date sunt date persisente, adică date care rămân memorate pe suport magnetic, independent de execuția programelor de aplicații. Datele persistente ale unei baze de date se introduc, se șterg sau se actualizează folosind date de intrare (provenind de a tastatură, sau recepționte prin transfer de mesaje). Datele de intrare sunt date nepersistente; ele sunt generate de utilizatori și sunt memorate (devenind date persistente) numai după ce au fost validate (acceptate) de către SGBD. Datele de ieșire ale unui sistem de baze de date sunt, de asemenea, date nepersistente; ele provin din operații de interogare a bazei de date și sunt puse a dispoziția utilizatorului (sub formă de afișări, rapoarte tipărite, etc).
Toate aceste componente asigură exploatarea unei baze de date după ce aceasta a fost proiectată și realizată. Activitatea de proiectare a unei baze de date implică alte categorii de personal cu înaltă calificare tehnică (analiști, programatori) sau administrativă (administrator de date). Proiectanții bazelor de date au responsabilitatea de a analiza realitatea reprezentată (modelată) de baza de date respectivă, de a identifica datele necesare să fie memorate, care să asigure menținerea evidenței activității dorite. De asemenea, în cursul proiectării unei baze de date, proiectanții selectează componentele hardware (sistemul de calcul), software (sistem de operare, SGBD, instrumente de dezvoltare și limbaje de programare), stabilesc structura conceptuală a bazei de date și mențin interacțiunea cu utilizatorii potențiali, pentru a asigura cerințele de prelucrare ale acestora. Aspecte privind proiectarea bazelor de date vor fi studiate în mai multe din capitolele următoare.
3.1.2. Arhitectura internă a sistemelor de baze de date
Arhitectura internă a unui sistem de baze de date propusă prin standardul ANSI/X3/SPARC (1975) conține trei nivele funcționale: nivelul intern, nivelul extern și nivelul conceptual.
Figura 3.2. Arhitectura internă a sistemelor de gestiune a bazelor de date
Nivelul intern este nivelul de reprezentare a datelor pe suportul fizic.
Nivelul extern reprezintă modul în care datele sunt percepute de utilizatori, existând câte o vedere (view) individuală a datelor pentru fiecare utilizator.
Nivelul conceptual corespunde unei reprezentări unice și abstracte a datelor, care asigură legătura între nivelul extern și cel intern. Nivelul conceptual este o vedere a întregului conținut a bazei de date prin intermediul schemei conceptuale a acesteia.
Toate aceste reprezentări sunt accesate prin intermediul SGBD-ului care asigură, de asemenea, cele două corespondențe (mappings): între nivelul extern și nivelul conceptual și între nivelul conceptual și nivelul intern.
3.1.3. Limbaje și interfețe ale sistemelor de gestiune a bazelor de date
Orice SGBD suportă două categorii de limbaje conceptuale: limbaje de descriere a datelor (LDD, Data Description Language – DDL) și limbaje de manipulare a datelor (LMD, Data Manipulation Language – DML). LDD permit definirea conceptuală a datelor, fără referință la modul de memorare fizică a datelor, asigurând în acest fel independența datelor în sistemele de baze de date. LMD asigură operațiile de introducere și prelucrare a datelor (actualizare, ștergere, interogare).
În momentul actual, limbajul cel mai frecvent utilizat în sistemele de baze de date relaționale este limbajul SQL (Structured Query Language), care include componentele LDD și LMD. Orice operație asupra unei baze de date relaționale se adresează SGBD-ului prin instrucțiuni SQL.
Instrucțiunile SQL pot fi trimise de către utilizatori în mod interactiv (de la o consolă) și sunt prelucrate direct de o componentă a SGBD sau pot fi înglobate (embeded SQL) în limbaje de programare de nivel înalt și transmise SGBD-ului în cursul execuției programelor respective. Programele de aplicații de baze de date mai prezintă, de regulă, interfețe grafice cu meniuri și comenzi prin intermediul cărora utilizatorii finali pot introduce, modifica sau selecta diferite date sau criterii de selecție.
De asemenea, multe SGBD-uri conțin o interfață specială 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
Față de metodele mai vechi de înregistrare a datelor privind diferite activități pe fișe (documente scrise) sau chiar în fișiere pe disc, sistemele de baze de date oferă avantaje considerabile, ceea ce explică extinsa utilizare a acestora. Câteva dintre avantajele oferite sunt:
– Compactitate ridicată față de volumul ocupat de documente scrise sau de fișiere necorelate;
– Viteză mare de regăsire și actualizare a informațiilor, folosind interogări ale bazei de date.
– Reducerea redundanței datelor memorate, prin partajarea datelor între mai mulți utilizatori și aplicații. În stocarea pe fișe sau în fișiere a datelor, fiecare aplicație conținea propriile seturi de date. În sistemele de baze de date, mai multe aplicații pot folosi date comune, memorate o singură dată. De exemplu, o aplicație de personal și o aplicație de rezultate la examene dintr-o universitate care exploatează o singură bază de date, pot folosi aceleași informații referitoare a structurarea facultăților și a secțiilor.
– Posibilitatea de introducere a standardelor privind modul de stocare a datelor, ceea ce permite interschimbul informațiilor între diferite organizații.
– Menținerea integrității datelor prin politica de securitate (drepturi de acces diferențiate în funcție de rolul utilizatorilor), prin gestionarea tranzacțiior și prin refacerea datelor în caz de funcționare defectuoasă a diferitelor componente hardware sau software.
– Independența datelor față de suportul hardware utilizat. Sistemele de gesiune a bazelor de date oferă o vedere (view) externă (logică) a datelor, care nu se modifică atunci când se schimbă suportul de memorare fizic, ceea ce asigură imunitatea structurii bazei de date și a aplicațiilor la modificări ale sistemului hardware utilizat.
3.1.5. Clasificarea sistemelor de gestiune a bazelor de date
Se pot lua în considerare mai multe criterii de clasificare ale sistemelor de baze de date.
Clasificare după modelul de date. Majoritatea sistemelor de baze de date actuale se bazează pe modelul de date relațional (relațional data model) sau pe modelul de date obiect (object data model). Dezvoltarea continuă a acestor modele a condus către o nouă categorie de baze de date, numite obiect-reaționale, care combină caracteristicile modelului relațional cu cele ale modelului obiect. De asemenea, mai sunt încă în funcțiune baze de date în modele mai vechi (modelul ierarhic sau modelul rețea). Modelele de date utilizate de SGBD-uri vor fi studiate în capitolul următor.
Clasificare după numărul de utilizatori. Majoritatea sistemelor de baze de date sunt sisteme multi-utilizator, adică permit accesul concurent (în același timp) a mai multor utilizatori la aceeași bază de date. Un număr redus de sistemelor de baze de date sunt de tip mono-utilizator, adică suportă accesul doar a unui singur utilizator (la un moment dat).
Clasificare după numărul de stații pe care este distribuită baza de date. Există două categorii de sisteme de baze de date: centralizate și distribuite.
Un sistem de baze de date este centralizat dacă datele sunt stocate pe o singură stație (calculator). Un sistem centralizat poate suporta unul sau mai mulți utilizatori, dar, în ambele situații, datele, ca și SGBD-ul, rezidă în întregime pe o singură stație.
Un sistem de baze de date distribuit poate avea datele, ca și SGDB-ul, distribuite în mai multe stații interconectate într-o rețea de comunicație.
Sistemele de baze de date pot fi reprezentate din punct de vedere a utilizării lor printr-o arhitectură de tip client-server.
Într-un sistem centralizat există un singur server, care este chiar SGBD-ul, care răspunde cererilor unui singur client (în sistemele mono-utilizator) sau mai multor clienți (în sistemele multi-utilizator), accesând baza de date respectivă. Clienții sunt programe de aplicații, oferite de furnizorul SGBD-ului sau dezvoltate de programatori (utilizatori). Aplicațiile client pot fi executate pe stații diferite, conectate printr-o rețea de comunicație cu stația pe care este executat serverul. Această arhitectură permite o prelucrare distribuită a datelor și, mai mult, o configurare a sistemului adaptată cerințelor de calcul particulare.
Astfel, serverul bazei de date poate fi un sistem puternic, echipat corespunzător (cu volum mare de memorie secundară), în timp ce fiecare client este o stație personală, cu putere de calcul adecvată aplicației 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 într-un mod asemănător din perspectiva structurării client-server.
Figura 3.4. Sistem de baze de date distribuită
Mai multe servere, conținând SGBD și date sunt distribuite pe stații conectate printr-o rețea de comunicație, în timp ce aplicațiile client rulează pe alte stații din rețea și solicită servicii de la servere. Numeroase probleme de partiționare a datelor memorate, de optimizare, de transparență a accesului sunt rezolvate de către SGDB distribuite.
3.2. Tehnologii utilizate în proiectarea și design-ul site-urilor Web
3.2.1. Tehnologii client
3.2.1.1. HTML
Hyper Text Markup Language (HTML) [1,7] este, cu siguranță, cea mai uzuală și cea mai importantă componentă în crearea paginilor web.
HTML este o formă de marcare orientată către prezentarea documentelor text pe o singură pagină. Se axează mai mult pe prezentarea informațiilor decât pe descrierea semanticii documentului. Acesta furnizează mijloacele prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadate și indicații de redare.
HTML este utilizat și în e-mail. Majoritatea aplicațiilor de e-mail folosesc un editor HTML, încorporat pentru compunerea e-mail-urilor și un motor de prezentare a e-mail-urilor de acest tip.
HTML este codul care stă la baza paginilor web. Paginile HTML sunt formate din etichete sau tag-uri și au extensia .html sau .htm.
HTML-ul este format din 2 componente:
Head – secțiunea unde sunt este declarat titlul paginii și detalii despre aceasta;
Body – care conține corpul paginii web.
Exemplu de HTML:
<HTML>
<HEAD>
<TITLE>Titlul paginii</TITLE>
// … și alte elemente de început
</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 atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul „<style>” și/sau atributul „style”. CSS se poate utiliza și pentru formatarea elementelor XHTML, XML și SVGL.
Sintaxa CSS poate fi folosită în 3 locații:
– a proprietate a etichetelor din documentul HTML – de tip în linie (inline);
– informația este introdusă în blocul head – de tip încorporat (embedded);
– comenzile se află în pagini separate – de tip extern.
Folosirea unui fișier extern cu comenzi CSS este foarte util deoarece poate fi folosit în mai multe situații, un fișier CSS poate fi folosit în nenumărate fișiere HTML, timpul necesar reintroducerii codului în fiecare pagină este eliminat.
Legătura paginilor HTML cu fișierele extene CSS se face prin introducerea următoarei linii:
<link rel="stylesheet" type="text/css" href="nume_fisier.css">[6]
Comenzile încorporate (embedded) sunt cele găzduite între perechea de etichete <head> și </head> din corpul programului.
Comenzile în linie (inline) sunt cele mai folosite, ele suprascriu orice altă comandă 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 bazându-se pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor funcționalități în paginile web, codul Javascript din aceste pagini fiind rulat de către browser.
Limbajul este binecunoscut pentru folosirea sa în construirea paginilor de internet, fiind folosit și pentru accesul la obiecte încadrate (embedded objects) în alte aplicații. A fost dezvoltat inițial de către Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, și denumit în final JavaScript.
Chiar dacă se aseamănă din punct de vedere al sintaxei și al numelui, în afara unori similarității, între JavaScript și limbajul Java nu există nici o legătură. Asemeni Java, JavaScript are o sintaxă asemănătoare cu cea a limbajului C, dar are mai multe lucruri în comun cu limbajul Self decât cu Java.
JavaScript se folosește pentru scriptarea paginilor HTML, adică introducerea unor scripturi, cum ar fi: verificarea datelor introduse de utilizator, efecte de animație etc.
O tehnică tot mai des folosită este AJAX (Asynchronous JavaScript and XML). Această tehnică constă în executarea de cereri HTTP în fundal, fără a reîncărca toată pagina web, și actualizarea numai anumitor porțiuni ale paginii prin manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfețe web cu timp de răspuns mic, întrucât operația (costisitoare ca timp) de încărcare a unei pagini HTML este în mare parte eliminată.
3.2.1.4. jQuery
jQuery este o librărie Javascript ca și mootools, prototype, script.aculo.us etc. Librăria permite prin multitudinea de funcții execuția, controlul, modificarea codului html, folosind cod javascript mai simplu și mai puțin. Ca dimensiune este relativ mică (aprox 20kb dacă este packed&zipped), ceea ce-l face potrivit pentru majoritatea situațiilor.
jQuery are o documentație bine elaborată, bine structurată și ușor de înțeles, așa încât codul să se poată introduce repede pe pagina de web. În plus, are o promovare foarte mare, unde se pot găsi tutoriale, cod gata făcut, plugin-uri, la tot pasul.
Plugin-urile sunt scripturi ce extind capabilitățile 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 să se descarce scriptul și să fie amplasat pe server pentru a evita anumite complicații sau alte neclarități. Linkurile de mai sus reprezintă calea către ultima versiune a librăriei.
Alte soluții mai sigure ar putea fi google, pe pagina http://code.google.com/p/jqueryjs/downloads/list , și se selectează 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 consorțiul W3C. Este un limbaj de programare, un standard de creare a documentelor specifice și o modalitate de transmitere a datelor între aplicații scrise atât în limbaje diferite, cât și pe platforme de dezvoltare diferite. Prin construcție, documentele XML sunt asemenea documentelor SGML.
A fost proiectat pentru :
– a fi simplu de utilizat pe Internet/Intranet;
– să suporte o mare varietate de aplicații;
– să fie compatibil cu SGML;
– să fie ușor de scris programe care vor procesa documente XML;
– numărul facilităților opționale din XML să fie reduse la minim, ideal, la zero;
– documentele XML trebuie să poată să fie citite ușor de către utilizatori;
– proiectarea XML trebuie să fie pregatită rapid;
– designul XML trebuie să fie formal și concis;
– documentele XML trebuie să fie ușor de creat.
XML este un metalimbaj utilizat și proiectat pentru transferului de date între aplicații pe Internet, descriere structură date.
XML oferă numeroase avantaje, cum ar fi: extensibilitatea (se pot defini noi indicatori), validitatea (verificare corectitudinii datelor), posibilitatea de a reprezenta datele într-un mod independent de aplicație, este simplu și accesibil (sunt fișiere text create pentru a structura, a stoca și a transporta informația), poate fi editat, modificat foarte ușor.
XML-ul [3,6,7] poate fi folosit în:
– structurarea datelor în baze de date;
– structurarea documentelor;
– grafică vectorială (VML, sau Vector Markup Language);
– prezentări multimedia (SMIL – Synchronized Multimedia Integration Language, HTML + TIME, sau HTML Timed Interactive Multimedia Extensions);
– comunicarea deschisă între aplicații, prin Web cu ajutorul mesajelor bazate pe XML (SOAP, sau Simple Object Access Protocol);
– schimbul de informații financiare (OFX, sau Open Financial Exchange);
– tranzacții 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);
– tranzacții imobiliare (RETS, sau Real Estate Transaction Standard).S
Regulile XML sunt simple, multe fiind asemănătoare cu regulile HTML. Acestea facilitează atât crearea instrumentelor de analiză a documentelor cât și lucrul efectiv cu XML. Ele pot fi clasificate în două categorii: reguli de sintaxă XML și 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 când se dorește modificarea dinamică, a conținutului paginilor Web. Paginile Web realizate în HTML au dezavantajul că sunt statice, conținutul lor neputând fi modificat odată ce au fost încărcate pe un server decât aducându-le înapoi pentru a fi editate. Acest lucru este o problemă serioasă având în vedere că operația este mare consumatoare de timp. În plus, lucrul cu baze de date nu este posibil în cazul paginilor statice.
Soluția care se adoptă în astfel de situații este plasarea informațiilor într-o bază de date și accesarea lor ori de câte ori se cere acest lucru de cineva. Mai exact în loc să se creeze 3-4 pagini Web în HTML care să fie modificate ori de câte ori apare o schimbare, se va crea o bază de date și câteva scripturi pe partea de server prin care vor construi dinamic, paginile HTML care vor fi afișate. Schimbările se vor face doar la nivelul bazei de date, ceea ce e mult mai simplu.
Paginile Web se clasifică, în funcție de natura conținutului, în pagini statice și pagini dinamice.
Principalele caracteristici ale paginilor web statice sunt:
– conțin doar elemente HTML;
– codul sursă vizualizat în navigator este identic cu cel al fișierului stocat pe disc;
– nu oferă interactivitate.
Paginile web dinamice se caracterizează prin următoarele:
– conținutul lor este creat dinamic și poate diferi la accesări diferite; de exemplu la același URL conținutul paginii poate varia în funcție de anumiți parametri cum ar fi locația geografică a utilizatorului, ora, paginile vizitate anterior, profilul utilizatorului;
– oferă interactivitate;
– posibilități de interacțiune.
În funcție de locul în care este evidențiat caracterul dinamic al paginilor există pagini dinamice pe parte de client și pagini dinamice pe partea de server.
3.3.2. Pagini dinamice pe partea client
Există mai multe tehnologii care permit realizarea de pagini dinamice pe partea de client. Dintre acestea se enumeră:
– 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 secvențe de program incluse în pagina HTML care se execută de către navigator. Secvențele de program sunt incluse prin marcatorul <SCRIPT> sau în proprietățile anumitor componente HTML ca răspuns la diferite evenimente.
Limbajele utilizate pentru a realiza scripturi pe partea de client sunt JavaScript, Jscript și VBScript.
Secvențele de program scrise folosind aceste scripturi nu oferă acces la resursele sistemului local (fișiere, rețea).
Scripturile pe partea de client sunt utilizate pentru asigurarea interactivității (meniuri), pentru validarea formularelor, pentru a crea diferite efecte, pentru efectuarea de calcule, diverse elemente de animație etc.
DHTML (Dynamic HTML) este o tehnologie dezvoltată de Microsoft care combină HTML, foi de stiluri (CSS) și script-uri pentru a realiza pagini Web dinamice sau interactive. Permite utilizatorilor să interacționeze cu pagina fără a retrimite o cerere la serverul Web.
Applet-uri Java reprezintă aplicații de dimensiune redusă, scrise în limbajul Java. Codul binar al aplicației este descărcat pe mașina client de pe server și executat local, în mașina virtuală Java (JVM). Aproape toate calculatoarele permit execuția applet-urilor, însă pentru funcționarea acestora este necesară instalarea unei mașini virtuale Java.
În 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 fișiere și la rețea, astfel riscul ca aceste aplicații să conțină cod malițios sunt reduse.
Controalele ActiveX sunt componente binare incluse în paginile Web pentru a oferi interactivitate. Sunt asemănătoare applet-urilor, însă spre deosebire de acestea rulează pe platforma Windows și au fost dezvoltate în special pentru Internet Explorer.
Controalele ActiveX sunt incluse în cadrul paginii Web print intermediul marcatorului <OBJECT>.
Spre deosebire de scripturile pe partea de client și nu au restricții în ceea ce privește accesul la disc, ceea ce face ca anumite componente de acest tip să fie susceptibile de cod răuvoitor, asemănător virușilor, viermilor sau cailor troieni. De aceea, în cazul în care o pagină conține controale ActiveX, navigatorul printr-o fereastră de dialog cere confirmarea utilizatorului pentru instalarea și rularea acestora.
Elemente multimedia sunt dezvoltate în general folosind produsul Macromedia Flash. Acestea se prezintă sub forma de fișiere SWF multimedia și sunt incluse în pagina Web prin intermediul marcatorului <OBJECT>. Pentru a putea rula pe partea de client aceste fișiere este necesară instalarea unui plug-in denumit Macromedia Shockwave Player.
Fișierele multimedia Flash se realizează sub forma unor filme, care sunt proiectate cadru cu cadru. Acestea oferă diverse efecte multimedia (animație, sunet) și permit interactivitatea cu utilizatorul. Sunt utilizate pentru meniuri, jocuri, filme de animație 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 interogări la nivelul bazelor de date și de a trimite spre serverul Web rezultatul execuției scripturilor sub formă de conținut HTML pentru a putea fi afișat de către navigator.
În momentul în care serverului Web i se solicită rularea unui script, acesta identifică în funcție de extensia fișierului care din compilatoare trebuie să ruleze scriptul respectiv.
Figura 3.6. Generarea paginilor dinamice pe server
Fiecărui interpetor de scripturi i se asociază unui limbaj de server-side scripting. Limbajele populare ale momentului sunt: PHP (Personal Home Pages), ASP (Active Server Pages), ASP.NET și JSP (Java Server Pages). La acestea se mai adaugă și o serie de alte tehnologii de interes mai restrâns.
Caracteristicile generale ale paginilor Web dinamice generate pe partea de server, indiferent de limbajul de scripting folosit sunt:
– necesită un procesor pentru paginile dinamice sau un mediu de execuție;
– într-o pagină de script (ASP, JSP, PHP) pot fi îmbinate limbajul HTML și secvențe de cod;
– secvențele de cod care sunt executate pe partea de server, înainte de a trimite pagina la client;
– există astfel posibilitatea de a particulariza paginile în mod dinamic;
– oferă posibilitatea de interacțiune cu baze de date diferite;
– au acces la toate resursele serverului Web (fișiere, rețea).
În mod uzual, prin intermediul scripturilor sunt prelucrare informațiile din câmpurile formularelor (<FORM>) din cadrul paginilor Web.
3.4. .NET
3.4.1. Privire de ansamblu asupra tehnologiei
Microsoft .NET este un software care conectează informație, oameni, sisteme și dispozitive. “Cuprinde” clienți, servere și tool-uri de dezvoltare și constă din:
– .NET Framework, folosit la construirea și rularea diferitelor tipuri de software, incluzând aplicații Web-based, aplicații client inteligente și servicii Web XML – componente care facilitează integrarea prin folosirea în comun a datelor și a functionalităților în rețea prin protocoale standard, independente de platformă, cum ar fi XML (Extensible Markup Language), SOAP și HTTP.
– Tool-uri de dezvoltare, cum ar fi Microsoft Visual Studio .NET 2008, care asigură 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 și Microsoft BizTalk Server, care integrează, rulează, operează și controlează aplicații Web-based.
– Software de client, cum ar fi Windows XP, Windows CE și Microsoft Office XP, care ajută dezvoltatorii să ofere experiență semnificativă utilizatorilor despre familia de dispozitive și produse existente.
.NET Framework este integral o componentă Windows pentru construirea și rularea următoarei generații de aplicații software și servicii Web. .NET Framework:
– suportă peste 20 de limbaje de programare diferite;
– administrează multe din instalațiile implicate în dezvoltarea de software;
– ușurează mai mult ca oricând construirea, amplasarea și administrarea de aplicații sigure, robuste și cu performanțe ridicate.
.NET Framework este compus din common language runtime și 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, întărirea securității și managementul memoriei, proceselor și firelor de execuție. În plus, CLR are un rol în timpul de dezvoltare. Trăsături cum ar fi: managementul ciclului de viață, numirea tipurilor, tratarea excepțiilor între limbaje și legarea dinamică reduc cantitatea de cod pe care dezvoltatorul trebuie să o scrie pentru a transforma “business logic” într-o componentă reutilizabilă.
Biblioteca de clase
Clasele de bază oferă funcționalități standard, cum ar fi intrare/iesire, manipularea stringurilor, managementul securității, comunicație în rețea, managementul firelor de execuție, managementul de text și diferite trăsături legate de design-ul interfeței utilizatorului.
Clasele ADO.NET oferă dezvoltatorilor posibilitatea să interacționeze cu date în format XML, accesate prin interfețe OLE DB, ODBC, Oracle și SQL Server. Clasele XML oferă posibilitatea manipulării, căutării și translatărilor XML. Clasele ASP.NET suportă dezvoltarea aplicațiilor Web și a serviciilor Web. Clasele Windows Forms suportă dezvoltarea de aplicații de tip desktop-based smart client.
Împreună, bibliotecile de clase oferă o interfață comună și consistentă de dezvoltare pentru toate limbajele suportate de .NET Framework.
Adoptarea lui .NET
.NET Framework „este în viață” din momentul în care versiunea fost lansată, în ianuarie 2002. Ea a trecut prin mai multe puncte de cotitură în adoptare:
– compilatoare pentru peste 20 de limbaje de programare sunt disponibile pentru utilizarea în cadrul .NET Framework;
– peste 350 de alte tool-uri sunt disponibile din partea altor distribuitori pentru a ajuta la dezvoltarea .NET Framework, incluzând aproximativ 250 de „adăugiri” pentru Visual Studio .NET, precum și IDE-uri de la Borland și Macromedia;
– peste 350 de cărți au fost sau vor fi în curând publicate. Ele discută despre dezvoltarea software-ului folosind .NET Framework;
– peste 750 de grupuri de utilizatori .NET Framework există în întreaga lume;
– milioane de utilizatori vizitează în fiecare lună 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, obțin noi oportunități de integrare și o îmbunătățire a timpului de dezvoltare și de pătrundere pe piață a aplicațiilor folosind .NET Framework ;
– Microsoft livrează agresiv aplicații construite folosind .NET Framework. MSN, Microsoft CRM, Windows XP Media Center Edition si Microsoft.com Smart 404 sunt doar câteva dintre multiplele aplicații Microsoft construite deja folosind .NET Framework.
Dezvoltarea rapidă
Posibilitatea de a folosi unul dintre multiplele limbaje ale .NET Framework oferă dezvoltatorilor posibilitatea de a folosi limbajul de programare care este cel mai indicat pentru un anumit task și să combine limbajele în cadrul aceleiași aplicații.
Componentele scrise în diferite limbaje pot funcționa transparent între ele, fără a fi necesară munca suplimentară din partea dezvoltatorului. .NET Framework a fost anunțat că suportă peste 20 de limbaje de programare comerciale și academice.
Design-ul de “racordare” liberă bazat pe componente ale .NET Framework minimizează cantitatea de cod pe care dezvoltatorii trebuie să o rescrie și maximizează potențialul de reutilizare al codului.
Operații îmbunătățite
.NET Framework îmbunătățește performanțele aplicațiilor Web tipice. Compania Middleware, fondatorii forumului de dezvoltatori J2EE The ServerSide.com, au condus un test benchmark pentru .NET Framework și J2EE si au găsit că .NET Framework a depășit semnificativ J2EE în cazul aplicațiilor Web de hosting, serviciilor Web și tranzacțiilor distribuite.
.NET Framework oferă, de asemenea, performanțe deosebite și beneficii de scalabilitate în raport cu tehnologia Active Server Pages (ASP), mulțumită tehnologiilor de compilare just-in-time (JIT) și de cache-ing.
Limbaje suportate de .NET
În momentul de față, .NET suportă urmaătoarele 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 urmărește ca în viitor toate tehnologiile sale să se bazeze pe .NET sau să fie “înrudite” cu .NET. Versiunea următoare a serverului SQL suportă chiar și scrierea de stored procedures în limbajele .NET. .NET runtime va fi o parte componentă a tuturor sistemelor de operare.
.NET este un framework de dezvoltare software ce permite realizarea, distribuirea și rularea aplicațiilor-desktop Windows si aplicațiilor WEB. Tehnologia .NET pune laolaltă mai multe tehnologii (ASP, XML, OOP, SOAP, WDSL, UDDI) și limbaje de programare (VB, C++, C#, J#) asigurând, totodată, atât portabilitatea codului compilat între diferite calculatoare cu sistem Windows (și nu numai, deoarece în ultima vreme au apărut implementări .NET Framework și pe Linux – proiectul Mono), cât și reutilizarea codului în programe, indiferent de limbajul de programare utilizat. .NET Framework este o componentă livrată împreună cu sistemul de operare Windows. De fapt, .NET 2.0 vine cu Windows Server 2003 și XP SP2 și se poate instala pe versiunile anterioare, până la Windows 98 inclusiv; .NET 3.0 vine instalat pe Windows Vista.
Structura platformei .NET
Am ales platforma .NET în primul rând pentru că ne oferă instrumente pe care le putem folosi și în alte programe, oferă acces ușor la baze de date, permite realizarea desenelor sau a altor elemente grafice și o programare a interfeței grafice (User interface) deosebit de facilă. Spațiul de nume System.Windows.Forms conține instrumente (controale) ce permit implementarea elementelor interfeței grafice cu utilizatorul. Tot .NET oferă clase care efectuează majoritatea sarcinilor uzuale cu care se confruntă programele și care plictisesc și fură timpul programatorilor, reducând astfel timpul necesar dezvoltării aplicațiilor, cum ar fi type safety-ul, exception handling, validarea datelor din User interface sau interfațarea 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, având o sintaxă asemănătoare cu cea din C/C++ și Java, care permite programatorilor să construiască rapid o varietate largă de aplicații pentru platforma Microsoft .Net, platformă care asigură instrumente și servicii pentru exploatarea sistemelor informatice și comunicațiilor.
Datorită designului elegant orientat pe obiecte, C# este o alegere bună pentru conceperea a variate componente – de la aplicații la nivel de sistem și până la realizarea aplicațiilor comerciale de nivel ridicat. Folosind concepte simple de limbaj C#, aceste componente pot fi ușor convertite în servicii Web XML, permițând accesarea lor prin Internet de către orice program rulând pe orice sistem de operare.
Unul dintre scopurile limbajului este acela de a simplifica programarea orientată pe componente. Prin componentă se înțelege un ansamblu de clase de obiecte care interacționează pentru a îndeplini anumite funcționalități.
C# a fost proiectat în paralel cu platforma .NET realizată de către Microsoft și, de aceea, partajează cu aceasta un număr însemnat de caracteristici. De exemplu, oricât de surprinzător ar parea, toate tipurile de date (chiar și cele „primitive”, cum ar fi int sau char) au o clasă de bază comună, object. De aceea spunem despre această platformă că are un sistem unificat de tipuri.
Alte caracteristici, care aparțin în egală măsură limbajului și platformei sunt:
– utilizarea excepțiilor pentru semnalarea și tratarea erorilor,
– managementul automat al memoriei – memoria este alocată explicit de către programator, dar dealocată de sistem când acesta consideră că este cazul;
– suportul pentru versiuni ale codului – codul se schimbă în timp ca urmare a cerințelor care se modifică permanent și în .NET această problemă este tratată corespunzător.
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 modulară, ștructurală și orientată pe obiecte și încoporeaza încapsularea, moștenirea și polimorfismul, acestea fiind principiile de bază ale C#-ului. C# permite și compilarea în linia de comandă, fară a fi necesară folosirea Visual Studio-ului.
O aplicație C# [4] este formată din una sau mai multe clase, grupate în „spații de nume” numite namspaces. Un namespace poate conține mai multe clase, cu nume diferite, dar cu funcționalități diferite. Pot apărea clase cu același nume, condițiia fiind ca ele să nu fie definite în același namespace.
În cadrul unui spațiu de nume, poate fi definit un alt spațiu de nume, acesta fiind un spațiu de nume imbricat.
O clasă se identifică prin numele complet, adică numele propriu prefixat cu spațiul de nume unde este declarată, cele doua cuvinte fiind desparțite prin punct „.”. O clasă este formată din date și metode sau funcții.
În cazul unei aplicații complexe, care trebuie partajată, C# ofera posibilitatea segmentării în mai multe fișiere numite „assemblies”. Într-un assembly se pot implementa spații de nume.
Este obligatoriu ca doar și numai o singură clasă să conțina un punct de intrare, adică metoda Main.
C# [4,18] a fost proiectat pe ideea ca sistemele moderne sunt construite din componente, furnizând suport direct pentru construcții de componente uzuale, permite extinderea componentelor în vederea reutilizării și a distribuirii. Nu mai foloseste fișiere header și biblioteci speciale ca și C++.
Construcțiile noi din cadrul C# sunt delegați – echivalentul pointerilor la funcții și atribute custom, care permit notarea elementelor de cod cu informații aditionale
Păstrează facilitățiile din C++ precum: suprascrierea operatorilor, conversii utilizator și transmiterea prin referință.
Spre deosebire de majoritatea limbajelor de programare, C# nu are o bibliotecă runtime proprie, ci foloseste bibliotecile oferite de .NET Framework pentru abslout toate facilitățile necesare.
3.4.1.1. AvantajeleC#
– Dezvoltare rapidă de aplicații: Unul din cele mai importante obiective ale Microsoft pentru C# este suport pentru RAD (Rapid Application Development). Aplicațiile internet trebuie să fie dezvoltate în timp paralel cu dezvoltarea internetului; un nou limbaj trebuie să fie ușor de învățat și depanat, iar codul să se poată modifica ușor. În timp ce VB și Delphi excelează în aceste domenii, C++ nu a fost tocmai un succes. Limbajul în sine este complex și greu de mânuit și puține biblioteci C++ oferă interfețe simple. În plus, managementul manual al memoriei și modelul de type-casting complex fac depanarea la C++ foarte dificilă.
În plus, C++ nu protejează inerent împotriva potențialelor probleme cauzate de incompatibilități ale versiunilor. Cu tot efortul depus de Microsoft și Borland, C++ nu este potrivit pentru dezvoltare rapidă a aplicațiilor.
– Funcționare inter-platforme: Limbajele internet ar trebui să suporte, prin definiție, o funcționare inter-platforme. Deoarece internetul este o retea de sisteme disparate, serviciile trebuie sa funcționeze pe o gamă larga de hardware și software. În plus, software-ul orientat pe client ar trebui să ruleze pe mai multe tipuri de dispozitive, inclusiv PDA și telefoane mobile.
O astfel de flexibilitate este o provocare pentru toate limbajele, cu excepția Java. În special VB produce doar aplicații Windows pentru mașini bazate pe Intel. Delphi, de asemenea , are aceleași restricții. Delphi pentru Linux este disponibil deja, dar nu oferă încă suport pentru aplicații internet. Nici VB, nici Delphi nu îndeplinesc condițiile pentru funcționarea independentă de platformă.
– 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 aplicații țintă puternice. Visual J++ 6.0 oferea programatorilor acces la Windows API, ceea ce Java de obicei nu permite. În schimb, Java oferă funcționare independentă de platformă, prin definirea unui cel mai mic numitor comun standard implementat de orice mașina virtuală. Programatorii Java trebuie sa codeze folosind acest standard mai puțin puternic, în loc să profite de serviciile mai puternice oferite doar de anumite platforme. Astfel, Java nu reușește să îndeplinească obiectivul de a da acces la resurse specifice platformei.
– Suport pentru platformele COM și .Net: Microsoft a hotărât ca suportul pentru COM și .Net este principalul obiectiv ce trebuie să-l îndeplinească C#. Nici un alt limbaj nu suporta platforma .Net, deorece era înca în construcție. Spre deosebire de .Net, COM există de ceva vreme dar, totuși, duce lipsa suportului unui limbaj puternic. Majoritatea limbajelor, incluzând C++ și Delphi, necesită ca programatorii să mai facă în plus o declarare IDL, o fabrică de clase și împachetări speciale pentru fiecare obiect COM creat.
C# asigură colectarea spațiului disponibil în stilul limbajului Java: una dintre cele mai semnificative caracteristici RAD ale limbajului C# este colectarea spațiului disponibil în stilul limbajului Java. La intervalele arbitrare din timpul momentul execuției, toate obiectele care nu mai sunt referite sunt în mod automat șterse.
C# permite programatorilor să dezactiveze local colectarea spațiului disponibil, marcând codul cu „nesigur”, în situațiile în care este necesară realizarea performanței în timp real.
C# pune în aplicare un tip, un sistem valoare/referință în stilul limbajelor Java/Delphi. Pentru a sprijini RAD, C# folosește în continuare pointerul de C, C++ în favoarea tipului de sistem valoare/referință Java și Delphi. În acest sistem, tipurile predefinite (întreg, real,string, și asa mai departe), enumerările și structurile, sunt toate tipuri de valoari.
Operatori de comparație copiază și verifică valorile acestor tipuri de variabile. Interfețele, clasele și delegate-urile sunt toate tipuri de referințe. Operatorii de comparare copiază și verifică identitatea obiectelor la care se referă aceste tipuri de variabile.
Acest tip de sistem este mult mai simplu decat pointerii din C++. Face mai ușoară folosirea obiectelor și elimină multe din erorile ce apar în programele de C și C++.
În C#, interfețele sunt declarate separat de clase: C# de asemenea sprijină un model de interfață Delphi și Java, unde interfețele sunt declarate în mod independent de clase. Este opusul modelului C++, unde interfețele 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 virtuală 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 utilizând ASP.NET
3.5.1. Scurt istoric
ASP este o tehnologie creată de Microsoft pentru a ușura dezvoltarea interactivă a aplicațiilor Web. La începuturile Internetului, era utilizată pentru a transmite pagini HTML ca răspuns la cererile HTTP ale unui browser. Aceste pagini Web includeau hyperlink-uri care permiteau utilizatorilor să navigheze cu ușurință de la o pagină la alta.
O dată cu apariția Internetului și a infrastructurii World-Wide-Web născută în anii ’90, ideea și soluția aplicațiilor distribuite a căpătat o altă culoare. Aplicațiile distribuite au luat naștere în urma vizualizării clare a lumii informatice, a imposibilității de a avea dispozitive informatice care să ruleze aplicații monopost complexe, lucru care evident nu a condus decât la o centralizare a informației și a aplicațiilor în general. Bazată pe modelul client/server, platforma WWW oferă o infrastructură viabilă și testată ca serviciu al rețelei Internet și promite la nivel de client o interfață standardizată, chiar independentă de platformă, comună pentru vizualizarea informațiilor Web, interfață cunoscută sub numele de browser sau navigator Web.
Modelul de realizare a aplicațiior Web a cunoscut o întreagă evoluție a tehnologiilor de programare la nivel de server. Putem enumera astfel:
– soluția CGI (Common Gateway Interface) reprezintă o serie de script-uri executate pe serverul WWW. Acestea pot fi scrise în orice limbaj de programare (interpretat sau compilat) cu respectarea următoarelor restricții: programul scrie datele la ieșirea standard și generează antete care permit serverului Web să interpreteze corect ieșirea scriptului, conform specificațiilor HTTP (de exemplu, se pot folosi limbaje precum bash, Perl, C/C++, Delphi). Neajunsul CGI-urilor îl reprezintă faptul creerii unui nou proces pe serverul Web pentru fiecare cerere și restricționarea task/fișier executabil.
– soluția ISAPI (Internet Server API) reprezintă o alternativă CGI pe platforme Windows. Dezvoltatorii Win32 pot scrie un program care să comunice direct cu această interfață pentru a face orice lucru posibil cu CGI, pot folosi ISAPI pentru a obține date din formulare și pentru a trimite conținut HTML la client. Codul la nivel de server poate fi scris în oricare limbaj cu suport pentru DLL-uri Windows, ca C/C++, Java, Visual Basic, rezultatul compilării fiind un fișier .dll. Față de CGI, ISAPI rulează în același spațiu de adrese cu serverul HTTP, are acces la toate resursele serverului HTTP, pot fi incluse mai multe task-uri într-un .dll și nu crează procese adiționale pentru rezolvarea cererilor clienților Web. O alternativă la ISAPI este NSAPI-utilizabilă în cadrul serverului Web Netscape.
– soluția PHP (1994) sau ASP (1996) marchează un salt în dezvoltarea aplicațiilor Web. Deși diferă din punct de vedere al sintaxei, ambele limbaje sunt interpretate, codul lor fiind stocat în fișiere externe cu extensia .php/.asp. De fapt, ASP nu oferă un limbaj nou, ci se bazează pe limbajele VBScript si JScript. Un fișier PHP/ASP poate fi combinat cu date de tip text, marcatori HTML și comenzi script. În momentul execuției, în urma cererii unui client Web, fișierul este procesat, fiecare script din cadrul lui este interpretat și rezultatul execuției este introdus înapoi în fișierul static HTML înainte ca rezultatul să fie trimis către browser. Mai mult, în sprijinul programatorului, limbajele pun la dispoziția acestuia o serie de metode și obiecte care ușurează lucrul cu cookie-uri, cu bazele de date (Oracle, MSSQL, MySQL, etc.), care preiau elegant intrările unui formular HTML și le procesează pe server, care preiau informații despre utilizator (clientul Web), care trimit informații la utilizator, care stochează informații despre sesiunea unui utilizator (Session), care partajează informații între utilizatorii unei aplicații (Application) ș.a.m.d.. Mai nou, din partea PHP-ului, începând cu versiunea 4.0, acesta oferă suport pentru programarea obiectuală: încapsularea datelor, moștenirea și polimorfismul. Aceste modele completează destul de bine suportul dezvoltării aplicațiilor Web, însă aduc unele limitări: sunt lente deoarece la fiecare accesare fișierele sunt procesate și interpretate (în loc să fie compilate), nu sunt capabile să construiască controale reutilizabile care să încapsuleze funcționalități complexe pentru interacțiunea cu utilizatorul.
– JSP (JavaServer Pages) face parte din familia Java și reprezintă o tehnologie care permite crearea de aplicații Web independente de platformă. JSP separă interfața utilizator de conținutul generat dinamic permițând schimbarea întregului șablon al site-ului WEB fără a altera informațiile afișate. Tehnologia utilizează marcatori XML și scripturi scrise în limbajul de programare Java pentru a încapsula logica aplicației care generează conținutul paginilor WEB. JSP-urile sunt o extensie a tehnologiei Java Servlet. Servlet-urile sunt independente de platformă 100% și reprezintă module la nivel de server care se integrează în cadrul unei aplicații Web și care pot fi utilizate pentru a extinde capabilitățile unui server WEB. Tehnologia JSP și servlet-urile oferă o alternativă pentru crearea aplicațiilor WEB față de alte limbaje de scripting/programare a aplicațiilor WEB, oferind independență de platformă, performanță, separarea logicii aplicației de partea de interfață utilizator, administrare ușoară și extensibilitate.
După mai multe încercări eșuate (cum ar fi fișierele ADC/HTX), Microsoft a stabilit Active Server Pages ca și modalitatea proprie de creare dinamică a paginilor HTML bazată pe date introduse de utilizator. Dar oricât de util a fost și cât succes a avut, ASP are câteva limitări importante care au dus la dezvoltarea ASP.NET:
– Cod interpretabil și de tip pierdere: motorul de execuție pe care se bazează Active Server Pages interpretează codul linie cu linie, de fiecare dată când este apelată pagina. Aceasta împiedică performanța și face dificilă tratarea erorilor. Pentru a depăși această limitare, mulți utilizatori ASP au încercat mutarea pe cât 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 dată ce DLL este încărcat de ASP, rămâne în memorie până când serverul Web este oprit, facând dificilă menținerea aplicațiilor ASP.
– Colaborare dificilă: Cele mai multe echipe de dezvoltare Web includ două grupuri diferite: unul responsabil cu scrierea codului, iar celălalt are rolul de a face site-ul atractiv și interesant. Modul în care ASP încurajează îmbinarea codului cu HTML face dificilă colaborarea dintre programatori și designeri pentru o pagină fără a se amesteca unul în munca celuilalt.
– Unelte limitate pentru dezvoltarea și compilare: Microsoftf Visual InterDev, Macromedia Visual UltraDev și alte unelte au încercat să îmbunătățească productivitatea programatorilor ASP prin oferirea unor medii de dezvoltare grafice. Totuși, aceste unelte nu au atins ușurința utilizării sau nivelul de accepptare atins de aplicațiile Microsoft Windows, cum ar fi Visual Basic sau Microsoft Access. Cei mai mulți utilizatori ASP încă se bazează în mare parte sau exclusiv pe Notepad. Aceasta pentru că paginile ASP tipice combină elemente din diferite tehnologii, incluzând VBScript, JavaScript, Dynaimc HTML, ADO, și în ultimul timp chiar XML și XSL style sheets.
– Setări de configurație obscure: pentru a memora setări de configurație, ASP folosește metabaza, componentă a IIS, a cărei structură este greu de înțeles pentru mulți utilizatori. În plus, este greu de transferat setările metabazei de la un server Web la altul. ASP.NET a fost creat ca răspuns direct la problemele pe care programatorii le aveau folosind ASP clasic. Deși .NET Framework a apărut pentru a include mult mai mult decât ASP.NET, impulsul care a dus la crearea sa a fost nevoia de o modalitate nouă de coonstruire eficientă a aplicațiilor Web moderne. De aceea nu e de mirare că ASP.NET rezolvă toate neajunsurile clasicului ASP:
– Cod compilabil: ASP.NET folosește .NET Common Language Runtime (CLR), în locul unui motor scriptic. Aceasta înseamnă că întraga putere a limbajelor .NET este disponibilă programatorilor ASP.NET, și codul este compilabil folosind procesul standard just-in-time de compilare .NET.
– Separarea codului de HTML: arhitectura ASP.NET crează o separare clară între HTML și elementele de cod a fiecărei pagini, și permite stocarea acestor elemente în fișiere separate. Aceasta ușurează colaborarea eficientă a echipelor de programatori.
– Mediu de dezvoltare grafic: Visual Studio.NET oferă un mediu de dezvoltare bogat pentru programatorii Web. Se pot seta proprietăți și introduce controale ca și în Visual Basic. În plus, mediul de dezvoltare Visual Studio .NET este programabil și extensibil.
– Fișiere de configurație XML: Setările de configurație în ASP.NET sunt stocate în fișiere XML care pot fi cu ușurință citite și editate. Pot fi de asemenea ușor copiate pe alt server, împreună cu alte fișiere care comprimă aplicația.
3.5.2. Introducere în ASP .NET
ASP.NET este tehnologia Microsoft care permite dezvoltarea de aplicații web moderne, utilizând platforma Microsoft .NET cu toate beneficiile sale. Pentru a înțelege procesul de realizare a unui site web cu ASP.NET este important să cunoaștem modul în care funcționează comunicarea între browser și serverul web.
Acest proces este format din următoarele etape principale:
1. Browserul Web inițiaza o cerere (request) a unei resurse către serverul Web unde este instalată aplicația dorită.
2. Cererea este trimisă serverului Web folosind protocolul HTTP.
3. Serverul Web procesează cererea.
4. Serverul web trimite un răspuns browserului folosind protocolul HTTP.
5. Browserul procesează răspunsul în format HTML, afișând pagina web.
6. Utilizatorul poate introduce date (să spunem într-un formular), apasă butonul Submit și trimite date înapoi către server.
7. Serverul Web procesează datele.
8. Se reia de la pasul 4.
Serverul web primește cererea (request), iar apoi trimite un răspuns (response) înapoi către browser, după care conexiunea este închisă, și sunt eliberate resursele folosite pentru procesarea cererii. Acesta este modul de lucru folosit pentru afișarea paginilor statice (datele dintr-o pagină nu depind de alte date din alte pagini sau de alte acțiuni precedente ale utilizatorului) și nici o informație nu este stocată pe server.
În cazul paginilor web dinamice, serverul poate să proceseze cereri de pagini ce conțin cod care se execută pe server, sau datele pot fi salvate pe server între două cereri din partea browserului.
Trimiterea datelor de la browser către server se poate realiza prin metoda GET sau POST. Prin GET, URL-ul este completat cu un șir 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 în 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 datorită faptului că datele sunt scrise în URL-ul browser-ului, pot apărea probleme de securitate. De aceea, de preferat este să se folosească metoda POST pentru trimiterea de date.
Trimiterea datelor înapoi către server este numită deseori PostBack. Acțiunea de PostBack poate fi folosită atât cu metoda GET cât și cu metoda POST. Pentru a ști dacă se trimit date (POST) sau pagina este doar cerută de browser (GET), cu alte cuvinte pentru a ști dacă pagina curentă se încarcă pentru primă dată sau nu, în ASP.NET se folosește o proprietate a clasei Page numită IsPostBack.
3.5.3. Structura unei pagini ASP.NET
La crearea unui proiect nou, în fereastra Solution Explorer apare o nouă pagină web numită Default.aspx. Orice pagină web .aspx este formată din 3 secțiuni: secțiunea de directive, secțiunea de cod, și secțiunea de layout. Secțiunea de directive se folosește pentru a seta mediul de lucru, precizând modul în care este procesată pagina.
<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>
Secțiunea de cod, conține codul C# asociat paginii sau obiectelor din pagină. Codul poate fi plasat direct în pagina sau într-un fișier cu extensia .cs, cu același nume ca al paginii (de ex. Default.aspx.cs). În cazul în care se găsește direct în pagină codul este cuprins între tag-urile <script> </script>:
<script runat=”server”>
protected void Button1_Click(object sender, EventArgs e)
{
Page.Title = “First Web Application”;
}
</script>
De obicei blocurile <script> conțin cod care se execută pe partea de client, însă dacă se folosește atributul runat = „server”, codul se va executa pe serverul web. În cazul exemplului de mai sus, la apăsarea butonului se schimbă titlul paginii Web în browser.
În cazul în care în fereastra pentru adăugarea unei pagini noi în proiect, se bifează opțiunea Place code in separate file, codul este plasat într-un fișier separat, iar în secțiunea de directive este precizat numele acestui fișier.
Exemplu: CodeFile=”Default.aspx.cs”.
Secțiunea de layout conține codul HTML din secțiunea 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, specifică faptul că pentru obiectul respectiv, ASP.NET Runtime Engine care rulează pe serverul web (IIS) va face transformarea într-un obiect HTML standard. Această conversie se realizează în funcție de tipul browserului, de varianta de javascript instalată pe browser și de codul C# asociat obiectului respectiv (numit code behind).
De exemplu pagina aspx de mai sus este transformată în următorul fișier 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> <br />
<input type=”submit” name=”Button1” value=”Button” id=”Button1” style=”zindex:
102;left: 349px; position: absolute; 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, să răspundă la anumite evenimente din pagină. Își menține în mod automat starea între 2 cereri către server, trebuie să aibă atributul id și atributul runat.
Există două tipuri de controale server: Web și Html. Controalele server web oferă mai multe funcționalități programabile decât cele HTML. De asemenea pot detecta tipul browserului și pot fi transformate corespunzător în tag-urile html corespunzătoare. ASP.NET vine cu o suită foarte bogată de controale care pot fi utilizate de către programatori și care acoperă o foarte mare parte din funcționalitățile necesare unei aplicații web.
O proprietate importantă a controalelor server este AutoPostBack. Pentru a înțelege exemplificarea, vom considera o pagină în care avem un obiect de tip checkbox și un obiect de tip textbox care are proprietatea visible = false. În momentul în care este bifat checkbox-ul, vrem ca obiectul textbox să apară în pagină.
Codul poate fi următorul:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (CheckBox1.Checked == true)
{
TextBox3.Visible = true;
TextBox3.Focus();
}
else
{
TextBox3.Visible = false;
}
}
Când vom rula pagina, vom constata că totuși nu se întâmplă nimic. Pentru a se executa metoda CheckBox1_CheckedCanged, pagina trebuie retrimisă serverului în momentul bifării checkbox-ului. Serverul trebuie să execute codul și apoi să retrimită către browser pagina în care textbox-ul este vizibil sau nu. De aceea controlul checkbox trebuie să genereze acțiunea de PostBack, lucru care se întâmplă dacă este setată valoarea true proprietății AutoPostBack. Unele controale generează întotdeauna Postback atunci când apare un anumit eveniment. De exemplu evenimentul click al controlului button.
Pentru a înțelege mai bine fenomenul de PostBack, ne propunem să realizăm următoarea aplicație. Într-o pagină avem un textbox și un buton. Dorim ca în textbox să avem inițial (la încărcarea paginii) valoarea 0, și de fiecare dată când se apasă butonul, valoarea din textbox să fie incrementată cu 1.
Codul evenimentului Click al butonului și al evenimentului Load al paginii ar putea fi următorul:
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Text = “;
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = Convert.ToString(Convert.ToInt32(TextBox1.Text) + 1) ;
}
Vom observa, însă, că după prima incrementare valoarea în textbox rămâne 1. Acest lucru se întamplă deoarece evenimentul Load se execută la fiecare încărcare a paginii (indiferent că este vorba de request-ul inițial al browserului său de apelul de postback generat automat de evenimentul clic al butonului). Pentru a remedia această situație, obiectul Page în ASP are proprietarea isPostBack, a.î. putem să rescriem codul metodei Load:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false) // nu este postback deci e prima
{ // incarcare a paginii
TextBox1.Text = “;
}
}
3.5.5. Păstrarea informațiilor în aplicațiile web
Există o deosebire fundamentală între aplicațiile Windows și cele Web. Anume, în aplicațiile Windows odată creat un obiect acesta rămâne în memorie în principiu până la terminarea aplicației și va putea fi utilizat și din alte ferestre decât cele în care a fost creat, atâta timp cât este public. Pe de altă parte, în aplicațiile web paginile nu se păstrează în memorie pe calculatorul utilizatorului (clientului) iar aici ne vom pune problema păstrării informațiilor.
Când browserul cere o anumită pagină, ea este încărcată de serverul web, se execută codul asociat pe baza datelor trimise de user, rezultând un răspuns în format html trimis browserului. După ce este prelucrată pagina de către server, obiectele din pagină sunt șterse din memorie, pierzând astfel valorile. De aceea apare întrebarea: cum se salvează/transmit informațiile între paginile unui site web sau chiar în cadrul aceleiași pagini, între două cereri succesive către server?
3.5.5.1. Păstrarea stării controalelor
Obiectul ViewState
Starea controalelor unei pagini este pastrată automat de către ASP.NET și astfel nu trebuie să ne facem griji cu privire la informațiile care apar în controale pentru ca ele nu vor dispărea la următorul PostBack – adică la următoarea încărcare a paginii curente. De exemplu, dacă scriem un text într-o căsuță de text și apoi apăsăm un buton care generează un PostBack iar pagina se reîncarcă, ea va conține căsuța de text respectivă cu textul introdus de noi înainte de reîncărcare.
În momentul generării codului Html de către server se generează un control html de tip <input type=”hidden”…> , a cărui valoare este un șir de caractere ce codifică starea controalelor din pagină:
<input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE”
value=”/wEPDwULLTE1OTg1NDYyNDZkZFCFstl/DwSGv81TuCB397Tk5+CJ” />
Se pot adăuga valori în ViewState și de către programator, folosind obiectul ViewState cu metoda Add (cheie, valoare_obiect): ViewState.Add(“TestVariable”, “Hello”);
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
ViewState.Add(“ViewStateTest”, “Hello”);
}
}
Regăsirea datelor se realizează folosind ca indice numele obiectului:
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = ViewState[“ViewStateTest”].ToString();
}
3.5.5.2. Păstrarea informațiilor
Așa cum am observat în paragraful anterior, starea controalelor de pe o anumită pagină web ASP.NET se pastrează între mai multe cereri către server pentru aceeași pagină, folosind obiectul ViewState în mod automat, transparent pentru programator. Dacă dorim să păstrăm mai multe informații decât doar conținutul controalelor, cum ar fi valorile unor variabile instanțiate într-o anumită pagină, atunci va trebui să o facem explicit, pentru că acestea se pierd în momentul în care serverul web regenerează pagina curentă, ceea ce se întâmplă la fiecare PostBack , cum se întâmplă de exemplu la apăsarea unui buton ASP.NET.
Profile
O posibilitate de păstrare a informațiilor specifice unui utilizator constă în folosirea obiectului Profile, prin intermediul fișierului de configurare Web.Config. Acesta este un fișier XML în care se rețin opțiuni de configurare. Pentru a adăuga o proprietate obiectului profile, în fișierul Web.Config se adaugă:
<profile enabled=”true”>
<properties>
<add name =”ProfileTest” allowAnonymous =”true”/>
</properties>
</profile>
Atributul name reține numele proprietății. După aceste modificări, proprietatea definită în Web.config poate fi apelată 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 către un utilizator și rămâne în memorie în principiu atât timp cât utilizatorul rămâne conectat la site. Există și excepții, dar ele nu fac obiectul acestui material. Pentru a adăuga un obiect în sesiune, trebuie doar să scriem un cod de genul următor:
protected void Button1_Click(object sender, EventArgs e)
{
Session[“sir”] = test;
}
Session este de fapt un dicționar (listă de perechi cheie – valoare), în care valorile sunt de tip object. Ceea ce înseamnă că la citirea unor valori din sesiune va trebui să realizăm o conversie de tip.
protected void Button2_Click(object sender, EventArgs e)
{
test = Session[“sir”].ToString();
TextBox1.Text = test;
}
Odată introdus un obiect în Session, el poate fi accesat din toate paginile aplicației, atât timp cât el există acolo. Programatorul poate realiza scoaterea obiectului din sesiune atunci când dorește acest lucru:
Session.Remove(“sir”);
Application
Obiectul Application se comportă în mod identic cu Session, doar că este specific întregii aplicații, adică tuturor utilizatorilor care acceseaza un site web la un moment dat, și nu unei anumite sesiuni. Cu alte cuvinte odată introdus un obiect în Application, va putea fi accesat din orice loc al sitului și de către toți utilizatorii acestuia.
Membrii statici
Toate variabilele declarate ca fiind statice sunt specifice întregii aplicații și nu unei anumite sesiuni. De exemplu, dacă atunci când un site este accesat de Utilizator1 și o variabilă declarată:
static string test = “init”;
se modifică de către acesta:
test = “modificat”;
atunci toți utilizatorii aplicației vor vedea valoarea modificată din acel moment înainte.
În cazul obiectului ViewState, datele sunt salvate în pagina web sub forma unui șir de caractere, iar în cazul obiectului Session respectiv Application în memoria serverului web. Dacă datele salvate sunt de dimensiuni mari, în primul caz crește dimensiunea paginii web, care va fi transmisă mai încet, iar în al doilea caz rezultă o folosire excesivă a memoriei serverului web, ceea ce duce la scăderea vitezei de lucru.
Această folosire excesivă a memoriei poate să apară și în cazul unei dimensiuni a datelor ceva mai redusă, dar a unui număr mare de utilizatori care accesează simultan pagina (pentru fiecare se va creea un obiect sesiune).
3.5.6. Validarea datelor
În toate aplicațiile web și nu numai se pune problema validării datelor introduse de utilizator. Cu alte cuvinte, trebuie să ne asigurăm că utilizatorul site-ului nostru introduce numai date corecte în căsuțele de text care îi sunt puse la dispoziție.
De exemplu, dacă pe o pagină web se cere utilizatorului introducerea vârstei sale și pentru asta îi punem la dispozitie o căsuță de text, va fi obligatoriu să ne asigurăm că în acea căsuță se pot introduce numai cifre și că numărul rezultat este încadrat într-un anumit interval. Sau, un alt exemplu, este introducerea unei adrese de email validă din punct de vedere al formatului.
ASP.NET vine cu o serie de controale gata create în scopul validării datelor. Aceste controale sunt de fapt clase care provin din aceeași ierarhie, având la bază o clasă cu proprietăți comune tuturor validatoarelor.
3.5.6.1. Proprietăți comune
ControlToValidate: este proprietatea unui control de validare care arată spre controlul (căsuța de text) care trebuie să fie validat.
ErrorMessage: reprezintă textul care este afișat în pagina atunci când datele din controlul de validat nu corespund regulii alese.
EnableClientSideScript: este o proprietate booleană care specifică locul în care se execută codul de validare (pe client sau pe server).
Alte proprietăți, specifice tipului de validator.
3.5.6.2. Validatoare
1. RequiredFieldValidator. Verifică dacă în căsuța de text asociată prin proprietatea ControlToValidate s-a introdus text. Util pentru formularele în care anumite date sunt obligatorii.
2. RangeValidator. Verifică dacă informația introdusă în căsuța de text asociată face parte dintr-un anumit interval, specificat prin tipul datei introduse (prorietatea Type) și MinimumValue respectiv MaximumValue.
RegularExpressionValidator. Verifică dacă informația din căsuța de text asociată este conform unei expresii regulate specificate. Este util pentru validarea unor informații de genul adreselor de email, numerelor de telefon, etc – în general informații care trebuie să respecte un anumit format. Trebuie setată proprietatea ValidationExpression în care se pot alege câteva expresii uzuale gata definite.
CompareValidator. Compară datele introduse în căsuța de text asociată cu o valoare prestabilită (ValueToCompare), în funcție de operatorul ales (proprietatea Operator) și de tipul de date care se așteaptă (proprietatea Type).
Pe lângă validatoarele prezentate mai sus, programatorul poate crea validatoare customizate, care să verifice datele introduse de utilizator conform unor reguli proprii.
3.5.7. Securitatea în ASP.NET
Pentru o aplicație securizată, avem mai multe posibilități de autentificare, cele mai des întâlnite fiind sintetizate în tabelul de pe slide. Implementarea politicii de securitate se poate face atât din IIS cât și din aplicația ASP.NET.
3.5.7.1. Windows Authentication
În acest mod de autentificare, aplicația ASP .NET are încorporate procedurile de autentificare, dar se bazează pe sistemul de operare Windows pentru autentificarea utilizatorului.
1. Utilizatorul solicită o pagină securizată de la aplicația Web.
2. Cererea ajunge la Serverul Web IIS care compară datele de autentificare ale utilizatorului cu cele ale aplicației (sau ale domeniului)
3. Dacă acestea două nu corespund, IIS refuză cererea utilizatorului
4. Calculatorul clientului generează o fereastră de autentificare
5. Clientul introduce datele de autentificare, după care retrimite cererea către IIS
6. IIS verifică datele de autentificare, și în cazul în care sunt corecte, direcționează cererea către aplicația Web.
7. Pagina securizată este returnată utilizatorului.
3.5.7.2. Forms-Based Authentication
Atunci când se utilizează autentificarea bazată pe formulare, IIS nu realizează autentificarea, deci este necesar ca în setările acestuia să fie permis accesul anonim.
1. În momentul în care un utilizator solicită o pagină securizată, IIS autentifică clientul ca fiind un utilizator anonim, după care trimite cererea către ASP.NET
2. Acesta verifică pe calculatorul clientului prezența unui anumit cookie1
3. Dacă cookie-ul nu este prezent sau este invalid, ASP.NET refuză cererea clientului și returnează o pagină de autentificare (Login.aspx)
4. Clientul completează informațiile cerute în pagina de autentificare și apoi trimite informațiile
5. Din nou, IIS autentifică clientul ca fiind un utilizator anonim și trimite cererea către ASP.NET
6. ASP.NET autentifică clientul pe baza informațiilor furnizate. De asemenea generează și un cookie. Cookie reprezintă un mic fișier text ce păstrează diverse informații despre utilizatorul respectiv, informații folosite la următoarea vizită a sa pe site-ul respectiv, la autentificare, sau în diverse alte scopuri.
7. Pagina securizată cerută și noul cookie sunt returnate clientului. Atâta timp cât acest cookie rămâne valid, clientul poate solicita și vizualiza orice pagină securizată ce utilizează aceleași informații de autentificare.
3.5.7.3. Securizarea unei aplicații web
Securizarea unei aplicații web presupune realizarea a două obiective: (1) autentificarea și (2) autorizarea.
1. Autentificarea presupune introducerea de către utilizator a unor credențiale, de exemplu nume de utilizator și parolă, iar apoi verificarea în sistem că acestea există si sunt valide.
2. Autorizarea este procesul prin care un utilizator autentificat primește acces pe resursele pe care are dreptul să le acceseze.
Aceste obiective pot fi atinse foarte ușor utilizând funcționalitățile și uneltele din ASP.NET respectiv Visual Studio, anume clasa Membership și unealta ASP.NET Configuration (din meniul Website al Visual Studio Web Developer Express). Configurarea autentificării și autorizării se poate realiza după cum se vede în acest tutorial: http://msdn2.microsoft.com/en-us/library/879kf95c(VS.80).aspx.
3.5.8. Accesul la o baza de date într-o pagină web
Pentru adăugarea unei baze de date proiect, din meniul Add Item se alege SQL Database. Baza de date va fi adaugată în directorul App_data al proiectului. Legătura între baza de date și controalele html se realizează prin intermediul obiectului SqlDataSource. Din meniul contextual asociat acestui obiect se alege opțiunea Configure Data Source, se alege baza de date, și se construiește interogarea SQL pentru regăsirea datelor.
La această sursă de date se pot lega controale de afișare a datelor cum ar fi: GridView, Detailview, FormView. Din meniul contextual asociat acestor controale se alege opțiunea Choose data source, de unde se alege sursa de date.
3.5.9. Avantajele utilizării 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 aplicației
Aplicația descrisă în această lucrare este un site de turism realizat folosind tehnologia ASP.NET.
4.1. Proiectarea aplicației
ASP.NET este tehnologia Microsoft pentru web-development, fiind una din cele mai dinamice tehnologii existente pe piață, ce captează interesul tot mai multor dezvoltatori de pagini web prin ușurință în utilizare si pentru profesionalismul platformei.
Este necesar a avea instalat pe masina server .NET Framework 3.5 si serverul web IIS. În cazul de fată, pentru dezvoltare am utilizat .NET 3.5 iar ca si server web am folosit IIS 7.
Dezvoltarea site-ului s-a facut utilizând Visual Web Developer 2008 Express Edition, downloadabil gratuit de pe site-ul Microsoft. Comunicarea dintre baza de date si site-ul web se realizează 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 unică asigură sincronizarea între date, astfel încât fiecare utilizator poate vedea în orice moment conținutul actualizat al site-ului.
Fiecărui utilizator îi este atribuit un rol, pentru fiecare rol fiind definite drepturi de acces, cum sunt: adăugări, editări, ștergeri etc.
4.2. Proiectarea bazei de date
Baza de date a aplicației a fost proiectată pentru a acoperi o gamă larga de scenarii de utilizare si a oferi suport pentru dezvoltari ulterioare rapide.
Vom prezenta în continuare structura pe grupe de tabele.
Tabelele pentru utilizatori sunt ilustrate în 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 lucrări au fost prezentate cele mai importante elemente necesare când se dorește dezvoltarea unei soluții software integrate bazate pe platforma .NET.
Am ales platforma ASP.NET pentru ca dispune de o gamă largă de unelte software pentru proiectare, implementare și prezentare a aplicatiilor fiind un mediu ideal de dezvoltare pentru aplicatii complexe și cu înalte cerințe din punct de vedere al performanțelor și securității.
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 în programarea .NET Framework, Nușa Dumitru-Lupan, Adrian Niță, Maria Niță, 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/
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 în programarea .NET Framework, Nușa Dumitru-Lupan, Adrian Niță, Maria Niță, 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/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Implementarea Unei Interfete Web Pentru O Agentie DE Turism (ID: 141059)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
