Article Manager
UNIVERSITATEA ALEXANDRU IOAN CUZA IAȘI
FACULTATEA DE INFORMATICĂ
Article Manager
Raluca Codreanu
Sesiunea: iunie-iulie, 2016
Coordonator științific
Conf., Dr. Vitcu Anca
DECLARAȚIE PRIVIND ORIGINALITATE ȘI RESPECTAREA DREPTURILOR DE AUTOR
Prin prezenta declar că lucrarea de licență cu titlul “ Article Manager” este scrisă de mine și nu a mai fost prezentată niciodată la o altă facultate sau instituție de învățământ superior din țară sau străinătate. De asemenea, declar că toate sursele utilizate, inclusiv cele preluate de pe Internet, sunt indicate în lucrare, cu respectarea regulilor de evitare a plagiatului:
toate fragmentele de text reproduse exact, chiar și în traducere proprie din altă limbă, sunt scrise între ghilimele și dețin referința precisă a sursei;
reformularea în cuvinte proprii a textelor scrise de către alți autori deține referința precisă;
codul sursă, imagini etc. preluate din proiecte open-source sau alte surse sunt utilizate cu respectarea drepturilor de autor și dețin referințe precise;
rezumarea ideilor altor autori precizează referința precisă la textul original.
Iași, 27.06.2016
Absolvent Raluca Codreanu
___________________
(semnătura în original)
DECLARAȚIE DE CONSIMȚĂMÂNT
Prin prezenta declar că sunt de acord ca Lucrarea de licență cu titlul “Article Manager”, codul sursă al programelor și celelalte conținuturi (grafice, multimedia, date de test etc.) care însoțesc această lucrare să fie utilizate în cadrul Facultății de Informatică.
De asemenea, sunt de acord ca Facultatea de Informatică de la Universitatea Alexandru Ioan Cuza Iași să utilizeze, modifice, reproducă și să distribuie în scopuri necomerciale programele-calculator, format executabil și sursă, realizate de mine în cadrul prezentei lucrări de licență.
Iași, 27.06.2016
Absolvent Raluca Codreanu
___________________
(semnătura în original)
CUPRINS
Introducere 7
Motivația alegerii temei 7
Descrierea aplicației 7
Metodologia folosită 7
Capitolul 1 .NET Framework 8
1.1 .NET Framework Arhitectura 8
1.1.1 Compilarea programelor 10
1.2 Componente ale lui .NET Framework 10
1.2.1 Common Intermediate Language 10
1.2.2 Common Language Specification 11
1.2.3 Common Language Runtime 11
1.2.4 Common Type System 12
1.2.5 Metadate 14
1.2.6 Assemblies 14
1.2.7 Garbage collection 15
1.3 Trasaturi ale platformei .NET 15
Capitolul 2 ASP.NET MVC 18
2.1 ASP.NET Overview 18
2.2 MVC Pattern 18
2.3 ASP.NET MVC Arhitectură 19
2.4 Avantajele ASP.NET MVC framework 19
2.5 Model Binding 21
2.6 Validari 22
2.7 Action Filters 22
2.8 HTML Helpers 22
Capitolul 3 LINQ 24
Capitolul 4 Javascript 26
4.1 JavaScript Definitie 26
4.2 Jquery 27
Capitolul 5 CSS 29
5.1 Definitie 29
5.2 Bootstrap 29
Capitolul 6 Arhitectura aplicației 30
6.1 Scopul aplicației 30
6.2 Arhitectura aplicației 31
6.3 Database 32
6.4 Pattern uri : 34
Capitolul 7 Implementare 35
7.1 Descriere module 35
Capitolul 8 Manual de utilizare 38
8.1 Logare 38
8.2 Articles list 39
8.3 Adăugare articole 40
8.4 Vizualizare detalii articol 41
8.5 Sortare si filtrare 42
8.5 Editare 44
8.6 Playlist 45
8.7 Slider 46
Capitolul 9 Concluzii 47
Bibliografie 48
Introducere
Motivația alegerii temei
În ultimii ani, oamenii preferă să folosească internetul pentru a află ultimele noutăți. Blogurile și aplicațiile web sunt din ce în ce mai răspândite, ele fiind un mijloc ușor accesibil de către majoritatea.
Cei mai importanți factori care îi ajută să aleagă aplicația este modul cum sunt organizate informațiile, ușurința cu care userul folosește aplicația cât și design ul.
Descrierea aplicației
Scopul aplicației este de a putea face managment la itemi adăugați ( articole) și de a le vizualiza in browser. Pe parcursul lucrării vom putea observă cum acești factori sunt puși în valoare. De asemenea vom vedeam pas cu pas cum se folosește aplicația.
Am ales acesta temă pentru că nevoie de aplicații care permita persoanelor să fie mereu la curent cu ce se întâmplă este mare . Utilitatea acestor tipuri de aplicații este data în funcție de informațiile oferite, formatul în care apăr și factori precum ușurința de folosire a aplicației
Metodologia folosită
Tehnologiile folosite sunt Nlog,InversionOf Control și că bază de date Nhibernate . Vom vedea care sunt avantajele ,dezavantajele cât și componentele ASP.NET cât și cum functionaza ASP.NET MVC.
Pentru partea de procesare a articolelor au fost folosite librării specifice în funcție de tipul de fișier . De asemenea pentru partea de vizualizare itemi a fost folosit HTML,Css,Bootstrap cât și JavaScript ,Jquery.
Capitolul 1 .NET Framework
1.1 .NET Framework Arhitectura
.NET este un framework care permite realizarea, distribuirea și rularea aplicațiilor desktop Windows și aplicațiilor WEB. NET Framework folosește mai multe tehnologii precum ASP, XML, OOP, SOAP, WDSL și limbaje de programare (VB, C++, C# ) .
Unul dintre avantajele framework ului este că asigură portabilitatea codului compilat intre diferite calculatoare cu sistem Windows. Un alt lucru important este ca .Net asigura reutilizearea codului în programe, indiferent de limbajul de programare utilizat. .NET Framework este o componentă livrată împreună cu sistemul de operare Windows.
Pentru a dezvolta aplicații pe platforma .NET este obligatoriu sa avem :
Un set de limbaje (C#, Visual Basic .NET, J#)
Un set de medii de dezvoltare (Visual Studio .NET)
Bibliotecă de clase pentru crearea serviciilor Web, aplicațiilor Web și aplicațiilor desktop,Windows.
Componenta .NET Framework stă la baza tehnologiei .NET, este ultima interfață între aplicațiile .NET și sistemul de operare și actualmente conține:
Limbajele C#, VB.NET, C++ .Pentru a fi integrate în platforma .NET, toate aceste limbaje respectă principii OOP numite Common Type System (CTS).Elementele de baza sunt : clase, interfețe, delegări, tipuri valoare și referință, iar ca mecanisme: moștenire, polimorfism și tratarea excepțiilor.
CLR(Common Language Runtime) este platforma comună de executare a programelor este utilizată de toate cele 4 limbaje. CTS face parte din CLR.
FCL( Framework Class Library) este un ansamblul de biblioteci necesare în realizarea aplicațiilor desktop sau Web.
.NET Framework este format din compilatoare, biblioteci și alte executabile utile în rularea aplicațiilor .NET. Compilarea programelor scrise intr unul din limbajele .NET se face in Common Intermediate Language urmnad Common Language Specification (CLS).
Orice program scris intr-unul din limbajele .NET este compilat in Common Intermediate Language, in concordanța cu Common Language Specification (CLS). Aceste limbaje sunt sprijinite de o bogata colecție de biblioteci de clase, ce pun la dispozitie facilități pentru dezvoltarea de Web Forms, Windows Forms si Web Services.
Comunicarea dintre aplicații si servicii se face pe baza unor clase de manipulare XML și a datelor, ceea ce sprijină dezvoltarea aplicatiilor cu arhitectura n-tier. Rolul lui Base Class Library este de a asigura funcționalitatea de nivel scazut, precum operatii de I/O, fire de executie, lucrul cu siruri de caractere, comunicatie prin retea, etc. Aceste clase sunt reunite sub numele de .NET Framework Class Library, ce permite dezvoltarea rapida a aplicatiilor. La baza tuturor se afla cea mai importanta componenta a lui .NET Framework – Common Language Runtime, care raspunde de executia fiecarui program. Evident, nivelul inferior este rezervat sistemului de operare.
Trebuie spus ca platforma .NET nu este exclusiv dezvoltata pentru sistemul de operare Microsoft Windows, ci si pentru arome de Unix.
1.1.1 Compilarea programelor
Un program scris într-unul dintre limbajele .NET conform Common Language Specification (CLS) este compilat în Microsoft Intermediate Language (MSIL sau IL). Codul astfel obținut are extensia "exe", dar nu este direct executabil, ci respectă formatul unic MSIL. CLR include o mașină virtuală asemănătoare cu o mașină Java, ce execută instrucțiunile IL rezultate în urma compilării. Mașina folosește un compilator special JIT (Just In Time).
Compilatorul JIT analizează codul IL corespunzător apelului unei metode și produce codul mașină adecvat și eficient. El recunoaște secvențele de cod pentru care s-a obținut deja codul mașină adecvat, permițând reutilizarea acestuia fără recompilare, ceea ce face ca, pe parcursul rulării,aplicațiile .NET să fie din ce în ce mai rapide.
Faptul că programul IL produs de diferitele limbaje este foarte asemănător are ca rezultat interoperabilitatea între aceste limbaje. Astfel, clasele și obiectele create într-un limbaj specific .NET pot fi utilizate cu succes în altul.
CLR se ocupă de gestionarea automată a memoriei (un mecanism implementat în platforma .NET fiind acela de eliberare automată a zonelor de memorie asociate unor date devenite inutile – Garbage Collection). Ca un element de portabilitate, trebuie spus că .NET Framework este implementarea unui standard numit Common Language Infrastructure ceea ce permite rularea aplicațiilor .NET, în afară de Windows, și pe unele tipuri de Unix, Linux,Solaris, Mac OS X și alte sisteme de operare.
Componente ale lui .NET Framework
1.2.1 Common Intermediate Language
Unul din multele tool uri de care dispune ingineria software este abstractizarea. Deseori vrem sa ferim utilizatorul de detalii, să punem la dispoziția altora mecansime sau cunoștințe generale, care sa permita atingerea scopului, fără a fi necesare cunoasterea tuturor detaliilor. Daca interfața ramane neschimbată, se pot modifica toate detaliile interne, fără a afecta acțiunile celorlalți beneficiari ai codului.
In cazul limbajelor de programare, s-a ajuns treptat la crearea unor nivele de abstractizare a codului rezultat la compilare. Microsoft a realizat si el propria sa abstractizare de limbaj, aceasta numindu-se Common Intermediate Language. Deși există mai multe limbaje de programare de nivel inalt (C#, Managed C++, Visual Basic .NET, etc), la compilare toate vor produce cod in acelasi limbaj intermediar: Common Intermediate Language. Asemanator cu bytecod-ul, CIL are trăsături OO,precum abstractizarea datelor, moștenirea, polimorfismul, sau concepte care s-au dovedit a fi extrem de necesare, precum excepțiile sau evenimentele. Abstractizarea limbajului permite rularea aplicaților independent de platforma .
1.2.2 Common Language Specification
Unul din scopurile .NET este de a sprijini integrarea limbajelor astfel incat programele, deși scrise in diferite limbaje, pot interopera, folosind din plin moștenirea, polimorfismul, incapsularea, excepțiile, etc.
Pentru a se asigura interoperabilitatea codului scris in diferite limbaje, Microsoft a publicat Common Language Specification (CLS), un subset al lui CTS (Common Type System), conținând specificații de reguli necesare pentru integrarea limbajelor.
CLS definește un set de reguli pentru compilatoarele .NET, asigurand faptul ca fiecare compilator va genera cod care interferează cu platforma (mai exact, cu CLR–ul) intr-un mod independent de limbajul sursa. Obiectele si tipurile create in diferite limbaje pot interacționa. Combinația CTS/CLS realizeaza interoperarea limbajelor. Concret, se poate ca o clasa scrisa in C# sa fie moștenita de o clasa scrisa in Visual Basic care arunca excepții ce sunt prinse de cod scris in C++ .
1.2.3 Common Language Runtime
CLR este de departe cea mai importanta componenta a lui .NET Framework. Este responsabilă cu managementul și execuția codului scris in limbaje .NET aflat in format CIL. CLR instanțiază obiectele, face verificari de securitate, depune obiectele in memorie, disponibilizează memoria prin garbage collection.
In urma compilarii unei aplicații poate rezulta un fișier cu extensia exe, dar care nu este un executabil portabil Windows, ci un executabil portabil .NET. Acest cod nu este deci un executabil nativ, ci se va rula de catre CLR, așa cum un fisier clasa este rulat in cadrul JVM. CLR foloseste tehnologia compilarii JIT – o implementare de mașină virtuala, in care o metoda sau o funcție, in momentul in care este apelată pentru prima oară, este tradusă in cod mașină. Codul translatat este depus intr-un cache, evitând-se astfel recompilarea ulterioară.
Exista 3 tipuri de compilatoare JIT:
1. Normal JIT – a se vedea descrierea de mai sus.
2. Pre-JIT – compilează intregul cod in cod nativ singură data.In mod normal este folosit la instalari.
3. Econo-JIT – se foloseste pe dispozitive cu resurse limitate. Compilează codul CIL bit cu bit, eliberand resursele folosite de codul nativ ce este stocat in cache.
Activitatea unui compilator JIT este destinată a îmbunătăți performanța executiei, ca alternativa la compilarea repetată a aceleiași bucăți de cod in cazul unor apelari multiple. Unul din avantajele mecanismului JIT apare in clipa in care codul, o data ce a fost compilat, se executa pe diverse procesoare; daca masina virtuala este bine adaptata la noua platforma, atunci acest cod va beneficia de toate optimizările posibile, fără a mai fi nevoie recompilarea lui.
1.2.4 Common Type System
Pentru a asigura capacitatea de cooperare in mod eficient a limbajelor din .NET Framework, o clasă scrisa in C# trebuie sa fie echivalenta cu una scrisă in VB.NET, o interfață scrisa in Managed C++ trebuie sa fie perfect utilizabilă in Managed Cobol. Toate limbajele care fac parte din pleiada .NET trebuie sa aibe un set comun de concepte pentru a putea fi integrate. Modul in care acestă cerere s-a transformat in realitate se numește Common Type System (CTS); Orice limbaj trebuie sa poată recunoaște si manipula tipuri comune precum :
1. Tipuri valoare – In general, CLR-ul suporta doua tipuri diferite: tipuri valoare si tipuri referința. Tipurile valoare reprezintă tipuri alocate pe stiva și nu pot fi null . Tipurile valoare includ tipurile primitive, structuri și enumerari. Deoarece au dimensiuni mici și sunt alocate pe stivă, se manipulează eficient, reducand overhead-ul cerut de mecanismul de garbage collection.
2. Tipuri referința – Sunt folosite dacă variabilele de un anumit tip cer resurse de memorie semnificative. Variabilele de tip referința contin adrese de memorie heap și pot fi null. Transferul parametrilor se face rapid. Unul din dezavantaje este că referințele induc un cost suplimentar datorită mecanismului de garbage collection.
3. Boxing si unboxing – Rolul tipurilor primitive este de a aduce performanță. Orice variabila in .NET este compatibila cu clasa Object, rădăcina ierarhiei existente in .NET.
Tipurile valoare se stochează pe stiva. De asemenea pot fi convertite oricând intr-un tip referinta memorat in heap.Acest mecanism se numeste boxing.
Exemplu:
int i = 1; //i :este de tip valoare
Object box = i; //box : un obiect referintă
Atunci când cand se face boxing, se obține un obiect care poate fi gestionat la fel ca oricare altul, facandu–se abstracție de originea lui. Inversa boxing-ului este unboxing-ul, prin care se poate converti un obiect in tipul valoare echivalent, ca mai jos:
Exemplu: int j = (int)box;
operatorul de conversie este suficient pentru a converti de la un obiect la o variabila de tip valoare.
4. Clase, proprietăți, indexatori – Platforma .NET suporta programarea orientata pe obiecte, concepte legate de obiecte (incapsularea, mostenirea, polimorfismul) sau trăsături legate de clase (metode, câmpuri, membri statici, vizibilitate, accesibilitate, tipuri imbricate, etc). De asemenea se includ trăsături precum proprietăți, indexatori, evenimente.
5. Interfete – Reprezintă același concept precum clasele abstracte din C++ (dar continand doar functii virtuale pure). O clasa care se degrevează dintr-o interfață trebuie să implementeze toate metodele acelei interfețe. Se permite implementarea simultană a mai multor interfețe (in rest moștenirea claselor este simplă).
6. Delegati – Sunt inspirați de pointerii la functii din C, ce permit programarea generică. Reprezintă versiunea “sigură” a pointerilor catre functii din C/C++ si sunt mecanismul prin care se trateaza evenimentele.
Exista numeroase componente ale lui CLR care il fac cea mai importantă parte a lui .NET Framework: metadata, assemblies, assembly cache, reflection, garbage collection.
1.2.5 Metadate
Metadatele inseamna “date despre date”. In cazul .NET, ele reprezintă detalii destinate a fi citite si folosite de catre platforma. Sunt stocate împreună cu codul pe care il descrie.
Pe baza metadatelor, CLR știe cum sa instanțieze obiectele, cum să le apeleze metodele, cum sa acceseze proprietățile. Printr- un mecanism numit reflectare, o aplicație (nu neaparat CLR) poate sa interogheze aceasta meta dată si sa afle ce expune un tip de date (clasa, structura, etc). Metadata conține o declaratie a fiecarui tip si pentru fiecare metoda, câmp, proprietate, eveniment al tipului respectiv. Pentru fiecare metoda implementata, metadata contine informație care permite încărcătorului clasei respective sa localizeze corpul metodei.
1.2.6 Assemblies
Un assembly reprezintă un bloc functional al unei aplicatii .NET. El formeaza unitatea fundamentala de distribuire, versionare, reutilizare si permisiuni de securitate. La runtime, un tip de date există in interiorul unui assembly (si nu poate exista in exteriorul acestuia). Un assembly conține metadate care sunt folosite de catre CLR. Scopul acestor “assemblies” este sa se asigure dezvoltarea softului in mod “plug-and-play”. Dar metadatele nu sunt suficiente pentru acest lucru.Mai sunt necesare si “manifestele”.
Un manifest reprezinta metadate despre assembly-ul care găzduiește tipurile de date. Contine numele assembly-ului, numarul de versiune, referiri la alte assemblies, o lista a tipurilor in assembly, permisiuni de securitate si altele.
Un assembly care este împărțit intre mai multe aplicații are de asemenea un shared name. Aceasta informație care este unica este optionala, neapărând in manifestul unui assembly daca acesta nu a fost gandit ca o aplicatie partajata.
Atunci când se doreste rularea unei aplicatii conținute in assembly, manifestul va instrui mediul .NET despre modulele care sunt conținute in assembly. Sunt folosite de asemenea si referințele catre orice assembly extern de care are nevoie aplicația.
Versionarea este un aspect foarte important pentru a se evita așa numitul “DLL Hell”. Exista urmatoarele scenarii : se instalează o aplicație care aduce niste fișiere .dll necesare pentru funcționare. Ulterior, o alta aplicație care se instalează suprascrie aceste fisiere (sau macar unul din ele) cu o versiune mai noua, dar cu care vechea aplicație nu mai funcționează corespunzator. Astfel reinstalarea vechii aplicații nu rezolva problema, deoarece a doua aplicație nu va funcționa. Desi fisierele dll conțin informație relativ la versiune in interiorul lor, ea nu este folosită de catre sistemul de operare, ceea ce duce la probleme.
Acesta problema ar putea fi futionata prin instalarea fișierelor dll in directorul aplicației, dar in acest mod ar disparea reutilizarea acestor biblioteci.
1.2.7 Garbage collection
Managementul memoriei este una din sarcinile cele mai consumatoare de timp in programare. Garbage collection reprezintă mecanismul care se declanșează atunci cand alocatorul de memorie raspunde negativ la o cerere de alocare de memorie.
Implementarea este de tip “mark and sweep”: se presupune inițial ca toata memoria alocata se poate disponibiliza, dupa care se determina care din obiecte sunt referite de variabilele aplicatiei;cele care nu mai sunt referite sunt dealocate, celelalte zone de memorie sunt compactate. Obiectele a caror dimensiune de memorie este mai mare decat un anumit prag nu mai sunt mutate, pentru a nu creste semnificativ penalizarea de performanța. CLR este cel care se ocupa de apelarea mecanismului de garbage collection.
1.3 Trasaturi ale platformei .NET
Prin prisma celor prezentate pana acum putem rezuma urmatoarele trăsături:
Dezvoltarea multilimbaj: Deoarece există mai multe limbaje pentru aceasta platforma, este mai usor de implementat parți specifice in limbajele cele mai adecvate. Numarul limbajelor curent implementate este mai mare decat 10. Aceasta dezvoltare are in vedere si debugging- ul aplicatiilor dezvoltate in mai multe limbaje.
Independența de procesor si de platforma: CIL este independent de procesor. O data scrisa ¸si compilata, orice aplicație .NET (al carei management este facut de catre CLR) poate fi rulata pe orice platforma. Datorita CLR-ului, aplicatia este izolata de particularitățile hardware sau ale sistemului de operare.
Managementul automat al memoriei: In ceea ce priveste problemele de dealocare de memorie sunt in mare parte rezolvate. Overhead-ul indus de catre mecanismul de garbage collection este suportabil, fiind implementat in sisteme mult mai timpurii. E util sa mentionam ca la in prezent exista încă posibilitatea de a avea memory leak intr-o aplicație gestionată de catre platformă .NET.
Suportul pentru versionare: Ca o lectie invatata din perioada de “DLL Hell”, versionarea este acum un aspect de care se ține cont. Daca o aplicație a fost dezvoltată si testată folosind anumite componente, instalarea unei componente de versiune mai noua nu va atenta la buna funcționare a aplicației.
Sprijinirea standardelor deschise: Nu toate dispozitivele rulează sisteme de operare Microsoft sau folosesc procesoare Intel. Din aceasta cauza orice este strâns legat de acestea este evitat. Se folosește XML si cel mai vizibil descendent al acestuia, SOAP. Deoarece SOAP este un protocol simplu, bazat pe XML, ce folosește ca protocol de transmisie HTTP, el poate trece usor de firewall-uri, spre deosebire de DCOM sau CORBA.
Distribuirea ușoara: In prezent instalarea unei aplicații sub Windows înseamnă copierea unor fișiere in niște directoare anume, modificarea unor valori in registri, instalare de componente COM, etc. Dezinstalarea completa a unei aplicații este in majoritatea cazurilor o utopie. Aplicațiile .NET, datorita metadatelor si reflectării trec de aceste probleme. Se doreste ca instalarea unei aplicatii sa nu insemne mai mult decat copierea fisierelor necesare intr-un director, iar dezinstalarea aplicatiei sa se faca
prin stergerea acelui director.
Arhitectura distribuită: Asigură accesul la servicii Web distribuite.Acestea lucreaza impreuna la obținerea informației dorite. Platforma .NET asigură suport și tool uri pentru realizarea acestui tip de aplicații.
Interoperabilitate cu codul “unmanaged”: Codul “unmanaged” se refera la cod care nu se afla in totalitate sub controlul CLR. El este rulat de CLR, dar nu beneficiază de CTS sau garbage collection. Este vorba de apelurile funcțiilor din DLL-uri, folosirea componentelor COM, sau folosirea de către o componența COM a unei componente .NET. Codul existent se poate folosi în continuare.
Securitate: Aplicațiile bazate pe componente distribuite cer automat securitate. Cea mai folosita metoda de securizare, bazată pe drepturile contului utilizatorului în care codul suspectat este rulat într-un “sandbox”, fără acces la resursele critice , este înlocuit în.NET de un control mai fin, pe baza metadatelor din assembly (zona din care provine-ex. Internet, intranet, mașină locală, etc)
Capitolul 2 ASP.NET MVC
2.1 ASP.NET Overview
ASP.NET este un framework folosit pentru a construi aplicații și site –uri web utilizând tehnologii precum Html, CSS și Javascript. ASP.NET suportă 3 tipuri de abordări:
ASP.NET Web Forms –extinde modelul bazat pe interacțiunea cu utilizatorul în aplicațiile web.Browserul trimite un formular la server apoi acesta trimite ca răspuns o pagină în format HTML.Toate activitățile din partea clientului sunt trimise către server care le va procesa folosind stateful protocol în scopul de a reține informații despre sesiune .
ASP.NET MVC
ASP.NET Web Pages
Avantajele ASP.NET Web Forms
sprijină modelul bazat pe evenimente
folosește modelul Page Controller care adaugă funcționalități fiecărei pagini în parte
este folosit în general în cazul echipelor mici și a aplicațiilor cu complexitate mai mică
2.2 MVC Pattern
Model-View-Controller Model-View-Controller (MVC) este un model arhitectural care separă funcționalitatea specifică domeniului pentru care este dezvoltat sistemul software de interfața grafică a aplicației, permițând dezvoltarea, întreținerea și testare separată a celor două părți. În Figura3 este descris grafic modelul arhitectural MVC. Acest model împarte un sistem software în trei părți, și anume: controller, view și model.
Modelul gestionează datele sistemului software, răspunde la interogări referitoare la stare (de obicei solicitate de View) și realizează operații de modificare a datelor (de obicei invocate de controller).
În cazul sistemelor bazate pe evenimente, modelul notifică observatorii (de obicei view-urile), atunci când informația se modifică pentru ca aceștia să poată reacționa la aceste modificări. View-ul redă modelul într-o formă care permite interacțiunea cu utilizatorul, de obicei prin intermediul elementelor de interfață cu utilizatorul.
Pentru un singur model pot exista mai multe view-uri pentru a deservi diferite scopuri. Controller-ul recepționează acțiunile utilizatorului și răspunde interogând modelul.
2.3 ASP.NET MVC Arhitectură
ASP.NET MVC framework este o alternativă la ASP.NET Web Forms pentru crearea paginilor web bazate pe arhitectura MVC. Arhitectura MVC ajută la crearea de aplicații în care partea de programare este separată de partea de design. Această separare facilitează gestionarea aplicațiilor complexe.
2.4 Avantajele ASP.NET MVC framework
divizarea model, view, controller duce la o gestionare mai ușoară în cazul aplicațiilor complexe
oferă dezvoltatorilor un control deplin asupra comportamentului aplicației
asigură un excelent suport pentru testare (test-drive development TDD)
este recomandat în cazul aplicațiilor la care lucrează echipe mari
suportă toate funcționalitățile existe pentru ASP.NET cum ar fi Authentication ,Authorization,Data Binding,Routing ,Ușer Controls etc
Nu folosește concentul de View State (care e prezent în ASP.NET).
Conform Figure5 când un user scrie un URL în browser ,URL ajunge la server apoi apelează cel mai apropiat controller . Următorul pas în flow controllerul folosește cel mai apropiat view și model și crează un răspuns apoi îl trimite înapoi la user.
Pas1 : Browser-ul client trimite cerere pentru aplicatia MVC.
Pas 2: Global.ascx primește această cerere și efectuează rutarea bazate pe URL-ul de intrare cerere folosind obiecte RouteTable, RouteData, UrlRoutingModule și MvcRouteHandler.
Pas 3: Operația de rutare apelează cel mai apropiat controller și execută folosind IControllerFactory obiectul și metoda de executare MvcHandler object.
Pas 4: Controllerul procesează datele folosind modelul și invocând cea mai apropiată metodă folosind ControllerActionInvoker
Pas5:Modelul procesat este pasat la View care la randul sau trimite raspunsul la user
2.5 Model Binding
Model Binding în ASP.NET MVC mapeaza datele primite de la requestul HTTP la parametri metodei de acțiune .Parametri pot fi tipuri simple cum ar fi string, integers sau float sau tipuri complexe. Acesta e o mare facilitate în MVC deoarece maparea datelor in caz că mai există încă o data este de obicei un scnenariu care se repetă ,indiferent de mărimea sau complexitatea datelor . MVC rezolvă acesta problemă abstractizând înainte astfel încât developerii să nu trebuiască să aibă cod dublicat în fiecare versiune .
Principiu de funcționare :
Când Mvc primește un request HTTP, îi face rutarea la o anumită acțiune dintr-un controller. Astfel determină care metodă să o apeleze bazându –se pe rută data ,atunci făcându–se bindul între valorile primite de la requestul HTTP cu parametri metodei de acțiune .
De exemplu
Fie URL : http://something/movies/edit/2
Din moment ce ruta e {controller=Home}/{action=Index}/{id?}, movies/edit/2 => se va duce in Movies Controller si va apela metoda „Edit„ .De asemenea , accepta un parametru optional numit Id. Codul pentru medoda arata cam asa: public IActionResult Edit(int? id)
2.6 Validari
In ASP.NET MVC validarea modelului se face folosind atribute precum [Required], [Range(1, 100)], [StringLength(5)] etc.Toate aceste validari folosesc namespace-ul “System.ComponentModel.DataAnnotations”.
2.7 Action Filters
ASP.NET MVC suporta numai 4 tipuri de filters:
Filtrul de autorizare: ia deciziile în legătură cu posibilitatea de a executa o metodă , cum ar fi efectuarea de autentificare sau validarea unor prioprietati din request.
Filtru de acțiune : Acest filtru poate efectua o prelucrare suplimentară, cum ar fi furnizarea de date suplimentare metodei de acțiune, inspectarea valorii de întoarcere, sau anularea executarea metodei de acțiune.
Filtru de rezultat: Acest filtru poate efectua procesarea suplimentară a rezultatului cum ar fi modificarea răspunsului HTTP.
Filtru de excepție: care execută în cazul în care există o excepție aruncată și care nu e prinsă în metodă de acțiune, pornind cu filtrele de autorizare și terminând cu cele de rezultat.Filtrele de excepție pot fi folosite pentru task-uri precum logarea sau afișarea erorilor pe pagină .
2.8 HTML Helpers
HTML Helpers sunt folosiți cu rolul de a modifica Html output.
HTML Helpers nu au event model sau view state
În majoritatea cazurilor un Html helper e doar o metodă care returnează un string.
Cu MVC, îți poți crea proprii helperi sau să îi folosești pe cei predefiniti.
HTML Helpers pot fi folosiți pentru a modifica sau afișa următoarele elemente HTML :
BeginForm()
EndForm()
TextArea()
TextBox()
CheckBox()
RadioButton()
ListBox()
DropDownList()
Hidden()
Password()
Capitolul 3 LINQ
Language Integrated Query permite interogarea unor colecții de date folosind o sintaxă integrată în platformă .NET. Prin intermediul unor operatori se pot interoga colecții de forma: vectori, colecții, clase enumerabile, documente XML, baze de date relaționale. Datele rezultate sunt văzute ca obiecte; are loc o mapare (asociere, traducere) a unor date neobiectuale intr–un format ușor de folosit în limbajele obiectuale din cadrul plaformei. Trebuie menționat că sintaxa este unitară, independent de natură sursei de date.
Este introdusă interfață IQueryable<T>, care permite implementarea unor furnizori de date în modul specific sursei de date considerate. Expresia folosită pentru interogare este tradusă într-un arbore de expresie. Dacă colecția implementează IEnumerable<T>, atunci se folosește motorul de execuție LINQ local, integrat în platformă; dacă colecția implementează IQueryable<T>, atunci se folosește implementarea bazată pe arborele de expresie; această implementare este data de către furnizoare de LINQ.
Furnizoarele de LINQ sunt scrise in mod specific fiecarei surse de date, dar datorită respectării unor interfețe specificate, detaliile de implementare sunt irelevante pentru cel care folosește cod LINQ în interogare. LINQ a fost introdus în versiunea 3.5 a lui .NET Framework. Constă intr–un set de tool-uri care sunt folosite pentru lucrul cu date și extensii aduse limbajului.
Este alcătuit din:
LINQ to Objects – se aduc date din colecții care implementează IEnumerable<T> -datele interogate sunt deja în memoria procesului;
LINQ to XML – convertește documentele XML intr–o colecție de obiecte de tip XElement;
LINQ to SQL – permite convertirea interogărilor LINQ în comenzi SQL;
LINQ to DataSets – spre deosebire de LINQ to SQL care a venit inițial doar cu suport pentru SQL Server, LINQ to DataSets folosește ADO.NET pentru comunicarea cu baze de date;
LINQ to Entities – soluție Object/Relațional Mapping de la Microsoft ce permite utilizarea de Entities – introduse în ADO.NET 3.0 – pentru a specifica declarativ structură obiectelor ce modelează domeniul și folosește LINQ pentru interogare.
In prezent există următorii furnizori de date LINQ:
1. LINQ to MySQL, PostgreSQL, Oracle, Ingres, SQLite ¸si Microsoft SQL Server
2. LINQ to CSV
3. LINQ to Google
4. LINQ to NHibernate
Capitolul 4 Javascript
4.1 JavaScript Definitie
JavaScript (JS) este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor functionalităti în paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa în construirea siturilor webClient-side Javascript
Client-side Javascript este cea mai utilizată formă a limbajului.Scriptul ar trebui inclus sau referențiat de un document HTML pentru că și codul să fie interpretat de către browser. Această inseamnă că o pagină web nu trebuie să fie un HTML static, dar pot include programe care interactionează cu utilizatorul, controlează browser-ul și crează în mod dinamic conținut HTML.
Mecanismul de client-side JavaScript oferă multe avantaje fată de tradiționale CGI server-side script-uri. De exemplu, s-ar putea folosi JavaScript pentru a verifică dacă utilizatorul a introdus o adresă de mail valida într-un câmp de formular. Codul JavaScript este executat atunci când utilizatorul da click pe submit și atunci când toate câmpurile sunt completate corect ar trebuie să ajungă la serverul Web.
Avantaje :
Mai putina interactiune cu serverul : validarea datelor introduse de utilizator înainte de a trimite pagina off la server. Acest lucru economisește traficul de server, ceea ce înseamnă mai puțin de încărcare pe server.
Feedback-ul imediat pentru vizitatori – Ei nu trebuie să aștepte o pagină pentru a vedea reload dacă au uitat să intre ceva.
Interactivitate crescută – Puteți crea interfețe care reacționează atunci când utilizatorul trece peste ele cu un mouse sau să le activează prin intermediul tastaturii.
Interfețe mai complexe – utiliza JavaScript pentru a include elemente cum ar fi componente drag-and-drop și glisoarele pentru a da o interfață mai complexa pentru vizitatorii site-ului.
Limitari :
Nu putem trata JavaScript ca limbaj de programare cu drepturi depline. Îi lipsesc următoarele caracteristici importante :
Client-side JavaScript nu permite citirea sau scrierea de fișiere. Acest lucru a fost păstrat pentru motive de securitate.
JavaScript nu poate fi folosit pentru aplicații în rețea, deoarece nu există nici un astfel de sprijin este disponibil.
JavaScript nu are nici un capabilități multithreading sau multiprocesor.
JavaScript este un limbaj de scripting interpretat usor de folosit , care permite construiastruirea de interactivitate în pagini HTML statice.
4.2 Jquery
JQuery este o platformă de dezvoltare JavaScript, concepută pentru a ușura și îmbunătăți procese precum traversarea arborelui DOM în HTML, managementul inter-browser al evenimentelor, animații și cereri tip AJAX. JQuery a fost gândit să fie cât mai mic posibil, disponibil în toate versiunile de browsere importante existente.
JQuery se poate folosi pentru a rezolva următoarele probleme specifice programării web:
selecții de elemente în arborele DOM folosind propriul motor de selecții open source Sizzle, un proiect născut din jQuery
parcurgere și modificarea arborelui DOM (incluzând suport pentru selectori CSS 3 și XPath simpli)
înregistrarea și modificarea evenimentelor din browser
manipularea elementelor CSS
efecte și animații
cereri tip AJAX
extensii ( vezi mai jos )
utilităti – versiunea browser-ului, funcția each.
Plugin-urile sau extensiile sunt unele dintre cele mai interesante aspecte ale jQuery. Arhitectura sa permite programatorilor să dezvolte subaplicații bazate în biblioteca principală care extind funcțiile de bază jQuery cu funcții specifice plugin-ului. În acest fel biblioteca principală poate ocupa foarte puțin spațiu, iar extensiile necesare în anumite pagini web pot fi încarcate la cerere, doar când este nevoie de ele. Există un set de extensii principal numit jQuery UI( jQuery User Interface) . jQuery UI ofera un set de extensii pentru interactivitate de bază, efecte mai complexe decât cele din biblioteca de bază și teme de culori.
Avantajul jQuery UI față de alte extensii este că dezvoltarea și testarea acestor componente se face în paralel cu dezvoltarea bibliotecii principale, minimizând riscul de incomptibilitate.
Capitolul 5 CSS
5.1 Definitie
CSS(Cascading Style Sheets) descrie modul în care elementele HTML vor fi afișate pe ecran. CSS e foarte util in cazul in care vrem sa utilizam acelasi document pentru mai multe pagini simultan.
5.2 Bootstrap
Bootstrap e cel mai popular Html,CSS și Javascript framework pentru construirea de site uri responsive.
Avantaje :
Este suportat de toate browserele populare.
Este usot de folosit. Nu necesită decât cunoștințe minime de HTML și CSS
Design receptiv-Bootstrap receptiv CSS ajustează la desktop-uri, tablete și telefoane mobile
Oferă o soluție curată și uniformă pentru construirea unei interfețe pentru dezvoltatori.
componente și funcționalitățile incorporate sunt ușor de personalizat.
Capitolul 6 Arhitectura aplicației
6.1 Scopul aplicației
Article Manager este o platformă care face managmentul articolelor .Userii pot vedea articolele cele mai noi cu scopul de la fi informați cât mai rapid și eficient în legătură cu evenimentele care au loc în viitorul apropiat. Aplicația are 2 tipuri de logări : admin și user
Adminul poate să facă managmentul la articolele adăugate , dar userul nu poate decât să vadă în lista de articole articolele adăugate de admin.
Admin poate:
Adauga un articol
Edita un articol
Sterge un articol
Sorta/filtra dupa mai multe criterii
Prioritiza articole prin reordonare
Userul poate:
Vizualiza articole in browser.
Un articol poate avea statusul de:
create
publish
unpublish
6.2 Arhitectura aplicației
Tehnologii folosite : Nlog,InversionOf Control,DI
Baze de date : Nhibernate
Framework uri : ASP.NET MVC
Data Transfer Object(DTO): este un obiect care transportă date între procese. Motivația pentru utilizarea sa are de a face cu faptul că comunicarea între procese se face de obicei recurge la interfețe la distanță (de exemplu servicii web), în cazul în care fiecare apel este o operație costisitoare.
Data Access Layer (DAO) : este un obiect care oferă o interfață abstractă pentru un anumit tip de baze de date sau de alt mecanism de persistenta. Prin maparea apelurilor la stratul de persistența, DAO oferă unele operații specifice de date, fără a expune detalii ale bazei de date.
Prezentation Layer(PL): responsabil pentru livrarea și formatarea informațiilor către application layer pentru prelucrare ulterioară sau afișare
Business Logic Layer(BLL): este layer ul care contine logica aplicatiai. Face legatura intre Prezentation Layer si Data Access Layer.
6.3 Database
Baza de date contine tabele precum Article,ArticleList,ContentType,Article Status,User,ArticleCat.
Tabelul playlist contine cheile primare de la ArticleCat, User, ArticleStatus, Article_Slide.
Un articol poate avea o lista categorii din care poate face parte :
IT
Birthday this month
News
De asemenea un articol poate avea urmatoarele statusuri:
Created
Published
Unpublish
Ca si content type uri :
videoLink(youtube)
picture
document(pdf,ppt)
6.4 Pattern uri :
MVC
Model-View-Controller Model-View-Controller (MVC) este un model arhitectural care separă funcționalitatea specifică domeniului pentru care este dezvoltat sistemul software de interfața grafică a aplicației, permițând dezvoltarea, întreținerea și testare separată a celor două părți.
Modelul gestionează datele sistemului software, răspunde la interogări referitoare la stare (de obicei solicitate de View) și realizează operații de modificare a datelor (de obicei invocate de controller).
În cazul sistemelor bazate pe evenimente, modelul notifică observatorii (de obicei view-urile), atunci când informația se modifică pentru ca aceștia să poată reacționa la aceste modificări. View-ul redă modelul într-o formă care permite interacțiunea cu utilizatorul, de obicei prin intermediul elementelor de interfață cu utilizatorul.
Pentru un singur model pot exista mai multe view-uri pentru a deservi diferite scopuri. Controller-ul recepționează acțiunile utilizatorului și răspunde interogând modelul.
Capitolul 7 Implementare
7.1 Descriere module
BusinessLogicLayer : acolo se afla logica aplicatiei
DataAccessLayer : conține maparile entitatilor , entitățile,metode ce țin de bază de date(query-uri) și interfețe pentru fiecare model . Structurarea este facuta astfel :
DocumentOperation : se ocupă cu parsarea fișierelor .Sunt folosite librarii precum : Itextsharp, GhostscriptSharp
DtoLayer : pentru a nu lucra direct cu baza de date folosim DTO .Motivele sunt pentru că e secure și ne aducem doar entitățile din baza de date de care avem nevoie. După cum se poate observă în arhitectura aplicației fiecare proiect are o referință la Dto . Asta înseamnă că mai sus de Dao vom lucra cu Dto- uri care conține aceleași entități ca Dao dar când ajungem la cel mai jos nivel (Dao) se face schimbarea .
UserManagment:Acest modul se ocupă cu partea de logare . Logarea se face pe baza unui fisier XML. Motivatia este ca avand in vedere ca doar adminul poate face managment la itemi e mai eficient in modul acesta. In plus pot exista mai multi administratori.
Functia de autentificare are 2 parametri:username si parola.
GetUsers() este metoda care se ocupa cu parsarea xml care contine un username, parola si email.
Query ul returneaza true daca parola ,username introdus de user coincid cu cele din fisier .
PresentationLayer :Acest modul conține View urile .Tot ce ține de prezentare,UI se face in acest modul . Acest modul are o structura deja definita de cand creezi un nou proiect de tip ASP.NET MVC
NlogModule: E un wrapper peste Nlog. Nlog este folosit pentru a loga actitatea userului cat si erorile cu scopul da a veni în ajutorul developerilor în cazurile în care nu îți poți da seama de unde vine eroarea .
DependencyInjection: Modulul are rolul e a ne putea permite că facem injectarea prin constructor . Consecință ar fi că , clasele ar fi slab cuplate între ele ceea ce înseamnă că o schimbare în clasă inferioară nu afectează clasă care depind ea.
Ca prim pas pentru a face DependecyInjection e obligatoriu ca si modulele sa fie interfatate . Daca dorim sa folosim un obiect de tip declaram interfata care contine metodele implmentate in clasa/modulul respectiv .
Injectarea prin constructor are scopul de a elimina dependintele ( instantierea cu new ) . Astfel ca asa cum putem vedea in prima poza constructorul are ca parametru variabilele declarate in poza 2.
Capitolul 8 Manual de utilizare
8.1 Logare
Logarea în aplicație se face completând cele 2 câmpuri din formular (username și parolă).
Dacă datele sunt corecte ne va redirecta care HomePage altfel ne va arata mesaj de eroare și ne va menține tot pe pagina de logare
8.2 Articles list
Pe acesta pagină vedem articolele adăugate anterior. Pe acesta pagină găsim un tabel care conține următoarele:
Title: reprezintă titlul articolului
Author: reprezintă autorul unui articol
Status: reprezintă statusul unui articol. La adăugarea unui articol ,acesta este pus automat pe statusul „ created” . Acesta poate fi modificat la editare. În afară de created, un articol poate avea statusul publish, unpublish. Folosim statusul publish atunci când dorim că un articol să apară în slider.
Duration: reprezintă timpul în care un articol stă pe slider.
Content Type : reprezintă tipul articolului adăugat.
Un articol are un titlu, autor,status, durată și Content Type.
Acțiunile care se pot face sunt reprezentate în partea dreaptă a tabelului după cum urmează:
Primul simbol: reprezintă opțiunea de a vedea mai detaliat pentru fiecare articol atributele din tabel cât și un preview al elementului adăugat
Al doilea simbol: reprezintă opțiune de a edita item ul selectat
Al treilea simbol: reprezintă opțiunea de ștergere a articolului selectat.
În plus mai există posibilitatea de la sorta și filtra articolele din pagină după o coloană sau mai multe. Butonul din capătul tabelului(X) are rolul de a curăța toate filtrele adăugate .
8.3 Adăugare articole
Pentru a adăuga un articol trebuie să dăm click pe butonul „Add article” . Apoi ne va apărea formalarul de mai jos unde ni se va cere să completam câmpurile respective. În funcție de ce content type alegem ni se va adaugă un câmp unde se va cere url/path care fișier.
Daca alegem picture ca și content type va trebui să setam un Air time ( timpul in care un item stă pe slider ) cat si să facem upload la un fișier cu extensia jpg sau png.
În cazul în care nu completam câmpurile arată mesaj .
La final apăsam pe create și dacă am completat toate câmpurile corect ne va apărea un mesaj de informare .
8.4 Vizualizare detalii articol
Din pagina de details un articol poate fi editat, șters sau publicat. În partea dreptă există un preview la articol și un loading bar pentru a știi câte secunde mai are . (în funcție de air time)
Atunci când apăsam pe butonul de edit ne să redirecta care pagină de editare.
8.5 Sortare si filtrare
Filtrarea se poate poate face după unul sau mai multe câmpuri. Când dorim să ștergem toate filtrele dăm click pe butonul din drepta (x) care curată toate câmpurile completate.
După cum se poate observa în prima poză am făcut o filtrare după titlu având că și condiție să conțină litera L. Rezultatul filtrării :
Pentru a complica puțin lucrurile am aplicat și o a doua filtrare după durată: 20
Rezultatul filtrarii este :
Sortarea se face ascendent sau decendent folosindu- ne de sageata din dreapta coloanei .
Inainte de filtrare:
Dupa filtrare:
8.5 Editare
Pentru a edita un articol trebuie să aibă statusul „Created”. Un articol publish nu poate fi editat. În cazul în care încercam să edităm un articol cu statusul published ne va apărea un mesaj de informare .
Atunci când dorim să edităm trebuie să știm statusul, categoria și content Type ul nu pot și modificate.
La fel că la pagină de details avem partea de preview în partea dreaptă .
8.6 Playlist
În playlist apar toate articolele care au statusul „published” . Ca action uri putem reordona articolele cu scopul de a le schimba ordinea de afișare în slider.
Pe pagină apare și butonul de Save care are rolul de a salva modificările.
După ce am schimbat ordinea punând articolul numit „Licenta „ pe primul loc contentul s a reordonat
8.7 Slider
În slider apar toate articole cu statusul „ published” ordonate în funcție de prioriați.
Acesta are un progress bar care corespunde unui articol în funcție de air time ul dat .
Capitolul 9 Concluzii
.NET este un framework care permite realizarea, distribuirea și rularea aplicațiilor desktop Windows și aplicațiilor WEB.
Unul dintre avantajele framework ului este că asigură portabilitatea codului compilat intre diferite calculatoare cu sistem Windows. Un alt lucru important este ca .Net asigura reutilizearea codului în programe, indiferent de limbajul de programare utilizat.
ASP.NET MVC framework este o alternativă la ASP.NET Web Forms pentru crearea paginilor web bazate pe arhitectura MVC. Arhitectura MVC ajută la crearea de aplicații în care partea de programare este separată de partea de design. Această separare facilitează gestionarea aplicațiilor complexe.
Am ales acesta temă pentru că nevoie de aplicații care permita persoanelor să fie mereu la curent cu ce se întâmplă. Utilitatea acestor tipuri de aplicații este data în funcție de informațiile oferite, formatul în care apăr și factori precum ușurința de folosire a aplicației .
Bibliografie
Lucian Sasu, CursDotNetSassu
Microsoft, Microsoft .NET Framework
Jeffrey Palermo, ASP.NET MVC 4 In Action
https://en.wikipedia.org/
http://www.tutorialspoint.com/csharp/
http://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm
http://www.asphostdirectory.com/Images/lg_aspmvc5.png
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Article Manager (ID: 110166)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
