Tehnologii Folosite In Realizarea Aplicatiilor Bazate Pe .net [618432]

UNIVERSITATEA DE VEST DIN TIMIȘOARA
FACULTATEA DE MATEMATICĂ șI INFORMATICĂ
DOMENIUL INFORMATICĂ
SPECIALIZAREA INFORMATICĂ APLICATĂ

Timisoara 2016

LUCRARE DE LICENȚĂ

Coodonator științific: Absolvent ă:
Conf. Univ. Dr. Victoria Iordan Sichitiu Roxana
Elena

5

Tehnologii utilizate în realizarea
aplicațiilor bazate pe .NET

ABSTRACT

Since this is the era of speed everyone wants to access the information in a quick way, from
any device that is available at the moment and for that web application s need to be created . In order
to adapt to West Europe learning standards, West University introduced a pilot p rogram for students
to choose disciplines from other faculties, encouraging this way both a horizontal and a vertical
professional development also developping a web application as a support for users to consult.

The bachelor paper was conceived as way for the students to consult and enroll to
disciplines, professors could upload files, pictures and make descriptions, for the administrator
manage roles and a series of graphics. To accomplish this, there has been a research, a description
and application of the concepts specific to server side on ASP.NET framework through a database
connection made by Entity Framework and the interaction with client side thought tools as
Bootstrap and Kendo UI and other JavaScript libraries.

The individual work plan co mprises a n abstract, an introduction, four chapters, conclusion
and a bibliographical list. The first chapter comprises generic information related to the
development language and it characteristics, the second chapters includes description of the .NET
framework and all the subtypes that it comprises like Asp.Net, Linq, Enity Framework that are used
further in the project. A third chapter is referring to the client side web technologies used like
Bootstrap, Kendo Ui that integrate Html, Css and some Java S cript libraries like Morris and
Raphael for drawing charts. Chapter four represents a short description with some relevant
examples as a guide line for users.

4
CUPRINS

INTRODUCERE …………………………………………………………………………….. 5

CAPITOLUL 1 …………………………………………………… …………………………. 7
Limbajul orientat obiect C# …………………………………………………………………. 7
1.1. Principiile programării orietate obiect în limbajul C# ………………………. ..7
1.2. Avantajele limbajul Orientat Obiect C# ………………………………………. 12

