ASP.NET MVC vs MVP

0

Ktoś używał wzorca MVP dla ASP.NET WebForms? Bo jak patrzę na artykuły:
http://www.c-sharpcorner.com/uploadfile/vendettamit/simplest-example-of-mvp-design-patter-of-Asp-Net/
http://www.contentedcoder.com/2012/04/mvp-design-pattern-survival-kit.html

to mi wygląda, że celem MVP jest by pliki aspx były jak najprostsze (podobnie jak kontrolery w ASP.NET MVC), by w odpowiedzi na dane zdarzenie była wywoływana odpowiednia metoda z prezentera, czyli by cała logika biznesowa została przeniesiona do prezentera. Tylko czym w takim razie różni się ten prezenter od warstwy BLL (business logic layer) - warstwy serwisowej, którą często można spotkać w projektach ASP.NET MVC - bo mi wygląda, że prezenter w ASP.NET WebForms MVP to to samo co BLL w ASP.NET MVC??

0
pytk napisał(a):

celem MVP jest by pliki aspx były jak najprostsze

Celem MVP jest separacja implementacji widoku od logiki prezentacji. Dzięki temu możesz praktycznie podmienić interfejs użytkownika z webowego na desktopowy, albo nawet na konsolę, bez zmiany kodu prezenterów (i co za tym idzie, niższych warstw).

Zastosowanie MVP w WebFormsach daje tyle, że pozwala pozbyć się spaghetti z plików z code behind, a ponadto czyni logikę prezentacji testowalną. (Kodu z plików aspx.cs raczej nie przetestujesz jednostkowo.)

Tylko czym w takim razie różni się ten prezenter od warstwy BLL (business logic layer) - warstwy serwisowej, którą często można spotkać w projektach ASP.NET MVC - bo mi wygląda, że prezenter w ASP.NET WebForms MVP to to samo co BLL w ASP.NET MVC??

Nie, nie, nie.

Prezenter to jest logika prezentacji, a nie logika biznesowa. Logika prezentacji, czyli to, co się stanie po wpisaniu przez użytkownika danych i wciśnięciu przycisku "zapisz". Logika biznesowa operuje już na surowych danych, nie ma związku z GUI, i zazwyczaj jest wywoływana przez logikę prezentacji. Wydzielona warstwa BLL powinna być i w MVC, i w WebFormsach, i w ogóle w każdym rodzaju aplikacji bez względu na technologię GUI.

W skrócie - prezenter z MVP jest odpowiednikiem kontrolera z MVC. Ma tylko pobrać dane od użytkownika, wysłać je do warstwy logiki biznesowej (upraszczam, bo nie musi robić tego bezpośrednio), odebrać wynik, i wyświetlić go użytkownikowi.

0

Somekind dzięki za wyjaśnienie, teraz rozumiem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1