introducere în dezvoltarea aplicațiilor web radu-mihail obad ă...
Post on 19-Dec-2015
243 views
TRANSCRIPT
ASP.NET MVC (1.0)Introducere în dezvoltarea aplicațiilor web
Radu-Mihail Obadă [email protected]
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 PARCMai multe arome: Model View Presenter
(.NET Framework), „model-view-controller-connector” (XForms) etc.
MVC în imagini
MVC—pe webFoarte 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: ModelReprezentarea 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: ViewPrezintă, î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: ControllerLiantul MVC.Primește și gestionează interacțiunea cu
utilizatorul (input).Apelează modelul.Inițiază un răspuns.
Exemplu arhitecturalModel: business objects care 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 webPrograme 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)MVCDecuplarea 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 FormsASP.NET MVC ASP.NET Web FormsModel, View, ControllerTest-Driven DesignControl total al HTML-
ului generatInterfețe REST pentru
ULR-uriSe integrează excelent
cu jQuery sau ExtJSPermite o abordare agilă
Model bazat pe evenimente
Mediu RADControale server-side
puterniceAscunde problema
păstrării stăriiEcosistem foarte bogat,
în special pentru controale
Foarte ușor de abordat de dezvoltatorii desktop
Cum se întâmplă? (1)1) UrlRoutingModule->Route.2) Route->IRouteHandler.3) IRouteHandler->MvcHandler.4) MvcHandler->Controller.
Cum se întâmplă? (2)Stadiu Detalii
Primește prima cerere pentru aplicație
Global.asax, Route sunt adăugate la RouteTable
Routing UrlRoutingModule->(…)->Controller
MVC Request Handler MvcRouteHandler->MvcHandler
Se creează Controller MvcHandler->IControllerFactory
Se execută Controller Controller->Execute()
Se invocă o acțiune Controller->Action()
Se execută rezultatul View
ASP.NET MVC: RoutingMapează un URL pe o acțiune a unui
controllerWeb.config (nu) sau Global.asaxRouteTable, se parcurge de sus în josParametrizatePot adăuga constrângeri
ASP.NET MVC: ControllersO simplă clasăPot deriva din System.Web.Mvc.ControllerMetodele sunt acțiuniAcțiunile întorc un rezultat:
viewnimicconținut…
Orice altceva este convertit în text
ASP.NET MVC: ViewsMotorul 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 desPot avea views parțialePot schimba motorul de views
ASP.NET MVC: ModelBusiness objectsPOCO: Plain Old C# ObjectsEntity FrameworkLINQ to SQL…
ASP.NET MVC: hands-on lab
Un laborator intensiv despre ASP.NET MVC organizat de echipa Microsoft Student
Partners
MVC: Implementări alternativeMonoRailMaverick.NETPureMVCSpring Framework .NET
Resursehttp://asp.net/mvc/—situl oficialhttp://
msdn.microsoft.com/en-us/aa336522.aspx—MSDN
http://weblogs.asp.net/Scottgu/—Scott Guthrie
FinMulțumesc!