2 11 15 PresenterPresenterViewView ModelModel IViewIView.

33
ASP.NET MVC Csala Péter ELTE - IK [email protected] http://csalapeter.spaces.live.com A WebForms új vetélytársa

Transcript of 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

Page 1: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

ASP.NET MVC

Csala PéterELTE - [email protected]://csalapeter.spaces.live.com

A WebForms új vetélytársa

Page 2: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

2

TartalomASP.NET most

Design Patterns

Model View Presenter

Model View Controller

Page 3: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 4: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

EZ MIND SZÉP ÉS JÓ, DE…

Page 5: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 6: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 7: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

Egy egyszerű példa

Page 8: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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ó

Page 9: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

Megoldás

DP + ASP.NET MVC

Page 10: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

11

TartalomASP.NET most

Design Patterns

Model View Presenter

Model View Controller

Page 11: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 12: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 13: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 14: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

15

TartalomASP.NET most

Design Patterns

Model View Presenter

Model View Controller

Page 15: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 16: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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)

Page 17: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

Model View Presenter

PresenterView

Model

IView

Page 18: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

Model View Presenter

A Standard WebForms-os világban is megvalósítható

Page 19: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

20

demodemo

Az alapkoncepció (View <> Presenter)A pontos idő példa

Page 20: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

demodemo

A kommunikáció (View >< Presenter)A pontos idő példa 2.0

Page 21: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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.

Page 22: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

23

TartalomASP.NET most

Design Patterns

Model View Presenter

Model View Controller

Page 23: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 24: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

Model View Presenter

Controller View

Model

Page 25: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

MVC vs. MVP

Page 26: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

27

demodemo

MVC "Hello World"

Page 27: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

demodemo

MovieApp

Page 28: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

Demo

ASP.NET Routing

Model

Controller

View

Repository pattern

Unit Test

Validation

Authorization

Design

Page 29: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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

Page 30: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

MVC a jövő és a WebForms a múlt?

Nem helyette, hanem mellette(alternatíva)

Page 32: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

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?

Page 33: 2 11 15 PresenterPresenterViewView ModelModel IViewIView.

© 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.