CAPITOLUL 2 …………………………………………………………………………….. ..17
Arhitectura .NET ……………………………………………………………………………. 17
2.1. ASP .NET ………………………………………………………………………. 20
2.2. Entity Framework ………………………………………………………………. 25
2.3. LINQ …………………………………………………………………………….28
2.4`. Noutăți și avantaje …………………………………………………………….. 29

CAPI TOLUL 3 ………………………………………………………………………………. 30
Tehnologii web ……………………………………………………………………………….. 30
3.1. Tehnologii web ………………………………………………………………………. 30
3.1.1. HTML, CSS, JavaScript …………………………………………………..…. 30
3.1.2. Bootstrap …………………………………………………………….……..…. 31
3.1.3. Kendo UI ………………………………………………………………………. 32
3.1.4. Bower …………………………………………………………………….……..33
3.1.5. Morris ………………………………………………………………………….. 34
3.2. Securitatea Aplicației ……………………………………………………………….. 36

CAPITOLUL 4 ……………………………………………………………………………… 37
Pagina web “Alegerea disciplinelor complementare” …………………………………….. 41
4.1. Descrierea interfeței grafice …………………………………………………… 42
4.2. Funcționalitățile aplicației ………………………………………………………47
4.3. Descriere bazei de date ………………………………………………………… 55

CONCLUZII …………………… …………………………………………………………… 56

BIBLIOGRAFIE ……………………………………………………………………………57

5
INTRODUCERE

De foarte mul ți ani se încearcă aducerea învățământului românesc la standardele
internaționale și odată cu introducerea programului Bologna și a programelor de mob ilitate cum
este cel de Erasmus de către tot mai multe universități de prestigiu s -au făcut pa și noi spre o
uniformizare și o globalizare a învățământului. Anul trecut Universitatea de Vest din Timișoara a
decis continuarea acestei inițiative de globalizar e a învățământului prin introducerea unei opțiuni de
alegere a disciplinelor pe care studentul dorește sa le studieze în cadrul unui program de licență.
Discipline le alese sunt de natură complementară și se dore sc a veni într -o continuare armonioasă a
mate riilor deja existente în programa scoalar ă, stimulând astfel dorința de învățare și dezvoltare pe
direcțiile dorite de fiecare tânăr în parte.

Într-un mediu atât de dinamic, în care informația se schimbă radical la nivel de ore, metoda
tinerii evidenței în format valoric, tipărit nu este una viabilă pentru un volum al informațiilor atât de
mare precum cel dintr -o universitate , astfel că s -a trecut la metod a electronica de stocare și
publicare a informații în timp real către toți utilizatorii interesați. Aplicațiile care vizează aceasta
modalitate de afisare și stocare a informațiilor sunt dezvoltate într -o serie de limbaje cum sunt Php,
C++, Java, C# și altele care suportă interfață grafică, pentru a putea fi adaptate aplicațiilor web.

Lucrarea de faț ă abordează în mod practic inițiativa Universității de Vest din Timisoara de a
oferi studenților o nouă perspectivă de studiu a materiilor dorite, ca o completare a studiilor
efectuate în cadrul unei anumite facultăți prin intermediul unei aplicații web .
Importanța acestei lucrări este una dublă pentru că are în vedere pe de o parte aducerea în
concret a unui ajutor mediului academic, dar are și obiective de instruire privind diverse arhitecturi
și informații de ultimă oră prin:
 oferirea unui mod de cunoaș tere a limbajului C# și a familiarizării cu arhitectura .Net și
a modului de dirijare a intructiunilor Linq pe obiecte;
 aplicabilitatea și modul de folosire al arhitecturii Bootstrap, KendoUi, Morris.Js pe un
schelet Html și Css pentru partea de interfață client;
 modul de integrare a unei aplicații web dezvoltată în .Net cu MsSql Sever 2012 prin
intermediul Entity Framework.

6
Lucrarea de licență este construită pe o introducere, urmată de patru capitole care adăugă
armonios informația și demonstrează în folosirea tuturor informațiilor programatice necesare
dezvoltării unei astfel de aplicații, urmate de concluzie și de datele bibliografice folosite. Primul
capitol este dedicat unei analize a mediului în care este dezvoltată aplicația și introducerea în
informațiile necesare înțelegerii limbajului C#. Cel de -al doilea capitol are în vedere descrierea
arhitecturii .Net, împreună cu elementele care o definesc, referențând cu precadere arhitectura
Asp.Net, modul de corelare a acesteia cu baza de date, interog ăriile pe obiecte și a noutățil e
domeniu lui. În cazul celui de -al treilea capitol este abordată arhitectura Bootstrap, continuând cu
arhitectur a KendoUI și Morris. Ultimul capitol este destinat demonstrarea ideii construite până în
acest punct în părtea teoretic ă, urmând a fi descrisă aplicația web dezvoltată și mecanismul acesteia.

Lucrarea “Alegerea disciplinelor complementare” a fost elaborată în limbajul orientat
obiect C#, prin intermediul arhitecturii .Net, a MsSql Server 2012 și KendoUI, dezvolta rea a fost
făcută în mediul de programare Visual Studio 2012.

Mulțum iri doamnei Conf. Univ. Dr. Victoria Iordan pentru coordonarea și sprijinul acordat
în vederea selectării informației și a definitivării lucrării de licență.

7
CAPITOLUL 1
Limbajul Orientat Obiect C#

C# reprezintă un limbaj de programare, dezvoltat de catre Anders Hejlsberg și aparut în anul
2000, având 16 ani de experien ță și utilizare . Numit inițial COOL (C -like Object Oriented
Language), a fost ulterior redenumit în C#, u nde semnul de diez este preluat din muzic ă –
semnificația acestuia fiind de a face nota scris ă un semiton mai mare, coreland cu C++, unde plusul
seminfic ă faptul ca acest limbaj reprezintă o îmbunatatire adus ă limbajului C.

C# a aparut de fapt din nevoi a acoperir ii lipsurilor celorlalte limbaje (C++, Java, Delphi,
SmallTalk) prin crearea mecanismului CLR(Common Language Runtime), care ulterior a dus la
limbajul de acum cunoscut C#. Acest limbaj s -a axat de -a lungul timpului pe aplicatii dezvoltate in
preoponderenta pentru partea de Web, avand o flexibilitate și o usurinta de implementare mai mare
decat limbajele orientate obiect deja existente. De și imprumuta o buna parte din limbajul C++, are
un model al obiectelor mai simplificat, dar pastreaz ă și o par te dintre facilitatile acestui limbaj prin
lucrul limitat cu pointerii. Un program scris in C# are facilitatea de portare pe orice platform ă, prin
intermediul Common Language Runtime, care reprezint ă mașina virtual ă a acestui limbaj, prin
intermediul carei a este dat mediul în care se executa programele. Aceasta facilitate este de fapt
posibil ă datorita faptului c ă sursele C# sunt generate prin intermediul standarului Common
Language Infrastructure (CLI) într-o variant ă de fi șiere executabile și de limbaj in termediar numit
Common Intermediate Language (CIL) bazat pe pachete. Singurul furnizor pentru mașina virtuală
C# ( CLR) este Microsoft.

1.1. Principiile Programarii Orientate Obiect in limbajul C#

C# este un limbaj foarte robust, oferind abstractiz ări d e nivel înalt cum ar fi expresii de
interogări pe obiecte și aplicații asincrone, având un avantaj de nivel jos prin intermediul
construcțiilor legate de tipurile de bază și opțiunea utilizării pointerilor.

Scop general al acestui limbaj este unul orient at obiect, bazat pe ideea de interacțiune prin
intermediul protocolurilor definite în vederea păstrării consistenței. C# este o platformă neutră, dar

8
care a fost dezvoltată pentru a se integra armonios cu frameworkul Microsoft.Net. Fiind în fond
vorba desp re o paradigmă, programarea orientată obiect în C# are în vedere crearea de concepte
care se pot materializa doar prin intermediul unor obiecte și interacțiunea dintre acestea în vederea
modelării ahitecturii unei aplicații. Conceptele sau clasele menționa te anterior își găsesc
corespondența în lumea reală cum ar fi spre exemplu cerințele unei case la modul general, care nu
reprezintă ceva palpabil, și corespondența acestui concept de clasă cu obiectul casă construită
palpabil, care îndeplinește toate cerin țele unei case definite la modul general.

Este de remarcat faptul că în paradigma programării orientate obiect pentru consițenta
informațiilor referitoare la conceptele existente în cadrul unei aplicații se aplică o serie de principii.
Considerând exemp lul anterior privitor la conceptul de casă, în momentul construcției efective a
obiectului care definește o casă, nu este necesară cunoașterea unor detalii cum ar fi modul de
amestecare a substanțelor în vederea obținerii pereților, acoperișului, modul de rașchetare al
lemnului pentru obținerea pardoselei și a mobilei. Acest lucru se identifică în lumea abstractă a
programării orientate obiect printr -un concept numit încapsulare.

Încapsularea reprezintă în fapt un concept complementar unui alt principiu c aracteristic
programării orientate obiect și anume abstractizarea. Abstractizarea unui obiect are în vedere
identificarea unui protocol corespondent, iar în corespondență încapsularea presupune selectarea
unei variante ce vizează dezvoltarea și raportarea ca la un secret al respectivei abstracțiuni.
Încapsularea reprezintă un proces de selectare și compartimentare a elementelor componente ale
structurii și conduitei abstracțiunii. Încapsularea are în vedere separarea protocolului de integrarea
efectivă a a cestuia. Aceste informații relevă alcătuirea punctuală a unui obiect dintr -o parte de
protocol (interfața) și o altă reprezentată de implementarea “contractuală” a acestei interfețe. Astfel
că se pot desprinde cu ușurință repere privind beneficiile aduse de aceast pilon al paradigmei
programării orientate obiect:
 obiectul având compoziție și abordări complementare de interfață și implementarea
interfeței, utilizatorul va fi interesat de interfața grafică și modul de ultilizare al acesteia și
aproape deloc interesat de modul de implementare al acestei interfețe, acest lucru favorizând
modificări părții server, fără impactarea aspectului sau a funcționarii interfeței modificarea
părții de server se realizează într -o manieră punctuală, eficientizând efortul
programatorului la un efort dozat și bine localizat.

9
Abstractizarea presupune, în lumea reală masura complexității luând ca și punct de reper o
abstracțiune de tip mașina care la modul general are o serie fixă de opțiuni, iar în cazul creării
instanțelor concrete ale acesteia opțiunile pot varia. În acest mod sunt păstrate liniile fine care
mărginesc și definesc un concept general de implementarea practică a obiectului corespondent,
trecând toate celelalte caracteristici ale obiectului realizat pe plan se cund. Dacă se ia ca reper
muzica, care în C# a fost punctul zero al nașterii denumirii acestui limbaj, o abstracțiune este în fapt
un mod de a minimiza “zgomotele” exterioare în favoarea celor de bază. În fond acest principiu are
în vedere mutarea atenției dinspre interiorul obiectului în mod exclusiv spre exterior acestuia, adică
spre comportamente și acțiuni, limitând informațiile privind implementarea acestor comportamente.
Pus în termeni simpli, devine mai important “CUM se comportă obiectul”, decât “DE CE are acest
comportament și cum a fost el dobândit”.

Comportamentul are în vedere modul de funcționare în anumiți parametrii a obiectului vizat,
fiind în fapt vorba despre o serie de servicii sau resurse puse la dispoziția obiectului prin
intermediul a bstractizării create anterior obiectului. Comportamentul de referință preponderent
utilizat este cel de tip client – server după cum se poate observa din imaginea de mai jos, în care un
obiect client beneficiază de anumite resurse puse la dispoziție de car e o abstracțiune de tip server.

Figura 1.0. Actorii unei aplicatii web

În cadrul acestui concept beneficiile sunt evidente:
 Prin permiterea de către un obiect de tip server de folosire a resurselor deținute de
acesta, de către alte obiecte client s e consimte un angajament al obiectului client de
utilizare a acestor resurse.
 Comportamentele sau metodele sunt cele care definesc modul de funcționare al
obiectului ca un întreg
 Funcțiile membru ale obiectului au în vedere caracteristici repezentate de ti pul returnat,
numele și lista de parametrii
 Comportamentele împreună cu motivația acestora constituie abstractizarea obiectului

10
Moștenirea reprezintă un pilon important în paradigma limbajului orientat obiect, pentru că
are în vedere extinderea funcțional ității unui concept într -un concept complet nou care are toate
comportamentele și calitățile conceptului de bază. Adițional informațiilor preluate din conceptul de
bază pot fi modificate calitățile și comportamentele existente sau pot apărea calități și
comportamente unice și specifice noului concept creeat, care nu vor fi întâlnite la alte concepte care
au preluat din același concept de bază.

Un avantaj concret al acestui mecanism îl reprezintă păstrarea unui principiu fundamental al
programării – Don't Repeat Yourself (DRY), cu sensul de a nu repeta același cod, ci de a-l refolosi
pe ce l existent, în vederea consistenței, coerenți și creșterii performanței codului scris de către
programator. Această repetiție poate fi evitată prin crearea unui mecanism de tip moștenire care
automatizează procese le care au corespondența în lumea reală și testare a aplicațiilor existente
folosind instrumente de tipul nUnit sau alte elemente specifice dezvoltării aplicațiilor.

În C# definirea moștenirii unei clase se bazea ză pe specificarea unui modificator de acces
(public, private, protected, internal, protected internal), utilizarea cuvântului cheie “class” și semnul
de moștenire executat prin folosirea a două puncte după denumirea clasei care se dorește a fi
construite , urmate de numele clasei de la care se face moștenirea precum în cazul exemplului de
mai jos:

Noua clasă ChangeRequest va avea în acest fel toate operațiile clasei WorkItem, cât și a
membrilor acesteia. Trebuie reținut faptul că dacă cele două pun cte lipsesc, moștenirea se va face în
mod implicit de la clasa Object, care reprezință superclasa tuturor claselor existente în cadrul
limbajului C#. Deși este o îmbunătățire a limbajului C++, în cadrul C# moștenirea multiplă nu
reprezintă o opțiune viabil ă.
Observație: Este cunoscut cazul problemei de diamant (en: Diamond Problem) în care o
clasă A este extinsă de către o clasă B și o clasă C, și există o clasă D care implementează ambele
clase, iar clasa A exista o metodă Test() care este implementată d iferit în clasele B și C, la crearea
unui obiect de tipul clasei D și accesarea metodei Test(), de la care dintre cele două clase va știi
compilatorul să invoce comportamentul de tip Test()? De la clasa B sau de la clasa C?

Astfel ca pentru a ușura munca compilatorului în alegerea metodei care să fie invocată dintre

11
două clase care o implementează diferit, s -a decis ca moștenirea să poată fi doar singulară, în sensul
că o clasă să poată moșteni de la o singură clasă comportamentele și stările aferent clas ei. Totuși
moștenirea multiplă poate fi simulată prin ierarhii de clase. Astfel că o clasă poate avea o singură
clasă de bază, dar mai multe clase care o extind, având ca avantaje:
 funcționalitatea comună se grupează într -o clasă de bază
 reutilizarea func ționalității cu menținerea consistenței principiului DRY
 schimbările vor fi făcute într -un singur loc, eficientizând procesul de refactorizare a codului
 executarea de modificări care nu se doresc a fi general valabile, se vor face într -o clasă nouă,
care v a extinde funcționalitatea celei de bază, păstrând comportamentul și starea clasei de
baza intactă putând fi reutilizată în mod consistent de alta clase, presupunând respectarea
principiului OPEN -CLOSE

Polimorfismul reprezintă un mecanism care are în ved ere mai multe forme, cel mai simplu
mod de a privi în lumea reală fiind cel al unei singure monezi cu două fete diferite. Presupune
rescrierea unui comportament definit în superclasa, în tr-un mod diferit în clasele copil. În
vocabularul obișnuit al lumii reale existând conceptul de Animal care scoate un sunet la modul
general, dar care în clipa în care se creează corespondența cu un animal concret ca de exemplu o
Pisică, un Caine sau un Urs, sunetul va fi concretizat diferit. În limbajul programatic acest concept
se bazează pe ideea de supraîncărcare (en: overloading) pe de o parte și suprascriere (en:
overriding) aplicate metodelor.

Mecanismul de supraîncărcare este atins prin rescrierea metodei în cadrul aceleiași clase,
păstrând numele metodei, păstrân d sau modificând tipul returnat, dar fără echivoc prin modificarea
numărului său tipului argumentelor.
În schimb mecanismul de suprascrierea se realizează prin rescrierea a cel mult o dată a unei
metode în clasele copil cu păstrarea numelui metodei, al n umărului și tipului de argumente și a
aceluiași tip de return, dar cu drepturi de acces extinse.

Paradigma programării orientate obiect a apărut de fapt pentru satisfacerea nevoii de noi
tipuri, de dinamismul mediului cu care utilizatorul interacționează și cu prevenirea codului duplicat,
împiedicând astfel propagarea unor defecte și îmbunatatirea perfomanței echpei de dezvoltare.

12
1.2. Avantajele limbajul Orientat Obiect C#

C# reprezintă unul dintre limbajele orientate obiect existente pentru dezvolta re de aplicații
preponderent web, fiind foarte robust, iar faptul că a apărut dintr -o nevoie reală a dezvoltatorului
acestuia de a contracara minusurile celoralte limbaje existente, îl ajută să își dobândească un loc de
frunte în cadrul celor mai folosite limbaje, păstrându -și un trend ascendent de -a lungul anilor, dacă
raportarea se face privind siterile și forumurile de referință ale micilor și mărilor dezvoltatori
software. Robustețea acestui limbaj nu vine doar din faptul că acoperă minusurile celoralte limbaje,
dar vine și cu caracteristici pe care limbajele din aceeași categorie abia încep să le exploreze.

Deși reprezintă o îmbunătățire a limbajlui C și C++, C# se diferențiază de acestea printr -o serie de
caracteristici speciale :
 este compliat într -un limbaj intermediar independent de limbaj, care este comun și pentru
Visual Basic, J++ si altele;
 are un garbage collector, curățând memoria de obiecte care nu mai sunt folosite;
 capabilități de utilizare a unei caracteristici numita reflecție (en: reflec tion) care presupune
obținerea informațiilor privitoare la tipul unei variabile la runtime;
 nu mai există fișiere “.h”;
 definirea claseor și a funcțiilor poate fi făcută în orice ordine;
 nu există dependințe circulare;
 nu există funcții globale sa u variabi le, touul aparține unei singure clase;
 toate variabilele sunt inițializate cu valoarea default înainte de a fi utilizate (prin intermediul
constructorilor);
 nu se pot folosi variabile de tip integer, double, etc ca și condiții, reușind să fie mai curant și
ferit de erori.

Fiind creat ca o îmbunătățire a limbajului C++, C# are avantaje și în ceea ce privește limbajul Java:
 este mai eficient și rulează mai rapid
 are mai multe tipuri primitive (are în plus Decimal, DateTime și Strâng)
 indecșii permit accesare obiectelor ca și cum ar fi vectori
 compliare condiționată
 multithreading simplificat

13
 existența pointerilor , spre exemplu pentru cazul în care se apelează librării native care nu
 rulează peste mașina virtuală
 existența proprietăților care sunt o variantă rapidă și flexibilă de a folosi în mod :
1. implicit citirea și scrierea

2. explicit prin efectuarea de calcule adiționale asupra variabilei care este de fapt
ascunsă

 utilizarea uni tip generic “ var” care amintește de limbajul JavaScript, p rin intermediul căruia
se detemina tipul variabilei inițializate în mod dinamic.
 existența unui atribut denumit “ dinamic ” care detemin ă la run -time tipul unei variabile,
comportându -se ca și cum ar avea tipul general “object”.

 conceptul de readonly , prin intermediul căruia se restricționează capacitatea de modificare a
variabile i după declararea acesteia. Readonly este asemănător tipu lui const, insă poate fi
declarat fără asigna rea unei valoar i sau aceasta poate fi modifica tă în constructor.
 existen ța conceptului de proprietate 1(en: Property), care reprezintă de fapt un membrul al
unei clase care reda mecanismul de citire, scriere și calculare a valorii unui câmp privat,
incuzând metode speciale de tip set și get, cunoscute sub numele de accesori i.

1 http:// www . asp.net/whats -new

14

 indexeri2 prin intermediul caroara se permite obiectelor să fie indexate ca un vector. Spre
exemplu clasa String este de fapt un vector de obiecte de tip Char, fapt pentru care orice
caracter poate fi accesat prin intermediul indexului :

Indexerii sunt asem ănători proprietățil or, însă diferența este că un indexer are nevoie de un
index. În cazul indexerului trebuie avută în vedere reprezentarea clasei sub forma unei
colecți i, liste sau un vector de obiecte. Deși modul de definirea al unui indexer se face
asemănător cu cel al unei proprietăți, numele este mereu același cuvânt cheie “this” urmat
de parateze drepte, tipul și numele indexului ce va fi returnat și setat.
class Clienți{
private[] șir Nume = new string[10];
public string this[int index]{
get{return șirNume[index]}
set{șirNume[index] = value;}
}}
 supraîncărcarea operatorilor pentru cazul în care se dorește spre exemplu adunarea
obiectelor unei clase, se va scrie o metodă de supraîncărcare, care va redefini acțiu nea
pentru operatorul dorit. Pentru definire se asigură folosirea cuvântului cheie static și a

2 http:// www . asp.net/whats -new

15
cuvântului cheie operator, urmat de simbolul operatorului ce se dorește a fi definit.

 folosirea expresiilor Linq , care au apărut abia de curând în cad rul lansării ultimei versiuni
Java 8, reprezint ă o modalitate de interogare inspirat ă din interogările pe baz a de date pentru
obiecte. Acest mecanism ajută la o filtrare rapidă și eficientă, ordonare, și grupare a
operațiilor pe date sursa (en: data source s) cu efort minim.
class LinqQueryExpr{
static void Main(){
int[]scoruri = new int[]{97, 92, 81, 60};
IEnumerable <int> scoruriQuery = from scor in scoruri where scor > 80
select score;
foreach(i nt scor in scoruriQuery){
Console.WriteLine(scoruri + “”);
}
}//va afisa: 97, 92, 81
}
 folosirea metodelor asincrone prin cuvintele cheie “ async -await ”, iar tipul de return este
Task sau V oid. Modul de funcționare asincron utilizat î n C# este exemplificat în figura 1.2 :

Figura 1.2. Fluxul de transmitere al controlului in mod asincron
C# este mult mai bine integrat și configurat pentru a funcționa cu Microsoft, decât în cazul

16
reprezentat de Java cu Oracle.
Deși părerea gene rală este că C# este o proprietate Microsoft, atât C# cât și frameworkul
.Net se supun standardelor ECMA și ISO existând și câteva patentări Microsoft referitoare la C# și
CLI, însă pentru alte implementări ale mașinii virtuale și compilatorului există fl exibilitatea
dezvoltării pe cont propriu. O altă părere generală este că C# este menit doar pentru Windows, acest
lucru fiind adevărat numai pentru mediul de dezvoltare Visual Studio și Windows Forms, care nu
fac parte din standard. Se pot scrie aplicații multiplatformă, inclusiv aplicații cu interfață grafică
care folosesc GTK+, QT/KDE și alte librării grafice care nu necesită librăria Windows. Aplicațiile
pot fi dezolvatate și sunt dezvoltate des pentru GNOME în IDE cum ar fi MONO, care are o mașina
virtu ală implementată și include un complier C#, fiind un software gratuit care rulează pe sisteme
de operare și arhitecturi variate.

17
CAPITOLUL 2
Arhitectura .NET

Revoluționara arhitectura .NET a fost lansată acum zece ani. Este foarte flexib ilă, cu
posibilitatea scrierii unei componente într -un limbaj și apelarea ei din alte limbaje fără a
interacționa cu obiectele de tip COM (Component Object Model), care reprezintă în fapt o interfață
binară standard pentru componente software introdusă de Microsoft la începutul anilor nouăzeci.

O arhitectură (en: framework) reprezintă un instrument cu ajutorul căruia se pot construi
aplicații din cele mai diverse, fiind responsabil cu livrarea tuturor serviciilor necesare pentru diferite
aplicații. Spre exemplu .Net dă posibilitatea aplicației să interacționeze cu baza de date sau cu
fișiere xml în vederea livrării de informații. Ace astă arhitectură se adresează unor domenii diverse
care au în vedere criptografierea, configurarea sau comunicarea prin inte rmediul rețelelor.

Motivația folosirii acestei arhitecturi generic e este o reprezintă experiența limbajului si
usurința de construire a unei palete diverse de aplicații tip web livrând date către browserele web,
dar și robustețea arhitecturii care se pre tează la o varitate de aplicații desktop cu butoane pe ecran,
pe care utilizatorul le poate utiliza, aplicații de tip Windows Services, procese prin care utilizatorul
nu intractioneaza in mod direct, dar ajuta imbunatățirea performanței prin crearea de pro cese de tip
batch (en: batch processes) sau monitorizarea unui director și procesarea fișierelor asignate.

Este de remarcat faptul ca aplicatiile scrise in C# ruleaza cu ajutorul arhitecturii .Net3, fara a
implica concluzia conform careia aceasta arhite ctură trebuie instalat ă pe calculator ul unde se
doreste rularea aplicației , deoarece sistemele de operare Windows au aceast ă funcționalitate
integrat ă, trebui nd doar oferite permisiuni. .Net ofera posibilitatea scrierii aplicatiilor, a serviciilor
sau a li brariilor intr -un mod rapid, corerent și usor de reutilizat, repezentand o varianta utila de
impachetare codului și reutilizare de -a lungul diverselor aplicatii.

3 http://www.asp.net/aspnet/overview/web -development -best-practices

18

2.0.0 Figura reprezentand componentele arhitecturii .Net

Reprezentând un arh itectur ă robustă, .Net se imparte două mari componente, după cum se
pot identifica din figura 2.0.0, ilustrate specific în cadul figurii 2.0.1 :
 Common Language Runtime (CLR)
 Framework Class Library(FCL)

Figura 2.0.1. Componentele de baza ale arhitec turii .Net

Conceptul de Common Language Runtime (pe scurt CLR) reprezintă în fapt un mediu de
execuție pentru pentru aplicațiile .Net. Misiunea acestei componente o reprezintă pornirea aplicației,
managementul în timpul execuției a resuselor folosite, câ t și distrugerea aplicației în cazul
sfârșitului execuției sau ajungereii acesteia într -un stadiu nerecuperabil.

Figura 2.0.2. Componenta CLR (Common Language Runtime)

Managemetul memoriei (en: Memeory management) reprezintă una dintre modalități le de
administrare oferite de CLR. Acesta are în vedere menținerea unei liste privind obiectele și memoria
solicitată pentru efectuarea operațiilor, iar în cazul pierderii scopului obiectelor din cadrul aplicației,
va intra în uz execuția unui program de c urațire (en: cleanup) astfel încât programul să continue să

19
aibe memorie suficientă pentru continuarea execuției.
O perspectivă a CLR4 este cea de mașina virtuală, amintind de Java Virtual Machine (JVM)
caratetistica limbajului Java. Modul de lucru al CL R este de virtualizare a mediului de execuție,
renunțând la preocuparea asupra versiunii sistemului de operare pe care rulează aplicația. Sistemul
de operare și independentă hardware reprezentând un alt avantaj al folosirii CLR, presupune grijă
pentru asp ecte referitoare la execuția corectă și completă a aplicației prin alegerea tipului de CPU,
calculatea numărului de coruri necesare și a instructunilor folosite. Independența față de limbajul de
programare presupune posibilitatea scrierii programelor în tr-unul din limbajele C#, Visual Basic, F#
sau Python, considerate a fi aplicații .Net fiind administrate de către CLR. Cu excepția dezvoltării
bazată pe Windows Phone, unde aplicațiile rulează doar pe Windows Phone, nu există restricții
pentru restul aplic ațiilor.

Arhitectura de tip librărie de clasă sau Framework Class Library (FCL) reprezintă un alt
mecanism folosit de către arhitectura .Net în construirea aplicațiilor conform figurii 2.0.3.

Figura 2.0.3. Componenta FCL (Framework Class Library) și interacș unile cu mediul extern

În timp ce CLR este văzut ca un proces încapsulat care rulează rulează în spatele aplicației,
FCL va fi folosit de către dezvoltator pentru operații curente. FCL reprezintă în fapt o librărie care
conține o serie de cl ase folosite pentru construirea de aplicații. Se poate considera c ă CLR este un
instrument pentru rularea aplicațiilor, iar FCL un mecanism care dă baza de componente software
pe care să fie constuit ă aplicația. Fiind un mecanism se comporta ca o librărie , paleta de posibilități
are în vedere funcționalități precum parcurgerea textului, expresii și comunicarea cu sockets în
interiorul rețelei. De remarcat este existeta unor clase din Windows Communication Foundation
(WCF), care permit scrierea de web servi ces care permit calculatoarelor să comunice direct și să

4 Joseph Albahari, Ben Albahari ,C# 5.0 in a Nutshell: The Def initive Reference, pagina 1 -3,
Editia a V -a, Editura O'Reilly Media, 2012

20
schimbe informații, ajutând userul să aibe o experiență dintre cele mai plăcute la navigarea pe
diferite pagini prin intermediul browserelor.

Librăriile FCL sunt librării foarte puternice, vaste și complexe, de aceea este recomandată
specializarea pe o anumită librărie în vederea însușirii informațiilor referitoare la acea librărie.
Utilizarea cea mai des întâlnită a unui FCL obișnuit este cea pentru dezvoltarea aplicațiilor Desktop.
ASP.NET repr ezintă un alt subset al FCL, care este special creeat pentru a rula în mod unic pe
servere web.

2.1. ASP .NET

ASP.Net reprezintă o arhitectură (en: framework) gratuit ă pentru dezvoltarea siteurilor și
aplicațiilor web cât și a serviciilor web (en: web services) folosind HTML, CSS, JavaScript și un
limbaj orientat obiect. Reprezintă în fapt o tehnologie pentru dezvoltarea, integrarea și rularea
aplicațiilor web.

Această arhitectură introduce un model nou de execuție de tip orient obiect. Motivația
creării arhitecturii ASP.NET este motivată de dorința îmbunătățirii și acoperirii lipsurilor data de
vechiul Active Server Pages (ASP), care reprezent ă scripturi de tip server pentru generarea
dinamică a p aginilor web utilizând Visual Basic sau JavaScript.

ASP.NET pune la dispoziție o serie de instrumente și tehnologii necesare pentru construirea
de aplicații web distribuite. Este integrat cu Visual Studio, oferind o interfață grafică, instrumente de
lucru și un sistem de depanare complet integrat. Permit e scrierea codului HTML în fișier cu
extensia .cshtml și a logicii care să fie folosite în fișiere cu extensia .cs.

De remarcat este introducerea de către Asp.Net a două seturi de controlere denumite
controlăre server:
 controlerele HTML
 controllere We b sau controllere server (en: server controls)
ASP.NET reprezintă o reinventare a vechiului framework modular ASP.NET, care folosește
noul compilator gratuit .Net (“Roslyn”) și poate fi ușor adaptat oricare i platforme.

21
Acest framework are în vedere o ser ie de funcționalități de tip MVC, Web Api și Web Pages
(ro: pagini web), care curând au fuzionat dând naștere unui singur concept unificat – cel de MVC 6.
Deși se bazează pe tradiționalul ASP.NET, pentru integrarea codului C# în paginile .cshtml,
s-a impl ementat un mecanism numit Razor care folosește elemente tip “@” urmat e de sintaxa C#:
<body>
<h1> Pagina de start </h1>
<p> Este ora @DateTime.Now</p>
</body>
În cazul anterior funcționalitatea arhitecturii Răzor va detemina data și ora serverului și o va
afișa în formatul standard, fără modificări adiționale.
Exista o serie de configurari denumite directive, care reperezintă instrucțiuni speciale
referitoare la modul de procesare al paginilor web, prin inregistrarea acestora intr -un fisier special
numit “Web.config” în forma:
<configuration>
<system.web>
<customErrors mode = “On”/>
</system.web>
</con figuration>

Controlerele de tip user (en: Us er Controls) reprezintă de fapt o încapsulare a secțiunilor din pagini
care au rol de control în ASP.NET.

Tehnicile de afișare (en: Render techniques) specifice fișierelor cu extensia .aspx sau .cshtml
reprezintă metode de compila re la inițializarea co dului construi nd un abrore de control. Textul este
integrat în instanțele abstractizărilor de control literal și a supervizorului de server (control server).
Inițializarea codului reprezintă o combinație a codul scris pentru utilizator (de obicei prin
asam blarea mai multor clase parțiale) și a rezultatelor din cadrul unei pagini. Una dintre
funcționalitățile paginii este cea de rădăcină a arborelui de control.

Cererile actuale ale paginii sunt procesate într-un număr de pași. În primul rând în timpul

22
inițializării pașilor, o instanță a paginii de clase este creată și inițializarea codului este executată.
Acest lucru produce abrorele de control inițial care este acum manipulat de metodele paginii în pașii
următori. Fiecare nod din arbore reprezintă un contr ol al unei instanțe de clasă, însa la nivel
programatic se poate schimba structura arborelui ca și manipularea proprietăților/metodelor aferente
nodurilor individuale.

În final în timpul afișării/interpretării pasului unui vizitator este folosit pentru a vizita fiecare
nod al arborelui, cerând fiecărui nod să se autoinerpreteze/afișeze folosind metode ale vizitatorului.
HTML -ul rezultat este trimis a client. După procesarea cererii, instanța paginii este eliminată și
împreună cu ea, întreg controlul abor orelui.

Administrarea stării (en: State management) este făcută de către aplicația ASP.NET la nivel
de server web și este accesata prin intermediul protocolului HTTP. Dacă o aplicație folosește HTTP,
trebuie să implementeze administrarea stării. ASP.NET are o serie de funcții pentru administrarea
stării. Stare a sesiunii pe partea de server este deținută de o colecție de variabile de tip sesiune
definite de către programator care sunt persistente în timpul sesiunii. Acest tip de variabile sunt
accesate fo losind colecția Session, fiind unice pentru fiecare tip de instanță. Variabilele pot fi setate
automat să fie distruse după o perioadă de inactivitate, chiar dacă sesiunea nu a expirat. Partea de
client este menținută prin intermediul unui cookie sau prin incodarea idului sesiunii chiar în url.

Modul în procesare (en: In -process mode) are în vedere c a variabilele să fie menținute în
interiorul procesului ASP.NET pentru rapiditatea operațiilor. Totuși această abordare determină
distrugerea variabilelor în momentul reciclării sau închiderii procesului ASP.NET.

Starea server (en: state server mode) din cadrul ASP.NET se bazează pe un serviciu separat
de Windows care menține starea variabilelor. Deoarece administrarea stărilor se întâmplă în afara
procesului ASP.NET și pentru că motorul ASP.NET accesează informațiile folosind .NET Remote,
starea ASP este mai lentă decât cea în proces.

Sesiunile în ASP.NET îți dau posibilitatea de a reține și a regăsi valori pentru un anumit
utilizator pe măsură ce navigare a se extinde pe diverse p agini din cadrul aplicației web. Deoarece
există un protocol fără stare (en: stateless) de tip HTTP, serverul web tratează fiecare pagină ca pe o

23
cerere independent ă, nereținand vreo informație referitoare la cererile anterioare.

Sesiune ASP.NET indentifică cereri de la aceeași pagină web într -un interval limitat prin
intermediul unei sesiuni și primirea unei modalități de persistență a valorii variabielor pentru durata
sesiunii. Sesiunile sunt autorizate în mod implicit în toate aplicațiile Asp.NET.
Alternative la sesiuni sunt:
 sesiunile de tip aplicație – rețin variabile care pot fi accesate de către toți userii aplicației
 proprietarile de profil care rețin valorile datelor fără ca acestea să expire
 cache – retine valori în memor ie care sunt valabile pentru toate aplicațiile .Net.

Starea de veghe (en: view state) care persistă valorile în pagina :
 cookie
 query strings – utilizate pentru formulare html care sunt valabile pentru o cerer i HTTP.

O pagină web putea avea una sau mai multe pagini de tip master, care reprezintă înlocuitori
dinamici (en: placeholders), prin intermediul cărora să se decidă ce conținut să fie adauga t în
pagina Html și pentru procesarea de tip JavaScript în toate paginile copil. Paginile master râman
accesibile conținuturilor paginilor, însa conțnutul paginilor poate manipula în continuare
informațiile din header, schimbarea titlului, configurarea cachingului, etc.

Structura minimală a unui proiect predefinit în cadrul Visaul Studio este:
 App_Code repezi nta un director de bază, unde serverul Asp.Net compilează fișierele în mod
automat în fișiere de tip assambley, care sunt accesibile în codul fiecărei pagini a siteului.
 se folosește pentru accesare abstractă a datelor sau logic ii business .
 o alternativă l a acest folder o reprezintă existența unui asembley precompilat
 App_Data reprezintă un director implicit, fiind singurul director cu drepturi de scriere
implicite și este folosit pentru bază de date folosită în aplicațiile Asp.Net
 Sql Server – mdf
 Access – mdb
 App_GlobalResources conține resurse global valabile pentru orice pagină din site.
 App_LocalResources conține diferite fișiere în funcție de limba folosită sau aleasă de
utilizator pe site, informațiile vor fi redate într -una dintre limbile specificat e

24
 App_Offline reprezintă un fișier care decuplează aplicația returnând conținutul fișierului
pentru orice cerere a aplicației
 Bin conține fișierele de tip “.dll” care conțin cod compilat și cod care referențiază aplicația,
orice alte case referențiate în acest folder sunt vizibile în întreaga aplicație.

Performanța ASP.NET este redată prin introducerea compliarii la nivel de server a codului
folosit pentru prima dată într -unul sau mai multe fișiere de tip “.dll”. Aceste fișiere de tip “.dll” sau
“assemb lies” conțin Microsoft Intermediate Language (MISL), adică limbaj intermediar al
Microsoft pentru a rula împreună cu CommonLanguage Runtime (CLR), care dă un impuls de
performanță asupra limbajelor pur scriptice și este similar cu abordarea folosită de Pyt hon și cu cea
folosită de către Jav a Server Pages (JSP). Compliarea se face în mod automat în momentul primei
cereri a paginii, fără o compliare separată a paginii, ajutând astfel la o dezvoltare ușoară și o
performantă datorită compilării binare. Totuși c ompliarea poate cauza o întârziere notabilă când
nouă pagină editată este cerută pentru prima dată către serverul web, care va fi din nou observabilă
la următoarea modificare, urmând a se face o nouă cerere către server.
Fișierele cu extensia cshtml se re găsesc într -un host virtual Internate Information Services
(IIS) care funcționează în felul următor:
 prima dată când se face o cerere către server a unei pagini,.Net parcurge și compilează
fișierul într -un “assembley” .NET și trimite răspunsul;
 răspunsuri le ulterioare sunt preluate din fișierele “.dll” ș
 ASP.NET compilează întreg siteul în loturi de câte 1000 de fișiere în cadrul primei cereri
 dacă compliarea întârzie, mărimea loturilor sau strategia de compliarea poate fi reluată
 se poate face precompilare a codului, eliminând efectul de JIT (Just -In-Time compilation)

ASP.Net are o serie de extensii :
 AJAX reprezintă o extensie la nivel de client și de componențe server, pentru scrierea
paginilor care încorporează funcționalitatea AJAX
 MVC folosește arhite ctura Model – View – Controller
 Razor reprez entate prin pagini web folosite în cadrul MVC
 Dynamic Data este o extensie de structura pentru construirea aplicațiilor web bazate pe date
 WEB API reprezintă un framework HTTP pentru a expune serviciile web.
 ASP. NET SignalR este un tip de comunicație în timp real la nivel bidirecțional client -server.

25
Beneficiile ASP.NET sunt multiple:
 existența codului compliat care presupune că aplicația rulează mai rapid și sunt prinse
erorile încă din stadiul de dezvoltare
 îmbunătățirea tratării erorilor, prin folosire blocurilor try -cach
 abordări similare cu aplicațiile Microsoft cum ar fi controlerele și evenimentele
 un set se controlere și librării care permit construirea rapidă a aplicațiilor.
 abilități multi -language speci fice CLR pentru pagini să scri se în VB, C#, J#, Delphi
 abilitatea de a face cache pe toată pagina, sau doar pe o parte din pagină
 dezvoltarea modelului în vederea separării logicii de prezentare
 folosirea paradigm ei orientării obiect pentru programarea paginilor și a controlarelor
 sesiunea poate fi salvată în baza de date sau într -un proces separat, astfel că sesiunile nu sunt
pierdute în cazul în care procesul este reciclat.
 versiunea 2.0 controlerele HTML/JS generate sunt valide, în funcție de configurare a siteului.
 IIS pipeline integrated – în IIS 7.0 aplicațiile pot rula pe fire de execuție integrate care
permit scrierea aplicațiilor în orice limbă și pentru orice fel de cerere.

2.2. Entity Framework

ADO.NET reprezintă un set de librării orientate obi ect care permit interacțiunea cu datele
din cadrul unei baze de date sau a unui fișier de tip Excel sau Xml. Scrierea codului cu ajutor ul
ADO.Net poate ajunge să fie un lucru obositor și chiar plictisitor, însă Microsoft a anticipat acest
lucru și a venit în sprijinul dezvoltatorilor .NET cu o variantă frumoasă bazată pe ORM (en: Object
Relațional Mapping), adică pe maparea relațiilor dintre obiecte, denumită Entity Framework.

Entity Framework vine în sprijinul programatorulor prin automatizarea activită ților legate de
baza de date. Acest lucru vine cu o serie de avantaje de necontestat, care au schimbat abordările
tuturor limbajelor de programare în cazul interogării pe obiecte. În acest sens a fost introdusă o
facilitate care să ajute efectuarea de inte rogări pe obiecte denumită generic LINQ (en: Language
Integrated Query). Această facilitate este integrată perfect cu Entity Framework.

26
Printre avantajele evidente oferite de către Entity Framework se regăsesc:
 lazy loading, care permite legarea obiecte lor de entitatea corectă doar la runtime, ajutând la
folosirea memoriei în mod performant și inteligent.
 ținerea evidenței modificărilor petrecute în cadrul bazei de date
 rezolvarea problematicii referitoare la identity prin particularizarea modelului de b ază
 interpretarea interogărilor astfel încât programatorii să se poată focusa pe partea de logică și
nu pe lucruri care țin de modul de accesare a datelor.
Arhitectura de tip Entitate (en: Entity Framework) comunică cu baza de date folosind Ado.Net.

Figura 2.3.2. Straturile pe care este construit Entity Framework și modul de utilizare

Există trei abordări de folosire a Entity framework:
 dacă baza de date există deja
 dacă mai întai se creează clasele de domeniu și apoi baza de date
 baza de date este p roiectată cu ajutorul visual designer și abia apoi se creează baza de date
propriu -zisă și clasele de domeniu.

Figura 2.3.0. Modul de folosire a Entity Framewok în corelație cu modelele bazei de date și clasele
corespunzatoare din aplicație.

Conf orm exemplului din figura 2.3.0. se pot corela ideile :
 in prima instantă Entity Framework creează clasele de domeniu cu ajutorul bazei de date
 in cea de -a doua abordare Entity Framework creează clasele de domeniu și apoi baza de date
 iar in cea de -a treia, pe baza unui proiectator de modele se poate construi bază de date și
apoi creată baza de date propriu -zisă pe baza modelului proiectat.

27

Entity framework reprezintă o modalitate de mapare relatională sau ORM(Object Relational
Mapping) care reprezintă un mecanism pentru reținerea datelor aferente obiectelor de domeniu în
baza de date (ex: MS SQL SERVER), într -un mod automat și facil, care include trei parți:
 Clasele obiect de tip relational (en: Domain class objects),
 Obiecte relaționale din baza de date (en: Relational database objects)
 Informații de mapare (en: Informational Mapping), privitoare la modul de mapare al
obiectelor relationale la obiectele bazei de date

ORM permite separarea laturii de design de cea de proiectare a claselor de domeniu cat si
automatizarea operațiilor de tip CRUD (Create, Read, Update si Delete), fapt ce face aplicația usor
extensibilă si mentenabilă.

Figura 2.3.1. Modul de comunicare de tip Object Relational Mapping (ORM)

Există și alte ORM ca spre exemplu DataObjec ts.NET, Nhibernate, OpenAccess sau
SubSonic. De remarcat avantajul Entity framework comparativ cu celelalte softuri, fiind un un soft
gratuit și deschis modificărilor și îmbunatatirilor de catre comunitatea .NET.
Arhitectura Entity Framework are în vedere o serie de elemente:
 EDM (Entity Data Model) – care consta în trei parți principale:
 Modelul Conceptual
 Maparea
 Modelul memorat
Modelul conceptual conține modelul claselor și al relațiile dintre ele, model care este
independent de proiectarea tabelelor din baza de date.
Modelul memorat reprezintă proiectarea modelului bazei de date cu tabele, vederi (en:
views), proceduri stocate, key și legăturile dintre ele.
Maparea are în vedere modul în care modelul conceptual va fi integrat cu modelul stocat.

28
2.3. LINQ

Acronimul Linq își are numele din Language Integrated Query. Prima parte Language
Integrated se refera la faptul ca LINQ este partea a sintaxei programatice, astfel ca C# și VB au
aceste capabilitati. Iar Linq este folosit pentru a face interoga ri pe date, putand fi folosit pentru o
varietate larga de date cum ar fi: tipuri relationale, tipuri xml și obiecte.

Mai mult decât atât Linq poate fi folosit împreună cu un fluent API5, care are în vedere un
lanț de apel de metode. Majoritatea aplicații lor lucrează cu date într -un mod sau altul, astfel ca peste
tehnologia ADO.NET a apărut tehnologia revoluționară Linq.

Linq are o sintaxă asemănătoare cu sql care produce obiecte ce pot fi folosite și ajută la
reducerea Impedence Mismatch și nu la elimin are pentru că încă este nevoie de informații
referitoare modul de stocare al datelor. Un exemplu de Linq to object:

Principalul scop al Linq este cel de ușurare a interogărilor pe date. Cea mai populară metodă
de folosire a linq este cea d e interogare a bazei de date relațională, însă și obiectele. În .Net există
librării care permit oricui să creeze furnizori de Linq care pot face interoga ri orice tip de dată.
Microsoft a gândit la o varietate de metode de interogare:
 LINQ to Objects,
 LINQ to XML,

5 http://www.datanamic.com/support/lt -dez005 -introduction -db-modeling.html

29
 LINQ to SQL (SQL Server),
 LINQ to Entities (Entity Framework).
 Linq custom – ex: Linq to Twitter.

În concluzie Linq ajută la reducerea Impedence Missmatch între datele reținute și obiectele
de zi cu zi. De reținut că este foarte flexibil, pu tând fi reținut cu multe tipuri de date.

2.4. Noutăți

Noutățile în domeniul .Net sunt vaste, fiind o structură atat de complexă și incluzand atatea
varietati de informații într -un mediu atat de dinamic.
O structură succintă a ultimelor noutati în domeni u ar fi urmatoarea:
 Cache Distribuit (en: Distributed Caching) gandit pentru aplicatiile de tip Cloud și care
folosesc cartile electronice Azure
 Posibilitatea dezvoltarii aplicațiilor folosind Web Matrix template
 Abstractizari de tipul SignalR pentru aplic atii web ce imbunatatesc experienta cu userul
 ASP.MVC 5 cu SMS și email pentru a activa optiunea de “Two -Factor Authentication”
 Aplicații care pot fi dezvoltate și pe MAC
 Integrare ASP.NET Web Api și Angular .js
 Ghiduri privind folosirea de Huburi API cu SignalR
 Middleware
 Model Binding
 Injectarea serviciilor in View -uri
 Tag Helpers
 Identity
 Nano Server
 Partial Views
Aceste informații reprezintă doar o mica parte dintr -un organism în plina creștere și dezvoltare.

30
Capitolul 3
Tehnologii web și securitate

3.1. Tehnologii web

Internetul este într -o continuă transformare de mulți ani, aplicațiile web având o
interactivitate crescândă și variată. Însă dezvoltarea acestor tipuri de aplicații web cere folosirea
unor vaste instrumente. Majoritatea instrumentelo r pentru interfața grafică a aplicațiilor web se
bazează pe arhitectura Java Script. Crearea unei aplicații web presupune cunoașterea atât a
tehnologiilor valabile ponetru interfața grafică, cât și a celor referitoare la partea server a aplicației
și cores pondența acesteia cu baza de date.

3.1.1. Hyper Text Markup Language (HTML), CSS și JavaScript

3.1.1.1. HTML

Reprezintă un standard de scriere a păgânilor web care se bazează pe etichete predefinite,
care descrie un document cu conținut modificat. Aces te etichere sunt în mod uzual inserate în pagini
web în vedere afișării informației pe web.
O parte dintre aceste elemente apar în gurpuri sau sunt unice:
 în grupuri de cate doua, avand atat etichetă de deschidere <eticheta>, cat și de închiere
</eticheta >, ca de exmplu eticheta de tip formular.


 fără eticheta de închidere <eticheta/> ca de exemplu eticheta de tip input.

Standardul de scriere HTML este recomandat de către Consortiumul World Wide Web
Consortium ( W3C) și este în mod natural agre eat și integrat de toate browserele.
HTML reprezinta de fapt o modalitate de marcare a modului de prezentare a documentelor

31
text, prin intermediul unui mecanism de redare specializat numit agent utilizator HTML, cum este
spre exemplu bowserul web. Acest limbaj este utilizat atât în cadrul paginilor web, dar și a
transmiterii de e -mailuri. Documentele care folosesc acest mecanism de etichetare au extensia
".html", ".cshtml" pentru aplicațiile scrise în C# sau varianta mai veche de "htm".

De-a lungul tim pului s -au dezvoltat multiple versiuni îmbunătățite, ultima fiind cea de Html
5, acici fiind excluse o serie de etichete cum este cea de <center> dar adăugând noi etichete cum ar
fi cea de <buton>, <canvas>, <audio>, <video>.

Un exemplu privind integrar ea de elemente de metadata, care au în vedere indexarea și
modul de afișare a unei scurte descieri a paginii web, ajutând astfel bowserul la indexarea acestei
pagini.
<meta name = “description ” content = “Un ghid pentru folosirea metadata ”>
<meta name = “author ” content = “Roxana Sichitiu ” >

3.1.1.2. Cascading style sheets (CSS)

Reprezina un mecanism prin intermediul căruia se aduce o îmbunătățire prin formatarea
scheletului de dezvoltare al paginii web, reprezentat de HTML. Modalitatea de îmbunătățire se
poate face atât inline, direct în interiorul paginii HTML prin scirerea codului css, sau prin
intermediul unor etichete p ereche de tip <style></style> care prin intermediul etichetelor definite în
cadrul HTML să folosească clase sau iduri definite în cadrul paginii HTML pentru modificarea
aspectului interfeței cu utilizatorul.

Cel mai nouă varianta de css, cea de CSS3, r eprezintă o variantă mult îmbunătățită față de
cele anterioare prin adăugarea unor elemente de tip selector, box model, background and borders,
text effects, animații, și altele. O proprietate frumoasă CSS pentru o utilizare perfomanta a
aplicației, este c ea de “minifiere”, adică eliminarea spațiilor și redenumirea variabilelor prin
intermediul unor proceduri de tip Less sau Sass, fiind create fisiere cu extensia „. min.css ”.
În concluzie CSS reprezintă o modalitate inedită de a schimba în totalitate pagini le web și
redă un suflu cu totul nou aplicației web.

32
3.1.1.3. JavaScript (JS)

Reprezintă un limbaj din categoria limbajelor orietate obiect, însă este unic prin modul de
abordare reprezentând în fapt un limbaj de scripting, fapt sugerat de etichetele păr eche de tip
<script></script> folosite în momentul înserării în cadrul paginilor web a elemetelor de acest tip.

Limbajul JavaScript rulează pe partea de client a aplicației, folosit pentru a decide
comportamentul paginilor web la efectuarea unei acțiuni pe o anumită pagină. Fiind uneori greșit
confundat cu Java, JavaSCript reprezintă o modalitate de programare dinamică a p aginilor web
bazată pe construirea de obiecte. JavaScript poate constui metode procedurale dar și orientate
obiect, prin simpl a adăuga re de proprietăți și metode obiectelor care sunt goale la runtime,
deosebindu -se astfel de limbajele care necesită compilare cum sunt : C++, Java, C#. Bowserele au o
proprietate de reținere a informațiilor de pe pagin a web sub forma unui arbore de obiecte , numit și
DOM, care ulterilor pot fi citite și manipulate de care JavaScript.

Tendințe le de dezvoltare ale JavaScript au migrat spre limbaje precum Jquery și Ajax
(Asynchronous JavaScript and XML ). Jquery are integrat atât informații HTML, CSS cât și
informații JavaScript, pentru o utilizare rapidă și concisă a limbajului JavaScript. Modul de scriere
al acestui limbaj este în linii de cod mai puține comparativ cu JavaScript, prin integrarea codului în
cadrul unor metode build -in care sunt apoi apelate î n mod simplu. De asemenea Jquery foloseaste
Ajax, care reprezintă o modalitate de actualizare doar a anumitor părți din cadrul paginilor web, în
vedere consumării de resurse cât mai reduse și a maximizării rezultatelor.

Pe baza acestor mecanisme au fost create diverse librării, care integrează la rândul lor
funcționalitatea în cadrul unor metode predefinite dând posibilitatea de a reda informații complxe
într-un mod simplu.

33
3.1.2. Bootstrap

Reprezintă o arhitectură aparută în 2011, creată de angaj ați ai Twitter, fiind printre cele mai
populare surse de aplicații web pentru partea de client având douăzeci de variante îmbunătățite.
Bootstrap reprezintă o colecție de elemente Css, Html și JavaScript pentru dezvoltarea de aplicații
web, fiind compatibi l cu cele mai noi versiuni ale bowserelor. O calitate frumoasă a acestui
mecanism de interacțiune cu utilizatorul pe partea de client, o reprezintă receptivitatea în cazul
redimensionării, fiind calibrat atât pentru veriunile desktop cât și pentru versiuni le de mobil.

Figura 3.1.2. Exemplu functionalități Bootstrap

Începând cu Versiunea 2.0 există un modul numit “Customize” reprezentând fișiere în cadrul
cărora sunt definite diverse componente, pe care programatorul le poate alege și modifică dup ă
nevoie. În cazul fișierelor de tip Css, Bootstrap vine cu o serie de fișiere care ajută la formatarea
textului, a tabelelor și a elementelor de pe formulare. În ceea ce privește elementele Html, Bootstrap
vine cu o serie de componente care sunt implement ate prin intermediul unor clase Css, și care
trebuiesc aplicate elementelor din pagina Html. În ceea ce privește JavaScript, Bootstrap vine cu o
serie de compoennte de tip Jquery, pentru o variantă îmbunătățită a elementeleor de interfață de
tipuri variate de la căsuțe de tip dialog, sugestii, functia de completare automată (autocomplete),
alert sau popover până la elemente de carusel, colaps sau modale.

Datorita versatilității acestui instrument p entru partea de interfață grafică a aplicației web,
echipa dezvoltatoare a Visual Studio a gândit integrarea automată a unei extensii in cadrul
proiectelor web.
În consecintă Bootstrap reprezintă o arhitectură puternică și performanță, fiind ușor de
folosit și care trebuie avută în vedere în momentul dezvoltări i aplicațiilor web.

34
3.1.3. Kendo UI

Kendo reprezintă o arhitectură care are în vedere un model de tip MVVM (model -view –
view -model) bazată pe JavaScript, care permite legături prin intermediul declarațiilor (en:
declarative binding) și sincronizări în amb ele sensuri în cadrul aplicației. Kendo mai asigură și alte
funcționalități cum ar fi șabloane, animații, dispozitive de tip “trage și plasează” cât și validări
felurite, foarte bine puse la punct.Kendo Ui reprezintă de fapt o colecție de scripturi, stilur i și
imagini.

Pentru a reuși să fie flexibil, dar și rapid, Kendo integrează o serie de tehnologii:
 JavaScript (folosită de mult timp în aplicatți pentru dezvoltarea unor lucruri frumoase)
 HTML5 (pentru standardizarea modului de programare a codului)
 CSS3 (ultima versiune de CSS care adaugă funcționalitate genx pentru stilizarea aplicațiilor)
 Jquery (reprezinta o librarie JavaScript care facilitează folosirea DOM)

Figura 3.3.1. Elemente integrante ale KendoUI

Ce aduce nou Kendo este o serie de exten sii HTML5, bazate pe Jquery, care este suportată de toate
motoarele de căutare:
 Web – extensii pentru partea de web și desktop, având tabele (en: grids) care sunt complet
funcționale cu paginare, sortare, filtrare, template -uri custom, vedere arborescentă (en: tree
view), editor ritch text și multe altele
 DataViz – sunt de fapt extensii de tip vizualizare, folosite pentru dezvoltarea de siteuri de tip
desktop, cât și mobile, folosite pentru a reprezenta datele sub forma de charturi sau
standarde
 Mobile – aceste funcționalități au în vedete tehnologii adaptative cum ar fi afișarea pentru
partea de iOS, Android și Blackberry, incluzând controlare cum ar fi scroll, derulare file
(en:tab strip), vederi sub formă de listă, butoane, bară de navigare și multe alte le

Kendo UI include surse de date pe partea de client, care are în vedere o abstracție în lucrul cu date

35
pe partea de client, fapt ce simplifică modul legarea datelor (en:data binding) și alte operațiuni.
Suportă informații locale cum ar fi obiecte de Jav aScript, date la distanță de tip XML, Json.

De reținut este faptul că Kendo Ui reprezintă tot ce este necesar pentru funcționarea unei
aplicații o aplicație, totul fiind integrat în cadrul unui singur pachet cu obiecte care lucrează foarte
bine împreun ă cu randament sporit, fără a fi nevoie de aplicații suplimentare pentru îmbunătățirea
aspectului aplicației dorite. Faptul că Kendo este foarte bine integrat cu ultimele versiuni de Internet
Explorer, Firefox, Chrome (aici cu toate versiunile), Opera și S afari, îl face un intrument foarte
versatil și de dorit în dezvoltarea aplicațiilor. Kendo este integrat atât pe toate versiunile de
Windows, cât și pe cele de
Mac, Android, IOS, Blackberry, HP WebOS.

Instrumentele de tip “widget” reprezintă de fapt o colecție de controlare HTML, care se
bazează pe Jquery, fiind sprecial concepute pentru web și variantele de atingere tactilă la nivel
perfomant.

Modul de întrebuințare este următorul:
 pentru un camp de tip input definit ca în exemplul de mai jos

 se va aplica asupra documentului Jquery funcția ready, iar în interiorul acesteia se va selecta
id-ul și se va aplica funcția kendo de alegere a datei, care inițializează obiectul ca fiind de tip
DatePicker.

Kendo UI reprezintă un instrument puternic dezvoltat pentru partea de relaționare cu
utilizatorul, fiind ușor de însușit și utilizat.

36
3.1.4. Bower

Bower reprezintă un mecanism de management al componentelor6 Css, Html și JavaScript,
fonturi și imagini. Principala funcție a acestei funcționalită ți este de a instala versiunea potrivită
pentru toate pachetele necesare și dependințele corspunzatoare. Modul de alocare al dependitelor și
de găsire a versiunilor corespunzătoare se face prin intermediul unui fișier de tip Json (JavaScript
Object Notatio n) “bower.json”, modul de folosire al pachetelor este lăsat la latitudinea
programatorului.

Bower este folosit de catre arthitectura Bootstrap deoarece este implementat într -o
modalitate de tip graf de dependițe, care reduce timpul de încărcare al pagin i web[1]. Fiind optimizat
pentru partea de client, în cazul în care multiple pachete depind de un anumit pachet, spre exemplu
Jquery, atunci Bower va face o singură descărcare a Jquery. Bower reprezintă un instrument pentru
linia de comandă, fiind în fapt un modul Node, folosește repository -uri de tip Git.
Structura directoarelor este sub forma urmatoare:

Figura 3.4. Structura directorului pentru o aplicație web

Bower reprezintă instrument important care un poate fi ușor integrat pentru cu o multitudine
de aplicații web atât complet dezvoltate, cât și integrat cu cele de tip Bootstrap, WordPress și altele.

6 https://bower.io/

37
3.1.5. Moriss

Acest concept reprezintă în fapt o librărie JavaScript care are în vedere o varietate de grafice
care pot fi implement ate cu ușurință. Graficele sunt în mod uzual bazate pe ideea de “Document
ready”, care se traduce prin așteptarea ca toate elementele păgânii să fie încărcate pentru a putea
începe desenarea propriu -zisă a graficului dorit.

Librăria Moriss.js este mereu folosita impreuna cu Libraria Raphael.js si vine cu o funcție de
redesenare “redraw()”, care integrată cu elementele de tip Bootstrap, poate determina ca partea
dorită din pagină sa fie încărcată și în acel moment se începe desenarea, neașteptând încărcar ea
întregii pagini. Acest lucru se întâmpla prin intermediul identificatorilor graficelor, prezente în
cadrul elementelor HTML. Prin intermediul JavaScript se determină pe ce element este poziționat
utilizatorul și se începe desenarea graficului aferent, a vând în vedere afișarea doar a acelor grafice
care sunt necesare și dorite.

Moriss.js reprezintă o librărie intuitivă și ușor de utilizat.

Figura 3.1.5. Exemple de grafice aferente librăriei Moriss.js

3.2. Securitate aplicației

Securitatea repr ezintă o modalitate controversată de a întâmpina o serie de probleme ce pot
apărea în cadrul unei aplicații web, datorate accesări unui număr nelimitat de utilizatori care din
lipsă de cunostiinte sau în mod voit afectează bună funcționare a aplicației.

În cazul aplicațiilor desktop, care se adresează unui număr limitat și targhetat de persoane,
problemele privind securitatea pot fi ușor minimizate, însă în cazul aplicațiilor web, care sunt

38
accesate de un număr variant de indivizi, securitatea începe să d evină o problemă cu adevărat
anovoiasa datorită faptului că modificările făcute prin intermediul diverselor mijloace pot afecta
întreaga functionalite a aplicației web, reușind în anumite cazuri chiar să compormita atât baza de
date cât și întreaga aplica ție.

Temenul de securitate reprezintă un concept abstract, în funcție de persoanele care se
raportează la această idee. La modul generic securitatea reprezintă modalitatea de asigurare a
canalului de comunicare între agenții participanți ai unei acțiuni. Actorul principal în cazul une i
companii reprezintă clientul. Din acest motiv aplicația web, dacă luăm exemplul unei aplicații de
vânzări online, trebuie realizate de o manieră plăcută și cât mai prietenoasă pentru client, astfel
încât acesta să își petre acă cât mai mult timp pe site. Pentru realizarea acestui obiectiv se realizează
o serie de stereotipuri de pagini care bineînțeles vor avea multă logică în spate. În acest fel se poate
pierde ușor din vedere securizarea aplicației, lucru primordial însă pe ntru un client care se dorește a
fi fidelizat și care își va dori să fie respectată clauză de confidențialitate.
Figura 3.2.1 prezintă aspecte referitoare la securizarea canalului de comunicare la nivel de
aplicației web.

Figura 3.2 .1. Aspecte priv ind securizarea aplicațiilor web

Odată cu apariția diverselor aplicații desktop și mobile pentru vizualizarea contului bancar
sau plății online, a apărut necesitatea securizării mai atente a aplicațiilor, cavend în vedere că
informațiile cu care se lucre ază sunt de natură sensibilă, iar consecințele pot avea un impact major.
Fie că este vorba despre calculatorul personal sau dispozitive externe nu trebuie reținute informații
sensibile, însă în cazul în care acest lucru este necesar trebuie avute în vedere metode specifice de
protejare a datelor. Criptarea datelor de pe calculatorul personal repezinta o opțiune viabilă și
realizabilă atât pe versiunile de Windows cât și pe cele de Ios. Prin intermediul unei parole datele
vor fi limitate atacurilor . Acest l ucru este valabil și pentru aplicațiile web, astfel prin itnermediul
unor parole, știute doar de către ușerii aplicației web, infromatia va deveni limitată atacutrilor.

Parola aleasă este foarte importantă și mai ales modul de alegere a ei. Trebuie avută în

39
vedere alegerea unei parole care să aibe în componența ei atât litere, cât și cifre și caractere speciale
și să aibe o lungime de minim 6 -8 caractere. Pentru că există numeroase dezbateri pe acest subiect,
pentru că utilizatorii uită parolele utilizate , mai ales în cazul unor parole complicate, există aplicații
special create în acest sens, cum este “LastPass”, care reprezintă în fapt un manager de parole care
reține toate parolele și prin intermediul căruia se poate naviga pe orice pagină web. În ceea ce
privește programatorii aplicației web, aceștia trebuie să aibe în vedere alegerea unui mod e cripare a
parolei, astfel încât să nu poată fi ușor decodificată. Sunt puse la dispoziție o serie de modalități de
criptare cum este SHA1, MD5 și altele.

O altă modalitate de a securiza informația de către dezvoltatorii aplicației web, o reprezintă
utilizarea protocolului HTTPS, utilizând în fapt standardul SSL. Însă atât în cazul alegerii unei
parole puternice cât și în cazul alegerii unei modalități de securi zare a aplicației prin intermediul
SSL, aplicația prezintă încă vulnerabilități, asftel că a fost dezvoltată o o funcționalitate nouă
numită “two factor authentication”. Această variantă este folosită și de Gmail și constă în
introducerea parolei și cerere a ulterioară de introducere a unui cod generat la fiecare 30 de secunde ,
astfel că în cazul aflării parolei utilizatorului de către o terță persoană, contul va rămâne intact
neavând posibilitatea inserării codului generat în mod automat și trimis ca mesaj pe telefonul
persoanei cărei aparține contul.

Prin urmare criptarea reprezintă o modalitate sigură de transmitere a informațiilor printr -un
canal de comunicare. Criptarea are în vedere o serie de algoritmi bazați pe funcții matematice de
transformare a u nui text obișnuit într -un text codat. Decriptarea reprezintă procesul opus criptării.
După modul de exemplificare de mai sus se observă că fără cunoașterea cheii de decriptare
comunicarea nu va putea continua. O posibilă încercare de spargere a codului cri ptat va fi puțin
probabilă. Modalitățile de criptare sunt reprezentate de algoritmi simetrici și asimetrici, existând în
ambele variante o paletă de algortimi de abordare a acestei abstracțiuni. În cazul criptării simetrice
cheile de criptare și decriptar e reprezintă un secret comun ambelor părți pentru asigurarea
comunicării pe un canal securizat. Însă această abordare este supusă unui atac cibernetic deoarece în
cazul cunoașterii cheii secrete se poate ușor descifra informația. Algoritmii specifici acest ui tip de
criptare sunt Dată Encryption Standard (DES) și Advanced Encryption Standard (AES).

40

Figura 3.2.2 Criptarea și decriptarea simetrică

Criptare a asimetrică are în vedere folosirea unei chei publice și se bazează pe ideea că se
poate încr ipta mesajul prin folosirea cheii primită de la partenerul conversației, dar decriptarea se
poate face numai cu cheia privată a partenerului. Secretul unei astfel de abordări îl reprezintă ținerea
cheii private secretă iar cheia publică poate fi utilizată fără restricții. Spargerea unui astfel de
algoritm presupune algoritmi criptografici bazați pe funcții matematice care în prezent nu admit o
soluție eficientă. Algoritmii vizați de această abordare sunt Rivest -Shamir -Adleman (RSA), Diffie –
Hellman(DH), Digi tal Signature Algorithm (DSA), Elliptic Curve, și alții . Modul de criptare al
mesajului prin intermediul modalității asimetrice este reprezentat de figura 3.2.3, respectiv
modalitatea de comunicare cu o altă entitate în cadrul figurii 3.2.4.

Figura 3 .2.3 Criptare utilizând asimetria

Figura 3.2.4. Comunicare folosind criptarea asimetrică

În concluzie fie că este vorba de securizarea părții url a aplicației web, a criptării parolei sau
a utilizării criptării publice, sau a tuturor acestor mo dalități, securizarea aplicației web trebuie avută
în vedere pentru ca prin intermediul acestei frunctionalitati se asigura succesul utilizării viitoare a
aplicațiilor web dezvoltate.

41
CAPITOLUL 4
Pagina web “Alegerea disciplinelor complementare”

Datori tă accelerării nevoii de comunicare rapidă, și a evoluției procesării datelor, a
informațiilor existente și a dinamismului cu care se schimbă cerinele mediului, a devenit tot mai
pregnantă nevoia ca informația să fie actualizată în timp real. În cadrul un iversitar această
informație este cea mai dinamică, datorită multitudinii evenimentelor care se desfășoară în acest
mediu. Astfel că mediul universitar a avut mereu în vedere găsirea de noi mijloace pentru a atrăgea
și comunicare cu mediul extern, prin fur nizarea de informații transparente, actualizate în timp real și
ușor de accesat în orice situație.

În acest sens a fost regândită modalitatea de abordarea a cursurilor pe care studenții doresc
să le studieze, în speranța că ideea alegerii materiilor care se doresc a fi studiate va încuraja
studenții să își determine singuri modul de abordare a educației pe care o doresc, renunțând la ideea
la curusrilor predefinit e impuse de către facultăți. Numeroase studii au arătat faptul că indivizii cu
cele mai multe șanse de succes în viața profesională, sunt aceia care au atât cunostiinte practice în
domeniul principal de specializare, dar mai ales aceia care posedă pe lângă aceste calități și
cunostiinte în domenii care țin de inteligența emoțională, de capacitatea de a se face înțeles în
diverse împrejurări.

Una dintre inițiative le Universității de Vest din Timișoara a vizat porni rea unui program
pilot, prin intermediul căruia fiecărei facultăți i se cerea să oferteze o serie de discipline către
studenții altor facultăți. Prin intermediul acestei inițiative studentului i se pun la dispoziție o serie de
discipline pe parcursul a două sau patru semestre de școală, în acest fel reușindu -se integrarea unor
materii opționale aferente altui domeniu de studiu, din cadru l altei facultăți, alese de student în
vederea extinderii cunoștiințelor în afara ariei principale de studiu. Oferta fiind limitată per
facultare, insă diversificată per ansamblu datorită numărului mare de facultăți cu care se mândrește
Universitatea de V est din Timișoara, s -a recurs la un algoritm pe principiul primul venit, primul
servit, care ulterior s -a dorit a fi integrat în cadrul unui site web.

42
Această aplicație este structurată în două părți:
 interfață grafică pentru partea de client a aplicați ei, prin intermediul căreia să existe o
modalitate flexibilă și prietenoasă pentru a ajuta și capta atenția utilizatorului
 dezvoltarea părții de server, adică a aplicației propriu -zise

4.1. Descrierea interfetei grafice

Aplicația dezvoltată își propune să demonstreze și să exemplifice pe de o parte frumusețea și
ușurință de folosire a arhitecturilor Bootstrap și Kendo UI, folosite pentru partea de client, iar pe de
altă parte să ajute mediul universitar să vină în sprijinul tinerilor dornici să învețe și să specializeze
în domeniile pe care și le doresc, fără a renunța însă la domeniile de interes principal. Partea de
interfață grafică a aplicației dezvoltate are în vedere mai multe pagini. Structura proiectului are în
vedere o serie de funcționalități sp ecifice fiecărei pagini.
Partea de login are în vedere două pagini:
 cea de login propriu -zis care poate fi regasită in cadrul imaginii 4.1.1.

Figura 4.1.1. Fereastra logare pentru aplicația web

 fereastra de resetare/modificare parolă reprezent ata în imaginea 4.1.2.

Figura 4.1.2. Fereastra schimbare parolă

43
Partea de vizualizare are în vedere vizibilitatea meniului care este format din :
 pagina principală pe care se regăsește meniul și un buton pentru alegere disciplină

Figura 4.1.3. Pagina principală a aplicației web “Alegerea disciplinelor complementare”

 pagina “Despre DCT” prezintă informațiile Utile aferente aplicației “Alegerea disciplinelor
complementare”, care au în vedere Regulamentul în format pdf, Informațiile sint etizate și
Alte informații privind adresele web ale facultăților.

Figura 4.1.4. Pagina “Despre DCT” din cadrul meniului principal

 pagina “Ofertă disciplinele” prezintă în mod atrăgător o serie de discipline complementare
pentru a fi studiate de către doritori cu opțiunea de vizualizare a întregii oferte de discipline
pe larg prin accesarea buntonui “Vezi întreaga ofertă de discipline”.

44

Figura 4.1.5. Pagina “Ofertă discipline” din cadrul meniului principal

 Pagina “Facultăți” are în v edere prezentarea succintă a facultăților sub forma liniară a unui
arbore prin descrierea interactivă, având totodată opțiunea vizualizarii de informații în
detaliu referitoare la fiecare facultate în parte. Această formă de înșiruire verticală se termină
printr -un element de îndemn privind alegerea cursului dorit prin intermediul căruia în cazul
în care utilizatorul va fi înregistrat pe site, va merge direct la pagina de alegere a
discplinelor, altfel, va fi îndrumat către pagina de logare.

Figura 4.1.6. Pagina “Facultati” din cadrul meniului principal

 Pagina “Profesori” are în vedere prezentarea punctuală a profesorului prin intermediul unei
poze, a titlului deținut, a disciplinei predate și a posibilității contactării acestuia prin email,

45
facebook sau linkedin. Bineînțeles lista se continuă prin apăsarea butonului “Catalog”.
Tot pe a ceasta pagină se sunt situații referitoare la diverse necesare atât studenților, cadrelor
didactice cât și conducerii universității în vederea îmbunătățirii ser viciilor oferite. Spre
exemplu în cazul în care o materie a fost solicitată în următorii ani, se va avea în vedere
crearea mai multor module referitoare la acea materie și renunțarea la cele care prezintă
interes minim. S au pentru un număr de 9 persoane nu se va putea ține o anumită materie,
numărul minum al susținerii unui curs pe o anumită temă fiind de 20 de persoane. În aces
caz se va avea în urmări pe parcursul a 4 semestre cererea pentru această materie, urmând a
se lua decizia în privința înloc uirii sau continuării acesteia.

Figura 4.1.7. Pagina “Profesori” din cadrul meniului principal

 pagina “Contact” are în vedere modul de menținere a legăturii utilizatorilor aplicației cu
echipa de mentenanță a acestuia.

46

Figura 4.1.8.Pagina“Profesori” din cadrul meniului principal

 pagina “Administrare” este folosită pe 2 nivele:
 cadru didactic – care va putea vizualiza și modifica doar meniul de Edicate/Căutare
discipline, Adăugare Disciplină și Grafice
 administrator – că putea vizualiza și modifica pe laga paginile vizualizate de către
cadrul didactic și cel de administrare roluri

Figura 4.1.9.Pagina“Administrare” din cadrul meniului principal

Deoarece ahitectura este realizată pe 4 nivele :
 user incognito (nea utentificat) va avea putea naviga pe toate paginile cu excepția celor de
“Alegere disciplină complementară”, caz în care va fi necesar ă logarea sau înregistrarea
 user autentificat – student va avea putea naviga pe toate paginile și în plus va avea opțiun ea
alegerii disciplinei dorite printr -o serie de pași.
 user autentificat – profesor va avea putea naviga pe toate paginile și în plus va avea acces la

47
partea de administrare a disciplinelor
 administrator fiind persoana cu toate drepturile de acces al apli cației, va avea în partea de
meniu administrare o pagină pentru administrare roluri lor pentru u tilizatorii autentificați.

Trebuie avut în vedere faptul că pot fi accesate o serie de situații precum cea prezentată în figur a
4.1.10 de mai jos, privind numă rul alegerilor per disciplină.

Figura 4.1.10 Situație privind alegerile studenților per disciplina complementar ă

Orice aplicație web funcționează pe principiul: utilizatorul accesează prin intermediul
browserului o anumită pagina, în acest sens, partea de client va face o cerere la serverul unde este
localizată aplicația ce se dorește a fi accesată. Serverul va analiza cererea, va cauta resursa în baza
de date și va emite un răspuns către partea de client, care va interpreta informația primită și o va
afișa pagina cerută în formatul potrivit și într -o manieră prietenoasă pentru utilizator. Partea de
client a oricărui site sau aplicație web reprezintă de fapt interfața prin intermediul căreia se face
interacțiunea cu utilizatorul, și pe care sunt d efinite evenimente prin intermediul cărora informația
să ajungă la server.

4.2. Functionalitățile aplicației

Partea de server a fost g ândită să aibe în vedere diverse sabolane de proiectare care să fie
folosite în vederea abstractizării și performanței codului și a minimizării timpului de răspuns, cât și
a asigurării securității aplicației web.
Structura aplicației poate fi urm ărită ușor prin intermediul unei proiectări de tip diagrama UML.

48

Figura 4.2.1. Diagrama de tip "use case" pentru proiectarea aplicației

Pentru partea de server este utilizat șablonul de proiectare MVC (model – view – controller).
Însă în .Net și mai ales în Visual Studio, există chiar un modul de bază MVC, care poate considerat
scheletul de dezvoltare pentru apli cațiile web.

Figura 4.2.2. Reprezentarea șablonului Model – View – Controller

MVC reprezintă un șablon de proiectare de tip arhitectural, care are în prim plan modelul,
reținând comportamentul aplicației independent de interfață client sau “vedere”( en:View).
 Rolul modelului este de a administra datele, logica și regulile specifice aplicației
 Vederea reprezintă orice modalitate de reprezentare vizuală a informației, chiar sub
forma unei diagrame, existând posibilitatea vizualizării infromatiei în mod uri multiple
 Controllerul acceptă intrările efectuate prin intermediul vederii (en: view), transformă și
trimite informația sub forma unor comenzi specifice modelului sau vederii (view -ului).
Structura proiectului este reprezentată în figură de mai jos:

Figura 4.2.3 Structura proiectului “Alegerea disciplinelor complementare” realizată Visual Studio

49
Aplicația are în vedere crearea unor modele de comunicare de tip ORM echivalente
tabelelor existente în baza de date prin folosirea Entity Framework utilizând o variantă de interog are
pe obiecte folosind expresii de tip LINQ (en: Linq expressions).

În cadrul dosarului de lucru App_Data există baza de date cu tabele aferente care vor fi
detaliate în partea de descrierea a bazei de date.

Figura 4 .2.4 Dosarul de lucru “App_Data”

În cadrul dosarului de lucru App_Start sunt fișierele pe care șablonul Asp.Net le va apela la

începutul aplicației.

Figura 4.2.5. Dosarul de lucru “App_Start”

În cadrul acestui dosar se regăsesc o serie de clase cu diverse implementări. Prin
implementarea clasei “BundleConfig.cs” se dorește îmbunătățirea timpului de răspuns, reducând
atât numărul de cereri către server cât și pe cel de cereri la nivel de css și JavaScript. În mod practic
prin intermediul acestei t ehnici se dorește combinarea mai multor fisire într -unul singur, reu șind în
acest mod crearea de Css, JavaScript și a altor fișiere. Rezultând astfel în mai puține fișiere și
performanță crescută.

În cazul fișierului “FilterConfig.cs” se regăsesc div erse filtre care se doresc a fi
implementate, în acest caz fiind adăugat un singur filtru referitor la abordarea erorilor.

În cadrul șablonului Asp.Net este prezentă o funcționalitate numite “rutare” (en: routing),

50
care are în vedere folosirea de URL -uri fără a fi necesară maparea fișierelor din cadrul siteurilor.
URL -urile nu trebuiesc mapate sub forma unui fișier deoarece reprezintă modalități descriptive ale
actiunii utilizatorilor și sunt mult mai ușor de înțeles de către utilizatori.

Clasa “RouteConfig.cs” are în vedere această funcționalitate de mapare de tip url în următoarea
formă: “numele controlului/acțiunea din control/id -ul folosit în cadrul actinii” dar care este un
parametru opțional.
routes.Map Route(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Clasa “Startup.Auth.cs” are în vedere implem entarea codului privind autentificarea prin intermediul
unui cont de tip "two -factor authentication" prin intermediul adresei de email de forma:
app.UseGoogleAuthentication(new GoogleOAuth2Authent icationOptions()
{
ClientId = "",
ClientSecret = ""
});
În cazul dosarului de lucru "Content" sunt incluse dosare de lucru care grupează elemente de css și
html, compilări ale codului în less, și arhitecturi ajutătoare în vederea dezvoltării armonioase a părții
de interfață a aplicației web cum sunt bootstrap sau kendo.

Bootstrap reprezintă o arhitectură gratuită care combină elemente de Css, Html și Jav aScript pentru
a îmbunătăți modul de vizualizare și construite a elementelor din pagină web.

Figura 4.2.6 Structura dosarului de lucru "Content"

51
Abordarea proiectului fiind una de tip MVC (Model – View – Controller) aplicația de
împarte în cele 3 nivele mentionate. Astfel ca dosarul de lucru "Model" conține diverse Modele
corespunzătoare atât tabelelor din baza de date cât și corespunzătoare controllerelor și view -urilor
care le integrează.

Figura 4.2.7 Structura dosarului de lucru "Models"

Deoarece limbajul C# permite denumirea unui fi șier fără a forța denumirea clasei să fie
aceeași, fișierul "AccountModels.cs" reprezintă o denumite generică, integrând în fapt o serie de
clase specifice înregistrării ușerilor. Printre exemplele ce merit ă amintite se numără legarea tabelei
Ușer din cadrul namespace -ului ComplementaryDisciplineUVTStudents.Models prin intermediul
EntityFramework cu baza de date și reținerea înregistrării în baza de date.

Fluxul de date modalității acțiunii de logare, p oate fi urmărit prin intermediul diagramei
secvențiale din figura 4.2.6. "Diagrama secvențială pentru logarea unui ușer în sistem" și a
exemplificării uterio are a unor secvențe de cod spe cifice logării.

Figura 4.2.8. Diagrama secvențială pentru l ogarea unui user în sistem

52
Legătura cu baza de date se va face in doi pasi:
1. prin intermediul unei mapari in cadrul fisierului de web.config de tipul:
<connectionS trings>
<add name = "ApplicationContext "
connectionString="Data Source=DESKTOP -1LBRL7A \SQLEXPRESS;
User ID=sa;Password= sa;
Initial Catalog=OnlineShoppingStore;
Integrated Security =True"
providerName="System.Data.SqlClient" />
</connectionStrings>

2. prin intermediul unei clase cu numele dat in cadrul fisierului “connectionStrings”:

public class ApplicationContext :DbContext
{
public DbSet <University > University { get; set; }
public DbSet <Faculty > Faculty { get; set; }
public DbSet <Discipline > Discipline { get; set; }
public DbSet <Student > Student { get; set; }
public DbSet <Professor > Professor { get; set; }
public DbSet <Choice > Choice { get; set; }
public DbSet <User > User { get; set; }
public DbSet <Role > Role { get; set; }
public DbSet <UsersInRole > UsersInRole { get; set; }
}

Modul de mapare a unei tabele din baza de date este reprezentat mai jos:

[Table ("Professor" )]
public class Professor
{
[Key]
public int ProfessorId { get; set; }
public string Name { get; set; }

[ForeignKe y("Faculty" )]
public int FacultyId { get; set; }
public virtual Faculty Faculty { get; set; }

[ForeignKey ("User" )]
public int UserId { get; set; }
public virtual User User { get; set; }

public virtual List<Discipline > Disciplines { get; set; }
}

53
De asemenea se poate observa faptul că validările sunt construite foarte bine atât pe partea de
server, cât și pe partea de client după cum va fi exemplificat în continuare.
1. Pentru partea de client:
<div class = ”col-md-6”>
<div class = “form -group ”>
<textarea class = “form -control ” placeholder = “Mesajul dvs. * ” id = “message ”
Required data-text-validation -required -message = “Va rugam
introduceti un text ”>
</textarea>
<p class = “help-block text -danger ”></p>
</div>
</div>

2. Pentru partea de server va exista o construc ție de forma:

[Required]
[StringLength(100, ErrorMe ssage = “{0} threbuie sa fie de cel putin 10 caractere ”,
MinimumLength = 10)]
[DataType(DataType.Description)]
Public string Description {get; set;}

În cadrul dosarului de lucru "Controllers" există o serie de elemente de control conforme
șablonului de poiectare Model – View – Controller. Actiunele se fac printr -o abordare de tip REST
(Representat ional State Transfer), bazându -se pe proprietățile de "stateless" și "cache" ale
protocolului HTTP exemplificate prin intermediul unor metode decorate cu atribute, in acest caz
atributul exprima verbul “POST ”, iar maparea este fi de forma : "control/acțiune /id".
//Users/Edit/5 [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "UserId,UserName,CreatedDate,Password,
ConfirmationToken,IsConfirmed,PasswordChangedDate,PasswordVerificationToken,
PasswordVerificationTokenExpirationDate,IsStudent,UsersInRoleId,UniversityId")] User user) {
if (ModelState.IsValid) {
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index"); }
ViewBag.UniversityId = new SelectList(db.University,
"UniversityId", "Name", user.UniversityId);
ViewBag.UsersInRoleId = new SelectList(db.UsersInRole,
"UsersInRoleId", "UsersInRoleId", user.UsersInRoleId);
return View(user); }

54
Deoarece arhitectura .Net are o modalitate frumoas ă de a extrage informațiile în mod eficient
și a le prezenta utilizatorului, în controllerul de mai jos am f olosit prin intermediul verbului “GET ”
specific de abor dării REST pentru comunicarea prin HTTP.
// GET: Users/Edit/5
public ActionResult Edit(int? id) {
if (id == null) {
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
User user = db.User.Find(id);
if (user == null) {
return HttpNotFound();
}
ViewBag.Univers ityId = new SelectList(db.University,
"UniversityId", "Name", user.UniversityId);
ViewBag.UsersInRoleId = new SelectList(db.UsersInRole,
"UsersInRoleId", "UsersInRoleId", user.UsersInRoleId);
return View(user); }

Pentru a regăsi anumite informații se folosește operațiunea de HttpGet exemplificată în
cadrul metodei cu același nume din cadul controllerului "FacultyController.cs", unde prin
intermediul unor interogări de tip Linq se returnează modelul. În cazul verbului “delete ”, abordarea
este asemănătoare prin intermediul metodei Delete care va găsi facultatea cu id -ul trimis și o va
șterge, actualizând totodată și baza de date.
// POST: Use rs/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id) {
User user = db.User.Find(id);
db.User.Remove(user);
db.SaveChanges();
return RedirectToAction("Index");
}

55
4.3. Descrierea bazei de date
Baza de date contine imagini ilustrate privind tabelele folosite, cat si legatura dintre acestea.

Figura 4.3.1 Tabelele bazei de date și relatiile corespunzatoare aplicației

Tabelele:

sunt utiliz ate ca dic ționare de către administratorul aplicației. În aceste tabele sunt incluse date
statice ce vor fi folosite de către tabelele aferente.
Tabelele:

reprezintă în fapt tabele intermediare, folosite special pentru menținerea istoricului tabelelor
aferente: Student și Discipline, respectiv Role și User.
Tabelele:

ajută în gestionarea datelor noi, modificarea celor vechi sau ștergerea acestora, în funcție de
necesităti.

56
CONCLUZII

Cadrul universitar este unul dinamic, având numeroase opțiuni de prezentare, însă situarea
într-o "era a vitezei" lucrurile se schimbă și iau amploare zilnic, astfel că este nevoie de
îmbunatariea continuă a interacțiunii dintre universitate și actorii ei, în speță studenții și cadrele
didactice. În acest sens deși există o varietatea mare de aplicații special concepute pentru acest tip
de interacțiune, trebuie avută în vedere diversificarea și apropierea într -un mod mai puțin cordial și
mai intuitiv pentru ca dobândirea cunoștiințelor să aibe câștig de cauză.

Lucr area de față își propune să aducă o contribuție atât în ceea ce privește noutatea prin
folosirea unor arhitecturi noi care să ușureze munca ultilizatorului, fie că vorbim despre
administrator, de profesor sau de simplu utilizator. Beneficiul vizibil va fi unul dublu pentru ca în
acest mod va exista o variantă viabilă pentru a facilita alegerea disciplinelor complementare de către
studenți, de asemenea urcarea documentelor și a informațiilor direct pe platformă de către cadrele
didactice și ușurarea muncii a ngajaților din domeniul administrativ al universității.

În vederea elaborării lucrării de licență s -au folosit sursele menționate în partea bibliografică
cu ajutorul cărora au fost definite noțiuni, descrise modalități de constuire și utilizare a interfe ței
utilizator cât și interacțiunea cu baza de date folosind noțiuni specifice .Net de Entity Framework
prin intermediul limbajului orientat obiect C#. Dezvoltarea interfaț ei grafic e a aplicației s -a făcut
prin intermediul arhitecturii Bootstrap și KendoUI , datorită usurinț ei integrării acest ora cu
arhitectura Asp.Net. Pentru o bună structurare a codului s -au folosit șabloane de proiectare MVC și
Repository care au fost indicate în mod evident prin intermediul a diverse exemple concrete.
Pe parcursul lucră rii s-a avut în vedere punctarea notinunilor de bază ale C# ca și limbaj
orientat obiect, modul de interogare pe obiecte prin intermediul Linq, modul de legare la baza de
date prin intermediul Entity Framework în corelare cu posibilitățile MsSql, și bineîn țeles modul de
creare a interferetei utilizator prin intermediul Bootstrap, Kendo și a librăriilor JavaScript precum
Morris și Rphael având în vedere o structură Html decorată cu elemente Css.

57
Consider că limbajul C# aduce o serie de avantaje față de c elelate limbaje, fiind un limbaj
robust, complex, echilibrat dezvoltat pe mai multe ramuri, dar odată stăpânit, ușor de utilizat și care
se mulează perfect pe nevoia dezvoltării aplicațiilor web. Elaborarea aplicației a avut ca reper
modul de lucru cu arhi tectură .Net în corelație cu API de bază, utilizând o platformă pe baza căreia
să fie afișate obiectele grafice cu care interacționează utilizatorul, receptarea evenimentelor care
decurg din acțiunile efectuate de către utilizator și actualizarea în consec ință a informațiilor în timp
real, dar și limitarea accesului utilizatorilor în funcție de drepturile deținute în cadrul aplicației.

În concluzie aplicația se pretează unui mediu universitar, care are nevoie mereu de un suflu
nou, pentru a rămâne ancora tă în prezent și a veni în întâmpinarea nevoilor actorilor săi într -un mod
prietenos și rapid, atât de pe varianta desktop cât și de pe varianta mobilă. Această aplicație a fost
în trecut implementată în trecut într -o variantă academică de Php, iar acum î ntr-o variantă nouă și
mai atrăgătoare în C# și care va fi continuu îmbunătățită pe măsura ivirii de noi cerințe și nevoi din
partea utilizatorilor, cât și a solicitărilor venite din partea conducerii mediului universitar.

58

BIBLIOGRAFIE

[1] Joseph Albahari, Ben Albahari ,C# 5.0 in a Nutshell: The Definitive Reference, Editia a V -a,
Editura O'Reilly Media, 2012
[2] Jennifer Greene, Andrew Stellman , Head First C#, Editia a III -a, Editura O'Reilly Media, 2013
[3] Jon Skeet, C# in Depth, Editia a III -a, Editura Maning, nr.3 (39), 2013
[4] John Sharp, Microsoft Visual C# Step by Step, Editia a VIII – a , 2002
[5] Iordan Victoria, Petrov Gheorghe, Stepan Aurel, Fundamentele proiectării și realizării sistemelor
informatice, Editura Mirton, Timișoara, 1995
[6] Joel Murach si Anne Boehm, Murach’s C# 2012, Editura Murach, 2013
[7] Bart De Smet , C# 5.0 Unleashed, Editura Pearson Education, 2013
[8] Andrew Troelsen , Pro C# 5.0 and the .N ET 4.5 Framework, Editia a VI – a, Editura Apress, 2012
[9] A. Zgureanu – Criptarea și securitatea informației, Note de curs, Academia de transporturi,
informatica si comunicatii, Chișinău, 2013
[10] http://www.asp.net/aspnet/overview/web -development -best-practices
[11] http://morrisjs.github.io/morris.js/
[12] https://bower.io/
[13] http://docs.telerik.com/kendo -ui/introduction
[14] http://getbootstrap.com/about/
[15] http://www.datanamic.com/support/lt -dez005 -introduction -db-modeling.html
[16] https://msd n.microsoft.com/en -us/library/cc668201.aspx
[17] http://csharp -station.com/Tutorial/Linq/Lesson01
[18] http:// www . asp.net/whats -new

Similar Posts