Zastanawiam się, jaka jest najlepsza praktyka w architekturze na poziomie przedsiębiorstwa w oparciu o MVC5. Mam na myśli wybór między warstwami lub wieloma projektami w jednym rozwiązaniu? i lub może więcej niż jedno rozwiązanie? jakiś dobry przykładowy projekt?Jaka jest najlepsza praktyka w architekturze aplikacji na poziomie Enterprise przy użyciu MVC5?
15
A
Odpowiedz
24
Ponieważ moje pytanie zostało odwiedził wiele w ciągu ostatniego roku i nie ma stałej odpowiedź jak ja sobie z tego sprawę, postanowiłem zapewnić kompleksową odpowiedź jak najwięcej. Ta odpowiedź jest oparty na jakimś rzeczywistego doświadczenia z kilku projektów i konsultacji ekspertów:
- Przede wszystkim ważne jest, aby pamiętać, że w procesie projektowania oprogramowania , nie ma to jak solidne dobra i zła. Tak długo, jak podejście działa dla twojego projektu i dobrze pasuje, jest to
right
, a jeśli nie jest to . Nie ma sztywnych zleceń w oprogramowaniu . IstniejeProject needs and specifications
. Ale ogólnie, został przyjęty przy użyciuDesign Patterns and Principles
sprawia projekt bardziejrobust
,reliable
ieasy to maintain
i uczynić kodloosely coupled and highly cohesive
. - Cała historia
Software Design and Architecture
dotyczy tego, w jaki sposób można łatwo zarządzać swoim projektem i jak można zachować przyszłe zmiany w postaci . Zastanów się, które podejście daje najlepszą odpowiedź na temat . To będzie najlepsze dla ciebie. Nie myśl zbyt wiele oProfessionalism
! . Twój projekt rośnie z upływem czasu i staje się bardziej dojrzały. Po prostu pomyśl o swoim projekcie! - Jako pierwszy krok i dla architektury aplikacji na poziomie przedsiębiorstwa, zawsze staraj się postępować zgodnie z
Separation of Concerns
lubSoC
. Oznacza to, że użytkownik powinien mieć różne poziomy dla różnych warstw projektu. To jest wysoce zalecane, aby użyć innego projekt w rozwiązania dlaData Access Layer
,Domain Entities
,Business Layer
iPresentation Layer
. W projekcie MVC5 lepiej jest użyćClass Library Project
dlaData Access Layer
,Domain Entities
,Business Layer
i projektu MVC dlaPresentation Layer
. Data Access Layer
to projekt skierowany do interakcji z bazami danych i bazami danych. Możesz mieć wszystkie swojeEntity Framework
lub podobne elementy w tym projekcie. Po oddzieleniu warstwy dla warstwy bazy danych oznacza to, że w przypadku zmiany hurtowni danych projektu, jedyną rzeczą, którą należy zmienić, jest zmiana tego projektu i kilka drobnych zmian w twoimBusiness Layer
. Wszystkie inne projekty w twoim rozwiązaniu pozostają nienaruszone. Więc możesz łatwo przejść z MS Sql do Oracle lub zEntity Framework
doNHibernate
.Domain Entities
to projekt, którego używam do definiowania wszystkich interfejsów poziomu, klas, wyliczeń i zmiennych na poziomie mojego rozwiązania. Ten projekt utrzymuje integralność w całym moim rozwiązaniu na moich zajęciach i moich metodach. Moje wszystkie klasy w całym rozwiązaniu są dziedziczone z interfejsów w tym projekcie .Tak więc mam jedno miejsce, aby zmienić moje klasy lub zmienne globalne , a to oznaczaEasy to Maintain
dla przyszłości w moim rozwiązaniu i łatwe do zrozumienia dla nowo przyłączonych programistów do projektu.Business Layer
to miejsce, w którym umieszczam całą logikę biznesową, w tymBusiness Entities
iBusiness Services
. Cały pomysł na temat tej warstwy o ma jedno miejsce, aby zachować wszystkie metody biznesowe i interakcje . Wszystkie obliczenia, modyfikacja obiektu i cała logika dotycząca danych obejmujących zapisywanie, pobieranie, zmienianie itd. Powinny się zdarzyć w tej sekcji. Korzystając z tej warstwy w projekcie, użytkownik może mieć różnych klientów w tym samym czasie, na przykład jedną warstwę natywnąMVC
i jedną warstwęWeb API
. Lub możesz podać różne karmienia oparte na specyfikacjach różnych usług dla klientów specyfikacji. Zdecydowanie zaleca się unikanie wprowadzania logiki biznesowej do sekcji kontrolerów warstwy MVC. Posiadanie dowolnej logiki biznesowej w kontrolerach oznacza, że używasz warstwy prezentacji jako warstwy logiki biznesowej i jest ona niezgodna zSeparation of Concerns
. Wtedy nie będzie łatwo zmienić z jednego odtwarzacza prezentacji na inny lub mieć inny typ klientów dla swojego rozwiązania . Lepiej jest zachować sekcję kontrolera w MVC tak wąską, jak . Kontrolery powinny mieć wyłącznie logikę i metody związane bezpośrednio z . Więcej informacji na tematView Models
znajduje się w sekcji7
. Jedna rzecz do zapamiętania, Lepiej jest mieć różne klasyBusiness Services
oparte na swoich rozwiązaniach obiektów lubBusiness Entities
.- w rozwiązaniu MVC będzie projektem MVC. Ale rozwiązanie może mieć inny typ lub więcej niż jedną warstwę prezentacji dla różnych konsumentów lub technologii. Na przykład możesz mieć jedną warstwę MVC i jedną
Web API
w jednym rozwiązaniu. Generalnie używaj warstwy prezentacji, aby zachować w niej całą logikę prezentacji. Logika prezentacji nie powinna mieć nic wspólnego z logiką biznesową lub logiki danych. Pytanie brzmi: co to jestPresentation logic
?Presentation logic
jest logiką związaną z modelami widoków. Zobacz modele są obiektami dostosowanymi do widoków lub stron. W większości przypadków obiekty biznesowe nie są odpowiednie do użycia w widokach. Z drugiej strony, widoki prezentacji zazwyczaj wymagają logiki sprawdzania poprawności lub logiki prezentacji , na przykład nazwy wyświetlanej innej niż oryginalne nazwy obiektów . W takich przypadkach lepiej oddzielić logikę prezentacji od logiki biznesowej, aby łatwo zmienić logikę lub logikę prezentacji niezależnie od siebie, a nawet łatwo zmienić warstwę prezentacji dla różnych projektów interfejsu użytkownika lub zmieniając logikę biznesową , zapewniając większą funkcjonalność bez obawy o każdej przerwie z logiką prezentacji. W przypadku użycia projektu MVC jako warstwy prezentacji dla rozwiązania, wszystkie modele widoku powinny być miejscami w sekcji projektu MVCModels
, a cała logika prezentacji powinna być umieszczona w sekcji projektu . - Ostatnią rzeczą, którą można powiedzieć o każdym rozwiązaniu wielowarstwowym, jest potrzeba ram dla mapowania obiektów do obiektów, na przykład w celu przekształcenia jednostki biznesowej w celu wyświetlenia modelu.Istnieje kilka narzędzi do tego celu , takich jak
AutoMapper
,BLToolkit
iEmitMapper
.
Ostatnie słowo: prosimy o komentarz i ocena question
i mój answer
zrobić to lepiej!
-1
Spójrz na Contoso University. Doskonały przykład aplikacji na poziomie Enterprise.
Powiązane problemy
- 1. Jaka jest najlepsza praktyka wdrażania przy korzystaniu z MODX?
- 2. Jaka jest najlepsza praktyka przy logowaniu do Umbraco?
- 3. Jaka jest najlepsza praktyka organizowania aplikacji jQuery Mobile?
- 4. Jaka jest najlepsza praktyka profilowania aplikacji Native React Native?
- 5. jaka jest najlepsza praktyka przy łączeniu Hive Połączenia JDBC
- 6. Najlepsza praktyka w zakresie autoryzacji na poziomie rekordów MVC/ASP.Net
- 7. jaka jest najlepsza praktyka implementacji i18n use java?
- 8. JavaScript specyficzny dla strony Railsów: jaka jest najlepsza praktyka?
- 9. Najlepsza praktyka parametryzowania aplikacji GWT?
- 10. Jaka jest najlepsza praktyka w zapytaniach o media w CSS3?
- 11. Jaka jest najlepsza praktyka w obsłudze wyjątków w silverlight?
- 12. Najlepsza praktyka używania Sprites w grze przy użyciu AndEngine GLES2
- 13. CCR: najlepsza praktyka w zakresie obsługi błędów przy użyciu przyczyn
- 14. jaka jest najlepsza praktyka obsługi czasu w R?
- 15. Jaka jest najlepsza praktyka wysyłania logów do graylog z aplikacji JVM, która działa w kontenerze dokowania?
- 16. Relacje na poziomie atrybutów w Enterprise Architect
- 17. Jaka jest rola falcor w architekturze mikroserwisu?
- 18. Jaka jest najlepsza praktyka do szybkiego analizowania html?
- 19. Jaka jest (najlepsza) krótka nazwa aplikacji Silverlight?
- 20. Jaka jest najlepsza praktyka w tworzeniu aplikacji sterowanych zdarzeniami w aplikacjach Angular.js?
- 21. Import w języku Python do testów przy użyciu nosa - jaka jest najlepsza praktyka w przypadku importowania modułów powyżej bieżącego pakietu
- 22. Najlepsza praktyka uzyskiwania EntityManagerFactory
- 23. C++ Nagłówki - Najlepsza praktyka przy tym
- 24. ASP.NET: najlepsza praktyka przekierowywania na https
- 25. Najlepsza praktyka podczas używania folium na django
- 26. Najlepsza praktyka wykorzystywania zasobów w projekcie WPF
- 27. Najlepsza praktyka polegająca na wyświetlaniu użytkownikowi wersji aplikacji Symfony?
- 28. Jaka jest najlepsza metoda w Pythonie?
- 29. Najlepsza praktyka konwersji RDL na RDLC
- 30. Najlepsza praktyka AngularJS dla aplikacji opartych na komponentach i cms
Czy znalazłeś przykład dobrego projektu? –
Zakładając, że trzymamy się szkieletu podmiotu, czy możemy zrobić z wygenerowanymi jednostkami jako Podmiotami Domena? Zakładam, że przejście do obsługiwanych baz danych, takich jak Oracle, powinno być bezproblemowe. – Tarik
@Tarik Czy możesz wyjaśnić swoje pytanie? – Hadee