2.3 Aspecte ale tehnologiei ASP.NET, particularizat pentru ASP.NET MVC
ASP.NET este tehnologia prin care Microsoft permite dezvoltarea de aplicații web. Internetul este organizat după un model de tip client-server, în care clientul este browser-ul, iar cererile se transmit prin protocolul standard HTTP18. Serverul este un program capabil să găzduiască aplicațiile web scrise după standardul impus de ASP.NET.
Modelul propus de ASP.NET dezvoltatorilor poartă denumirea de Web Forms. Tehnologia Web Forms personal nu mi-a plăcut niciodată și nici nu am fost nevoit să o utilizez din fericire, în consecință nu o să subliniez multe aspecte ale acesteia. Suficient de spus că au încercat să modeleze, cu destul de mare succes, modelul aplicațiilor Windows, în sensul că fiecare pagina e formată dintr-un formular pe care sunt plasate controale care răspund la anumite evenimente. Nu am găsit însă atracția pentru un astfel de model și probabil că nu aș fi realizat aplicația în ASP.NET dacă nu ar fi apărut un nou model mai bine structurat.
Există totuși un aspect de nivel mai jos foarte puternic care permite dezvoltarea de arhitecturi foarte puternice, cum e ASP.NET MVC despre care vom discuta în curând. În esență, ASP.NET este un motor sofisticat de procesare a cererilor HTTP care utilizează codul managed generat pentru platforma .NET. În momentul în care se emite o cerere, acesta trece printr-un sistem de procesare, și în orice moment ca și developer se pot crea obiecte care să se atașeze și să înlocuiască sau să îmbunătățească mecanismul standard. Motorul acesta este de fapt complet detașat de protocolul HTTP sau de serverul web care îl găzduiește putând fii integrat într-o aplicație normală. Detalii pot fi gasite într-un articol de [Strahl1]. Runtime-ul oferă un mecanism complex, dar în acelați timp elegant de a gestiona cererile. Există un set de obiecte care pot fi extinse prin subclasare sau prin atașarea la evenimentele oferite. Pot fi așadar extinse interfețe de nivel jos precum Caching19, Autentificare și Autorizare. Conținuturile pot fi de asemenea filtrate înainte sau după ce procesarea a avut loc. Această extensibilitate a platformei a oferit posibilitatea creării unui model nou de publicare a aplicațiilor web, un model mult mai bine decuplat comparativ cu Web Forms denumit ASP.NET MVC.[Meier2002]
ASP.NET MVC este o platformă nou-nouță, apărând ca și versiune 1.0 abia la sfârșitul lunii Martie anul curent. Platforma ASP.NET MVC oferă următorul set de beneficii
-
Control complet asupra HTML20-ului utilizat;
-
Integrare ușoară cu facilități AJAX;
-
URL21-uri intuitive;
-
Separarea clară a preocupărilor ce permite o mai ușoară mentenanță a aplicațiilor;
-
Testabilitate a codului;
Este de asemena prima platformă pe care Microsoft a dezvoltat-o cu implicare masivă din partea comunității de programatori, platformă pe care ulterior a distribuit-o open-source. Modelul de dezvoltare oferit este mult mai apropiat de cel regăsit în celelalte platforme web precum Grails, Rails, Lift si este marcat de utilizarea șablonului MVC. Atenția a fost concentrată pe crearea unui set de valori de bază și nu pe impunerea unor strategii clare, ca urmare cantitatea de cod necesară construirii infrastructurii poate fi puțin intimidant la început. Totuși eu personal prefer modul acesta de a dezvolta mult mai mult decât filozofia drag&drop pe care produsele Microsoft o promovează.
Rezultatul colaborării cu comunitatea se vede prin direcțiile pe care aceasta le-a impus de-a lungul dezvoltării. Inițial s-a adoptat un stil foarte rigid și care pretindea utilizarea masivă de atribute în cod, iar pentru testarea unei simple acțiuni era necesară crearea de mock22-uri pentru obiecte cu greutate în procesul de procesare ASP.NET, precum HttpContext23 și HttpRequest24.
Aspectul modular al dezvoltării care permite cu ușurință extinderea platformei și modelarea ei după bunul plac, ca să zic așa, au stat la baza deciziei de a o alege ca și bază pentru aplicație. Dezvoltarea cu uneltele cunoscute, într-un limbaj pe care îl stăpânesc și cu o platformă cunoscută au avut la rândul lor un cuvânt important de spus în favoarea alegerii de a concepe aplicația cu tehnologiile sus-menționate.[Walter2008, Strahl2, Snell2009]
2.4 Aspecte ale dezvoltării aplicațiilor web
O aplicație web este, conform [wWebApp], o aplicație accesată prin intermediul unui browser web din rețeaua Internet sau Intranet25. Poate fi și o aplicație software scrisă în limbajele suportate de browser, precum Html, Javascript, Java, Flash ș.a.m.d. sau care necesită contextul unui browser pentru a fi rulate.
Popularitate acestui gen de aplicație este dată pe de o parte de comoditatea folosirii unui browser ca și client, referit și ca fiind un thin client26. Capacitatea de a distribui și instala software-ul pe mii de calculatoare ar fi motivul principal pentru popularitatea de care se bucură acest gen de dezvoltare.
Dincolo de aspectele atractive ale distribuirii acestor aplicații, un alt aspect care trebuie obligatoriu luat în considerare este natura stateless27 a acestui gen de aplicație care înseamnă că dezvoltatorul trebuie să păstreze de la o cerere la alta informații despre clienții curenți, spre exemplu utilizatorul logat. Există acțiuni care pot fi întreprinse doar de utilizatori o dată ce s-au autentificat și e de asemenea tot datoria dezvoltatorului să se asigure că alți clienți nu vor avea access la aceste date.
Securitatea informațiilor este un subiect foarte volatil, întrucât e posibil ca vizitatorii site-ului să cadă în plasa unor scripturi care vor rula cu datele lor din cauza naturii în care informații sensibile sunt stocate în cookie28-uri tocmai pentru a simula un oarecare sentiment de stare curentă a aplicației. Se poate spre exemplu ca un utilizator să posteze o imagine care să aibe ca și sursă un fișier javascript prin intermediul căruia să copieze aceste informații și să obțină aceleași credențiale ca și vizitatorul curent, pe durata sesiunii.
Există o serie întreagă de alte atacuri, gen DoS29, pe care un dezvoltator de aplicații web trebuie să le ia în seamă. Spam30-ul este iarăși un atac destul de frecvent, orice formular care nu introduce ceva metode de validare a unui utilizator uman este expus acestui gen de atac.
Chiar și atunci când crezi că ți-ai luat toate măsurile de precauție te poți trezi cu probleme legate de scalabilitatea aplicației ca urmare a hardware-ului existent pe server. În general un server pentru aplicații web necesită foarte multă memorie și putere de procesare pentru a face față unui număr considerabil de cereri. Scalabilitatea nu e un punct care să facă probleme imediate, pentru că durează destul de mult până ce un web site să producă așa de mulți utilizatori încât chiar să fie o problemă și să fie nevoie să investești în hardware mai performant, dar pentru site-uri gen pariuri sportive, portaluri de știri, blog-uri ar putea în timp să se dovedească puțin problematic.
Dincolo de aspectele legate de securitatea datelor, un alt aspect deloc de neglijat într-o aplicație web este prezentarea informațiilor într-o formă cât mai atractivă. O dată stabilit publicul țintă și partea de funcționalitate, dacă nu ești în domeniul web design-ului e bine ca o persoană specializată să îți mai dea indicații pentru organizarea conținutului în așa fel încât cine parcurge paginile prezentate să se descurce cu ușurință.
Moda ultimilor ani a fost de a include din ce în ce mai multe facilități similare cu cele regăsite în aplicațiile desktop, asistăm oarecum la renașterea interesului pentru javascript care trece încet, dar sigur, din conul de umbră în care a stat o perioadă destul de lungă și se impune ca limbajul de programare numărul 1 al web-ului. Cu atât mai mult cu cât companii precum Aptana, prin tehnologia server pe care o dezvoltă, permite utilizarea javascript-ului nu doar pe partea de front-end ci și pe server.
Nu prea pot încheia discuția despre web și aplicații dezvoltate pentru browsere fără a aminti puțin de CSS31, o sursă nesfărșită de bătaie de cap pentru cei care de-abia încep să învețe cum se fac aplicații pentru web datorită diverselor dezvoltări nu prea standard pe care fiecare browser le aduce. A nu se înțelege greșit, ideea este grozavă și separă partea de organizare și prezentare a conținutului de partea de generare, dar efortul necesar pentru a obține un aspect similar pe mai multe browsere e de multe ori excesiv. Același lucru pot să îl spun și despre javascript, noroc că în ultimii ani o serie de framework-uri precum BlueprintCss, respectiv JQuery pentru Javascript au fost dezvoltate pentru a ușura dezvoltarea cu aceste părți integrale ale paginilor HTML.
Dostları ilə paylaş: |