Wracając do ASP.Net Webforms z ASP.Net MVC. Polecasz wzory / architektury?


12

Dla wielu z was zabrzmi to absurdalnie, ale zadaję to pytanie, ponieważ mam niewielkie lub żadne doświadczenie z ASP.Net Webforms - poszedłem prosto do ASP.Net MVC.

Pracuję teraz nad projektem, w którym ograniczamy się do .Net 2.0 i Visual Studio 2005.

Podobało mi się czyste rozdzielenie problemów podczas pracy z ASP.Net MVC i szukam czegoś, co sprawi, że formularze internetowe będą nie do zniesienia. Czy są jakieś zalecane wzorce lub praktyki dla osób, które wolą asp.net MVC, ale utknęły na .net 2.0 i visual studio 2005?


Dzięki za wszystkie sugestie, chłopaki - chciałbym wybrać więcej niż jedną odpowiedź.
jlnorsworthy 12.03.11

1
Mam nadzieję, że twoje nowe zadanie dotyczy tylko istniejącego projektu, a nie czegoś zaczynającego się od zera. Istnieje wiele podstawowych rzeczy, od których będziesz uzależniony, takich jak używanie Linq do prostych zapytań dotyczących kolekcji. Główną frustracją będzie spojrzenie na wygenerowany HTML i przekonanie się, że nie jest to oczekiwane. Powodzenia i mam nadzieję, że ci się uda.
Chris

Odpowiedzi:


7

Polecam Model View Presenter (MVP). Wykorzystaliśmy to w najnowszej aplikacji WebForms, co zwiększyło naszą testowalność i pozwoliło nam wymusić rozdzielenie obaw.

http://msdn.microsoft.com/en-us/magazine/cc188690.aspx to świetny artykuł Jean Paul Boodhoo na ten temat; pobieranie kodu jest również dobre. Może się okazać, że nie potrzebujesz DTO i interfejsów do DTO.

Kolejnym dobrym artykułem jest ten na codeproject.com: http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx

Edycja: istnieje także framework o nazwie WebForms MVP, ale niewiele o nim wiem.


Webvorms MVP wygląda naprawdę fajnie, ale wydaje się, że projekt się zawiesił (ostatnie wydanie w 07/10). Nie ma wielu dostępnych dokumentacji ani samouczków
jlnorsworthy 10.03.11

Wydaje się również, że wymaga .NET 3.5 SP1, więc może nie być dla ciebie zbyt przydatny. Jednak próbki i źródło mogą pomóc w ocenie wzorca MVP.
Ciaran,

Dobra uwaga, nawet tego nie zauważyłem. Będę pilnować tego projektu na wypadek, gdy będę musiał robić formularze internetowe w firmie, która ma aktualną technologię :)
jlnorsworthy 12.03.11

4

Polecam, abyś zrozumiał cykl życia strony .net 2.0

Te filmy mogą być warte obejrzenia, chociaż nie wszystkie są darmowe, ale przynajmniej będzie to dobry początek dla Ciebie ... Chodzi o to, że da ci pomysł na dalsze badania w przyszłości.


3

Jak być może już odkryłeś, musisz nauczyć się kilku rzeczy, których nauczyłeś się z ASP.NET MVC (tak przy okazji - to samo dzieje się, gdy osoba ASP.NET przyłączy się do nauki ASP.NET MVC). Nadal możesz zaimplementować wzorzec MVC w ASP.NET, ale rozdzielenie View and Model jest bardzo rozmyte w ASP.NET z powodu architektury eventing / post post back.

Moim zdaniem, większość twojej nowej nauki będzie związana z cyklem życia strony oraz zdarzeniami i kontrolami. Zwykłe interakcje Session, Cache, ViewState i DB pozostają takie same.

HTH ...


2

Kasa Wzór kontrolera frontowego i implementacja kontrolera frontowego w Asp.Net. Rób te rzeczy tylko wtedy, gdy twój projekt będzie dobrej wielkości. Wykonanie tego w przypadku małego projektu nie uzasadnia zwrotu z inwestycji.

W małym projekcie możesz spróbować ustalić wytyczne. Na przykład - Bez logiki biznesowej, bez użycia sesji itp. W kodzie za.

Zobacz, co najlepiej pasuje do twojego przypadku. W każdym razie kusi cię inżynieria.


0

W ciemnych czasach .NET 1.1 stworzyłem (tak jak wszyscy) coś w rodzaju systemu MVC dla aplikacji, która działała w ten sposób.

Strona została stworzona jako rodzaj „fałszywego” mistrza. To miało trochę hydrauliki, aby pokazać menu, skrypty, style itp.

„Widoki” były indywidualnymi kontrolami użytkownika.

Była tabela z informacjami o każdym widoku. Na przykład „Produkt” załaduje ~/Controls/Product.ascxsię do symbolu zastępczego. Tabela miała również pole, które zawierało nazwę typu klasy modelu (tak jakby). Każdy model zawiera dobrze znany interfejs. Ta klasa została utworzona za pomocą instancji Activator.CreateInstance()i wywołana w celu zainicjowania, a następnie została przekazana do samej kontroli (odwrócenie kontroli?). Następnie formant wywoływał różne metody pobierania zestawów danych lub czegokolwiek. Sam interfejs został znormalizowany, aby mieć zwykłe metody CRUD (odczyt / zapis / lista / usuwanie). Pod tym była także warstwa DAL / ORM.

To nie było ładne, ale działało dobrze. Łatwo było testować i rozwijać, a większość programistów, którzy weszli na pokład, dość szybko się przyzwyczaiła. Przede wszystkim jego utworzenie było stosunkowo proste.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.