240 likes | 359 Views
ASP.NET MVC (1.0). Introducere în dezvoltarea aplicațiilor web. Radu-Mihail Obadă radu-mihail.obada @ student-partners.com. Aplicație web?. „O aplicație care este accesată prin intermediul unui navigator web peste o rețea precum Internet sau intranet.” [ Wikipedia ]. Model View Controller.
E N D
ASP.NET MVC (1.0) Introducere în dezvoltarea aplicațiilor web Radu-Mihail Obadă radu-mihail.obada@student-partners.com
Aplicație web? • „O aplicație care este accesată prin intermediul unui navigator web peste o rețea precum Internet sau intranet.” [Wikipedia]
Model View Controller • „Șablon arhitectural folosit în ingineria software. Izolează logica aplicației (business logic) de prezentare și input.” [Wikipedia] • 1979, Smalltalk la Xerox PARC • Mai multe arome: Model View Presenter (.NET Framework), „model-view-controller-connector” (XForms) etc.
MVC—pe web • Foarte popular pentru dezvoltarea aplicațiilor web. • În special în frameworks agile (Spring Web MVC, Ruby on Rails etc.) • Permite o separare excelentă a responsabilităților (concerns) pentru aplicații distribuite n-tier, i. e. cele mai multe aplicații web.
MVC: Model • Reprezentarea datelor specifice domeniului. • Domain logic structurează datele, dându-le înțeles. • Modelul nu este data access layer, dar DAL se subînțelege că e încapsulat de model.
MVC: View • Prezintă, într-un mod sau altul, modelul. • Pot exista mai multe views pentru același model. • De cele mai multe ori, reprezintă interfața cu utilizatorul.
MVC: Controller • Liantul MVC. • Primește și gestionează interacțiunea cu utilizatorul (input). • Apelează modelul. • Inițiază un răspuns.
Exemplu arhitectural • Model: business objectscare implementează business rules, i. e. Persoană, Contact etc. • View: (X)HTML, generat de aplicație plecând de la datele din model. • Controller: tratează cererile HTTP GET și HTTP POST, le direcționează către business objects și prezintă views.
Microsoft: evoluția platformei web • Programe CGI și filtre ISAPI (anii ‘90) pentru IIS. • Active Server Pages (sfârșitul anilor ‘90): sistem de șabloane (templating), cod și mark-up în același loc, dynamic scripting • ASP.NET (2002): model de programare bazat pe evenimente; postbacks și viewstate
ASP.NET MVC: de ce? (1) • MVC • Decuplarea straturilor. • Separarea responsabilităților (concerns). • Test-Driven Design.
ASP.NET MVC: de ce? (2) • Control integral asupra codului HTML. • Motoare multiple pentru prezentare (view engines). • URL-uri curate. • Ușurință REST.
ASP.NET MVC versus Web Forms ASP.NET MVC ASP.NET Web Forms • Model, View, Controller • Test-Driven Design • Control total al HTML-ului generat • Interfețe REST pentru ULR-uri • Se integrează excelent cu jQuery sau ExtJS • Permite o abordare agilă • Model bazat pe evenimente • Mediu RAD • Controale server-side puternice • Ascunde problema păstrării stării • Ecosistem foarte bogat, în special pentru controale • Foarte ușor de abordat de dezvoltatorii desktop
Cum se întâmplă? (1) • UrlRoutingModule->Route. • Route->IRouteHandler. • IRouteHandler->MvcHandler. • MvcHandler->Controller.
ASP.NET MVC: Routing • Mapează un URL pe o acțiune a unui controller • Web.config (nu) sau Global.asax • RouteTable, se parcurge de sus în jos • Parametrizate • Pot adăuga constrângeri
ASP.NET MVC: Controllers • O simplă clasă • Pot deriva din System.Web.Mvc.Controller • Metodele sunt acțiuni • Acțiunile întorc un rezultat: • view • nimic • conținut • … • Orice altceva este convertit în text
ASP.NET MVC: Views • Motorul implicit pentru views este… WebForms! • Nu mai am controale server (<asp:… />) • Script blocks: <% %> • HTML Helpers: funcționalități de-a gata pentru bucățile de HTML utilizate des • Pot avea views parțiale • Pot schimba motorul de views
ASP.NET MVC: Model • Business objects • POCO: Plain Old C# Objects • Entity Framework • LINQ to SQL • …
ASP.NET MVC: hands-on lab Un laborator intensiv despre ASP.NET MVC organizat de echipa Microsoft Student Partners
MVC: Implementări alternative • MonoRail • Maverick.NET • PureMVC • Spring Framework .NET
Resurse • http://asp.net/mvc/—situl oficial • http://msdn.microsoft.com/en-us/aa336522.aspx—MSDN • http://weblogs.asp.net/Scottgu/—Scott Guthrie
Resurse (2) • http://fmi.unibuc.ro/msp/—Echipa MSP @ fmi, unibuc • radu-mihail.obada@student-partners.com (eu)
Fin Mulțumesc!