Cuprins 1
Introducere 2
Capitolul 1. Concepte și șabloane care au influențat dezvoltarea aplicației 4
1.1 Domain Driven Design – Arhitectură dezvoltată pe baza domeniului 4
1.1.1 The Ubiquitous Language – limbajul universal 5
1.1.2 Layer architecture – arhitectură multistratificată 6
1.1.3 Entități 7
1.1.3 Obiecte Valori 8
1.1.4 Servicii 8
1.1.5 Module 9
1.1.6 Agregări 10
1.1.7 Factories 11
1.1.8 Repositories 11
1.2. Principiile S.O.L.I.D. 12
1.2.1. Single Responsability Principle - principiul responsabilităţii unice 12
1.2.2. Dependency Injection 12
1.2.3 Open Closed Principle 13
1.2.4 Liskov Substitution Principle 13
1.2.5 Interface Segregation Principle 13
1.3. Inversiune a controlului 13
1.4. Model View Controller 14
Capitolul 2. Motivația pentru alegerea platformelor și a limbajului 15
2.1 Aspecte generale ale platformei .NET 15
2.2 Aspecte ale limbajului C# 16
2.3 Aspecte ale tehnologiei ASP.NET, particularizat pentru ASP.NET MVC 18
2.4 Aspecte ale dezvoltării aplicațiilor web 20
2.5 Aspecte ale utilizării unui sistem de gestiune a bazelor de date obictuale 22
Capitolul 3. Librării implicate în dezvoltarea aplicației 24
3.1 Librăria StructureMap 24
3.2 Librăria Db4objects 26
3.3 Librăriile MvcContrib 28
3.4 Librăria FluentRegEx 28
3.5 Librăria Lucene.NET 28
3.6 Librăria BlueprintCss 29
3.7 Librăria JQuery 30
Capitolul 4. Arhitectura aplicației 32
32
4.1 Infrastructura 32
4.1.1 Configurații 32
4.1.2 Utilități 33
4.1.3 Persistență 33
4.2 Controlul aplicației 34
4.3 Modelul aplicației 34
4.3.1 Domeniul aplicației 34
4.3.2 Serviciile aplicației 35
4.4 Modulul de prezentare al aplicației 35
Capitolul 5. „Universum” 37
5.1 Rolurile utilizatorilor 37
5.1.1 Atribuțiile asociate utilizatorului cu rol de „super” 37
5.1.2 Atribuțiile asociate utilizatorului cu rol „anonymous” 37
5.1.3 Atribuțiile asociate utilizatorului cu rol „teacher” 38
5.1.4 Atribuțiile asociate utilizatorului cu rol „student” 38
5.2 Funcțiile aplicației 38
5.2.1 Crearea de resurse 38
5.2.2 Oferirea de feedback 38
5.2.3 Secțiunea „Home” 38
5.2.4 Secțiunea „Blogs” 39
5.2.5 Secțiunea „Question IT” 39
5.2.6 Secțiunea „Classes” 39
5.2.7 Secțiunea „My classes” 40
Bibliografie 41
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.