Abstract 1
Introducere 3
Capitolul 1. Concepte și șabloane care au influențat dezvoltarea aplicației 5
1.1 Domain Driven Design – Arhitectură dezvoltată pe baza domeniului 5
1.1.1 The Ubiquitous Language – limbajul universal 6
1.1.2 Layer architecture – arhitectură multistratificată 7
1.1.3 Entități 8
1.1.3 Obiecte Valori 9
1.1.4 Servicii 9
1.1.5 Module 10
1.1.6 Agregări 11
1.1.7 Factories 12
1.1.8 Repositories 12
1.2. Principiile S.O.L.I.D. 13
1.2.1. Single Responsability Principle - principiul responsabilităţii unice 13
1.2.2. Dependency Injection 13
1.2.3 Open Closed Principle 14
1.2.4 Liskov Substitution Principle 14
1.2.5 Interface Segregation Principle 14
1.3. Inversiune a controlului 15
1.4. Model View Controller 15
Capitolul 2. Motivația pentru alegerea platformelor și a limbajului 17
2.1 Aspecte generale ale platformei .NET 17
2.2 Aspecte ale limbajului C# 18
2.3 Aspecte ale tehnologiei ASP.NET, particularizat pentru ASP.NET MVC 20
2.4 Aspecte ale dezvoltării aplicațiilor web 22
2.5 Aspecte ale utilizării unui sistem de gestiune a bazelor de date obictuale 24
Capitolul 3. Librării implicate în dezvoltarea aplicației 26
3.1 Librăria StructureMap 26
3.2 Librăria Db4objects 28
3.3 Librăriile MvcContrib 30
3.4 Librăria FluentRegEx 30
3.5 Librăria Lucene.NET 30
3.6 Librăria BlueprintCss 31
3.7 Librăria JQuery 32
Capitolul 4. Arhitectura aplicației 34
34
4.1 Infrastructura 34
4.1.1 Configurații 34
4.1.2 Utilități 35
4.1.3 Persistență 35
4.2 Controlul aplicației 36
4.3 Modelul aplicației 36
4.3.1 Domeniul aplicației 36
4.3.2 Serviciile aplicației 37
4.4 Modulul de prezentare al aplicației 37
Capitolul 5. „Universum” 39
5.1 Rolurile utilizatorilor 39
5.1.1 Atribuțiile asociate utilizatorului cu rol de „super” 39
5.1.2 Atribuțiile asociate utilizatorului cu rol „anonymous” 39
5.1.3 Atribuțiile asociate utilizatorului cu rol „teacher” 40
5.1.4 Atribuțiile asociate utilizatorului cu rol „student” 40
5.2 Funcțiile aplicației 40
5.2.1 Crearea de resurse 40
5.2.2 Oferirea de feedback 40
5.2.3 Secțiunea „Home” 41
5.2.4 Secțiunea „Blogs” 41
5.2.5 Secțiunea „Question IT” 42
5.2.6 Secțiunea „Classes” 43
5.2.7 Secțiunea „My classes” 44
5.2.8 Căutarea informațiilor 44
Bibliografie 46
Problemele sunt și mai accentuate într-un domeniu relativ nou și care se află într-o continuă schimbare și expansiune. Cu toate tehnologiile noi care apar în fiecare zi este destul de greu să te oprești din a învăța, iar pentru a învăța cu succes este nevoie de selectarea unor surse cât mai bine documentate.
În aproximativ 6 ani domeniul acesta împreună cu anumite direcții pe care mi-am concentrat studiul au suferit schimbări dramatice. Limbajul în sine a introdus foarte multe schimbări ajungând azi să se asemene din ce în ce mai mult cu un limbaj funcțional, dar păstrându-și proprietățile de limbaj static, orientat pe obiect și evident limitările impuse de modul în care a fost proiectat atât compilatorul, cât și sintaxa limbajului.
Propunerea mea este simplă și presupune construirea unei comunități alcătuite din profesorii și studenții facultății. Calitatea materialelor este mai ușor de controlat în acest fel și promovează o structură de colaborare mult mai strânsă. Profesorii vor avea mereu materiale pe care le vor putea modifica și îmbunătății pe de o parte, pe de altă parte studenții își pot manifesta gândurile și ideile ei înșiși. Speranța mea e că vor fi auziți și că se vor implica din dorința de a se manifesta și de a le fi recunoscute vocile.
Ideea aceasta a rămas cu mine și s-a format într-un interval de timp destul de mare. Pe măsură ce cunoștințele tehnice pe care mi le-am însușit au crescut în număr, nevoia și dorința de a împărtăși acestea cu cei din jur a fost din ce în ce mai aprinsă. Un alt factor important era că aveam și încă mai am o grămadă de idei pe care aș vrea să le încerc și să obțin feedback de la cei din jur. Anumite concepte nu pot fi exprimate ușor și cel mai bine e să ai un set de persoane pe care să te bazezi că îți vor împărtăși părerile sau te vor ghida spre noi răspunsuri. Acest tip de feedback din nefericire nu l-am găsit în facultate, toată lumea pare oarecum asorbită de propriile eșecuri și succesuri și nu prea există o comunicare productivă între membri.
Un factor foarte important și relativ motivant pentru a dezvolta această idee este dorința de a ușura studenților, noi sau mai vechi, accesul la cunoștințele pe care unii le-am asimilat, altele nu le-am putut nici măcar înțelege. Există materii la care unii se descurcă pur și simplu mai ușor pentru că șabloanele pe care gândirea lor este formată se mapează mult mai ușor la conceptul prezentat. Important e să cunoști aceste persoane și să poți cere sfaturi.