2009-04-24 10 views
7

Czy ktoś ma zalecenie do budowy aplikacji ASP.Net MVC w sposób modułowy? Mam na myśli kilka blog-postów/tutoriali itp. Właśnie przeczytałem Hammet's MEF and ASP.NET MVC sample blogpost, ale nie znajduję MEF wystarczająco dojrzalego, by użyć go jeszcze w produkcji. Nie mogłem wyrejestrować żadnego innego stosownego postu na ten temat ...asp.net mvc modularna aplikacja howto/rekomendacje

Wiem, że mogłem osiągnąć modułowość implementując niestandardowy ControllerProvider i mechanizm kontroli wtyczek, ale chciałbym zbadać kilka innych podejść/najlepsze praktyki zanim zacznę reimplement koło :)


modułowość mam na myśli tego tematu powinny obejmować tylko punkt widzenia aplikacji internetowych - nic innego jak modularnych aplikacji modelu/usług itd. Chciałbym znaleźć najlepszą możliwą metodę oddzielania jednej aplikacji internetowej na wiele złożeń, które zawierałyby dodatkowe kontrolery, widoki, zasoby, pliki JS + CSS, obrazy itp. Więc powinien istnieć jakiś główny projekt aplikacji WWW, który mógłby wyglądać w przypadku dostępnych podłączanych zespołów aplikacji internetowych, ładuj je, publikuj kontrolery, udostępniaj widoki i inne zasoby i prawdopodobnie przygotuj menu z pozycją dla każdego modułu aplikacji internetowej.

Nie chcę omawiać tutaj żadnej wtykanej architektury modelu + usługi - tylko część ASP.Net M VC.

+0

Mam zamiar zrobić coś bardzo podobnego w najbliższej przyszłości, jak dotąd nie znalazłem niczego, co robi to "po wyjęciu z pudełka". Powinny być jednak stosunkowo proste, aby zrobić to ręcznie, po prostu przeróbki złożeń w koszu i poszukaj spadkobierców pewnego interfejsu. Myślę ... – roryf

Odpowiedz

3

Modułowość jest dość szeroką koncepcją i myślę, że odpowiedź na twoje pytanie musi być subiektywna. To, o co pytasz, to decyzja architektoniczna i nie ma na to dobrego sposobu. W zależności od projektu możesz mieć różne priorytety i znaczenie różnych części systemu. Myślę, że wzór MVC zapewnia wystarczającą separację problemów, co jest właściwie celem każdej modularnej architektury.

Jeśli chcesz mieć możliwość łatwego podłączenia nowych modułów do istniejącej aplikacji, to jak zdefiniujesz moduł? Myślę, że powinieneś trochę zawęzić pytanie, aby uzyskać pewne nie-niejasne i sensowne odpowiedzi.

+0

masz rację - próbowałem edytować wpis, aby zawęzić temat w dół ... – Buthrakaur

0

Podstawowe argumenty za modułowości są zawsze takie same ...

  • Testability
  • Maintainability
  • Łatwość wdrożenia
1

Wsparcie dla częściowe dopuszczenie do renderowania kontrolerów Część 3 jest w pełni obsługiwany w MVC, spójrz na ten post: http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

Oczywiście moduł w MVC zawierałby przynajmniej kontroler i jeden lub kilka widoków. Być może jednak to, czego chcieliście, to tylko nieliczne, a zatem znacznie łatwiej jest przepisać kontroler, niż gdyby była to tradycyjna architektura WebForms.

A może chcesz zastąpić źródło danych, po prostu nadpisać metody w encji Model i jesteś gotowy do pracy. To jest cała podstawowa zasada w MVC, że dzielisz różne poziomy logiki i że jesteś WYMUSZONY, aby to zrobić, w przeciwieństwie do WebForms, który nadal pozwala na wykonywanie SQL bezpośrednio w twoim widoku, jeśli podłączysz.

(To, że MVC również to obsługuje, nie jest zgodne z projektem, ale dziedziczeniem.)

0

Jako punkt wyjścia, można złapać jakieś pomysły z tego artykułu:

Spark View Engine - Modularity

a przykładowy kod:

spark/src/Samples/Modules

Kod jest w Spark Zobacz silnika drzewo (co jest bardzo ładnym i potężnym projektem), ale nie ma z tym wiele wspólnego. Wykorzystuje Castle do budowania zależności i tego wszystkiego.

Nawiasem mówiąc, robiłem sobie z MEF, ale tak naprawdę nie widzę korzyści w tej chwili, a rzeczy, które musiałem zrobić, można zrobić z Castle i niektórymi narzędziami (pomocnikami do sprawdzania zestawów i podobnych rzeczy).

1

znalazłem artykuł, który rozwiązuje niektóre z podstawowych wymagań mówisz o. Niestety artykuł był około roku przestarzały, używając ASP.NET MVC 3, więc przepisałem go i przetestowałem metodologię, aby działało z ASP.NET MVC 4. Możesz read it here.

0

Rozumiem, że na to pytanie już udzielono odpowiedzi. Ale szukałem bardziej aktualnych odpowiedzi na ten temat. Spojrzałem na Obszary, jak sugeruje oryginalna odpowiedź, ale natknąłem się także na następujące linki (Part 1 i Part 2) autorstwa Liviu Ignat, które odpowiedziały na to pytanie z perspektywy modułu wtykowego.

Powiązane problemy