2 11 15 presenterpresenterviewview modelmodel iviewiview
TRANSCRIPT
ASP.NET MVC
Csala PéterELTE - [email protected]://csalapeter.spaces.live.com
A WebForms új vetélytársa
2
TartalomASP.NET most
Design Patterns
Model View Presenter
Model View Controller
Standard WebForms-os világ
Milyen a mostani ASP.NET-es webfejlesztés?• Kényelmes
• 80+ vezérlő alapból• Töménytelen szolgáltatás
• Membership, Roles, Profile, Cache, Trace, State Managment, stb.
• Eseményvezérelt• Lefordítható kód• WYSIWYG editor
• Gyorsan fejleszthetünk benne• Rapid Application Deployment (RAD)
• Könnyű publikáció + karbantartás• Egyszerű Monitorozhatóság
EZ MIND SZÉP ÉS JÓ, DE…
Mi ezzel a probléma?
Nézzünk meg egy markup kódot!
Mi van benne?• UI – felhasználói felület• Presentation logic – megjelenítési logika• Business logic – üzleti logika• Data Access – Adat elérés
Probléma: Nehéz átlátni, nem különülnek el a rétegek
Mi ezzel a probléma? (folyt.)
Nézzük meg a generált kódot!
Mi van benne?• Sok javascript • PostBack miatt >> eseményvezéreltség• Validáció miatt
• Sok hiddenfield• ViewState miatt
Probléma: Kicsi a kontroll a generált kód felett
Egy egyszerű példa
Mi ezzel a probléma? (folyt.)
Nézzünk meg egy URL-t!
Mi van benne:• Sok GET-es paraméter• Pl.: Show.aspx?ID=2b3c1233-0d22-4094-a177-
7caaf89903b0&Size=10&Anonim=1
Probléma:• Nehezen megjegyezhető• Nehezen olvasható• Könnyen módosítható
Megoldás
DP + ASP.NET MVC
11
TartalomASP.NET most
Design Patterns
Model View Presenter
Model View Controller
Design Patterns
Tervminták
Szoftver technológiai fogalom
Szoftver = termék => kell hozzá előállítási technológia
Terv minták 4 alap komponense:• Név• Feladat• Megoldás• Következmények
Mit tartalmaz egy DP?
Minta neve, osztálya, más nevek
Cél, Motiváció
Felhasználhatóság
Szerkezet, Elemek, Együttműködés
Következmények
Implementáció, Példa kód
Ismert használat, Rokon minták
Tervminták nagyság rendje
Pl.: Observer pattern (Megfigyelő)• Egy kisebb problémát old meg• Egyszerűen megvalósítható• Nem befolyásolja az alkalmazás
szerkezetét
Pl.: Model-View-Controller• A teljes alkalmazás szerkezetére kihatással van• ASP.NET-ben alapból nehezen megvalósítható• Nagy problémát old meg
15
TartalomASP.NET most
Design Patterns
Model View Presenter
Model View Controller
Model View XXX
Az alkalmazás rétegeinek megfelelő szeparációja• 3 komponensre bontás
Model: Adatelérés, Üzleti logika
View: Megjelenés
XXX: Alkalmazás lefolyásának vezérlése
Model View Presenter
Modell-Nézet-Megjelenítő• MVC egy átdolgozása• Kibővítése az Observer pattern-nel
Model szolgáltatja az adatokat, logikát
View megjeleníti az adatokat + kezeli az input-ot, de egyből tovább is passzolja
Presenter kommunikál a Model-lel, illetve a View-val (utóbbival egy interfészen keresztül)
Model View Presenter
PresenterView
Model
IView
Model View Presenter
A Standard WebForms-os világban is megvalósítható
20
demodemo
Az alapkoncepció (View <> Presenter)A pontos idő példa
demodemo
A kommunikáció (View >< Presenter)A pontos idő példa 2.0
MVP Frameworks for .NET
Web Client Software Factory• http://www.codeplex.com/websf
NMVP Framework• http://www.codeplex.com/nmvp
MVC# Framework• http://www.mvcsharp.org/
Stb.
23
TartalomASP.NET most
Design Patterns
Model View Presenter
Model View Controller
Model View Controller
Model-Nézet-Vezérlő
Web-es alkalmazásoknál ez jobban elterjedt
Kicsit másképp működik, mint az MVP
Model: Adatelérés, Üzleti logika
View: Adatok megjelenítése
Controller: Alkalmazás lefolyásának kezelése + felhasználói interakciók kezelése
Model View Presenter
Controller View
Model
MVC vs. MVP
27
demodemo
MVC "Hello World"
demodemo
MovieApp
Demo
ASP.NET Routing
Model
Controller
View
Repository pattern
Unit Test
Validation
Authorization
Design
MVC előnyei
A 3 réteg szép szeparációja• Gyengén kötés >> egyszerű és könnyű módosíthatóság
Csapatmunka elősegítése
Intuitív URL
Teljes kontroll a generált HTML, JavaScript felett
Egyszerű tesztelhetőség
TDD (Test-Driven Deployment) lehetőség• Red/Green/Refactor
ASP.NET Core használata
MVC a jövő és a WebForms a múlt?
Nem helyette, hanem mellette(alternatíva)
Hogyan tovább?
http://www.asp.net/mvc/
http://msdn.microsoft.com/en-us/library/dd394709.aspx
http://www.microsoft.com/downloads/details.aspx?FamilyID=1E0BE0B2-910A-4676-9F3A-41E4D9C0FC08&displaylang=en
NerdDinner.com alkalmazás• http://aspnetmvcbook.s3.amazonaws.com/
aspnetmvc-nerdinner_v1.pdf
Kérdések és válaszok
1. kérdésMilyen szempontok szerint történik a szeparáció?
2. kérdésMi az alapvető különbség a MVC és az MVP között?
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.