Jakie są najlepsze praktyki dla architektury aplikacji na poziomie korporacyjnym wykorzystującej MVC5?

Zastanawiałem się, jaka jest najlepsza praktyka dla architektury na poziomie korporacyjnym opartej na MVC5. Mam na myśli wybór między wieloma warstwami lub wieloma projektami w jednym rozwiązaniu? a może więcej niż jedno rozwiązanie? jakiś dobry przykładowy projekt?

Author: Hadee, 2015-09-18

2 answers

Ponieważ moje pytanie było często odwiedzane w ciągu ostatniego roku i nie ma solidnej odpowiedzi, ponieważ jestem tego świadomy, postanowiłem udzielić wyczerpującej odpowiedzi w jak największym stopniu. Odpowiedź ta opiera się na kilku rzeczywistych doświadczeniach projektowych i przy kilku konsultacjach ekspertów: [51]}

  1. przede wszystkim należy zauważyć, że w projektowaniu oprogramowania proces, nie ma to jak solidne dobro i zło. Tak długo jak podejście działa na twój projekt i dobrze pasuje, jest right i jeśli Informatyka nie, to jest wrong. W oprogramowaniu nie ma sztywnych zasad design. Są Project needs and specifications. Ale ogólnie, został on zaakceptowany za pomocą Design Patterns and Principles sprawia, że projekt więcej robust, reliable and easy to maintain and make Twój kod loosely coupled and highly cohesive.
  2. cała historia Software Design and Architecture jest o tym, jak możesz łatwo zarządzać swoim projektem i jak możesz utrzymać swój przyszłe zmiany. Zastanów się, które podejście daje najlepszą odpowiedź na oni. To będzie dla ciebie najlepsze. Nie myśl za dużo o Professionalism! .Twój projekt rośnie z czasem i staje się bardziej dojrzały. Więc pomyśl o swoim projekcie!
  3. jako pierwszy krok i dla architektury aplikacji na poziomie przedsiębiorstwa, zawsze staraj się podążać za Separation of Concerns lub SoC. To znaczy, że ty powinny mieć różne poziomy dla różnych warstw projektu. Informatyka jest wysoce zalecane użycie innego projektu w Twoim rozwiązanie dla Data Access Layer, Domain Entities, Business Layeri Presentation Layer. W projekcie MVC5 lepiej jest użyć Class Library Project dla Data Access Layer, Domain Entities, Business Layer i projekt MVC dla Presentation Layer.
  4. Data Access Layer jest projektem, który stawia czoła interakcjom z bazami danych i bazami danych. Możesz mieć wszystkie swoje Entity Framework lub podobne podmioty w tym projekcie. Oddzielenie warstwy dla warstwy bazy danych oznacza w przypadku zmiany hurtowni danych projektu, jedyną rzeczą, którą musisz zmienić, jest zmiana tego projektu i kilka drobnych zmian na Business Layer. Wszystkie inne projekty w Twoim rozwiązaniu pozostają nienaruszone. Możesz więc łatwo przejść z MS Sql do Oracle lub z Entity Framework do NHibernate.
  5. Domain Entities jest projektem, którego używam aby zdefiniować wszystkie moje rozwiązanie interfejsy poziomów, klasy, wyliczenia i zmienne. Ten projekt utrzymuje uczciwość w całym moim rozwiązaniu na moich zajęciach i moich metodach. My wszystkie klasy w całym rozwiązaniu są dziedziczone z interfejsów w tym projekt. Więc mam jedno miejsce , aby zmienić moje klasy lub globalne zmienne i oznacza Easy to Maintain na przyszłość w moim rozwiązaniu i łatwe do zrozumienia dla nowo dołączonych programistów do projektu.
  6. Business Layer to miejsce, w którym kładę całą swoją logikę biznesową w tym Business Entities i Business Services. Cała idea o ta warstwa ma jedno miejsce, aby zachować wszystkie metody biznesowe i interakcje. Wszystkie obliczenia, modyfikacje obiektów i cała logika o danych w tym Zapisywanie, pobieranie, zmiana i tak dalej powinny dzieje się w tej sekcji. Mając tę warstwę w swoim projekcie, można może mieć różnych konsumentów w tym samym czasie, na przykład jeden natywne MVC i jedna Web API warstwa. Lub możesz podać inny wyżywienie w oparciu o różne usługi biznesowe konsumenci specyfikacje. Zaleca się, aby nie umieszczać żadnych logika biznesowa do sekcji kontrolera warstwy MVC. Mając jakiekolwiek logika biznesowa wewnątrz kontrolerów oznacza korzystanie z prezentacji warstwa jako warstwa logiki biznesowej i narusza Separation of Concerns. Wtedy nie będzie łatwo zmienić jedną prezentację na inną lub mieć innego rodzaju konsumentów dla swojego rozwiązanie. Lepiej zachować sekcję kontrolera w MVC tak smukłą jak możliwe. Kontrolery powinny mieć tylko logikę i metody bezpośrednio związane z View Models. Więcej informacji o View Models zobacz sekcję 7. Jedna rzecz do zapamiętania, lepiej jest mieć różne klasy Business Services w zależności od rozwiązania obiektów lub Business Entities.
  7. Presentation Layer W MVC rozwiązanie będzie projekt 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żna mieć jedna warstwa MVC i jedna Web API w jednym rozwiązaniu. Ogólnie Używać Warstwa prezentacji, aby zachować wszystkie logika prezentacji w it. Logika prezentacji nie powinna mieć nic wspólnego z logiką biznesową albo logika danych. Więc pytanie brzmi, czym jest Presentation logic? Presentation logic jest logiką związaną z modelami widoku. Zobacz modele są obiektami dostosowanymi do widoków lub stron. W większości przypadków biznes obiekty nie nadają się do użycia w widokach. Z drugiej strony, widoki prezentacji zwykle wymagają logiki walidacji lub logika prezentacji, np. nazwa wyświetlacza inna niż oryginalna nazwy obiektów. W takich przypadkach lepiej zachować logika prezentacji oddzielona niż logika biznesowa, aby ułatwić zmianę prezentacji logika lub logika biznesowa niezależnie i nawet łatwo przełączać warstwa prezentacji dla różnych projektów interfejsu użytkownika lub zmieniających się firm logika zapewniająca większą funkcjonalność bez obawy o przerwanie z logiką prezentacji. W przypadku wykorzystania projektu MVC jako warstwa prezentacji dla rozwiązania, wszystkie modele widoku powinny być umieszczone w Models sekcja projektu MVC i cała logika prezentacji powinna być umieszczone w Controllers część projektu.
  8. ostatnią rzeczą do powiedzenia jest to, że dla każdego rozwiązania wielopoziomowego, trzeba frameworków do mapowania obiektów, na przykład do konwersji podmiot gospodarczy do wyświetlenia modelu. Istnieje kilka narzędzi do tego cele takie jak AutoMapper, BLToolkit, i EmitMapper.

Ostatnie słowo: proszę o komentarz i ocenę question i moje {[49] } aby było lepiej!

 29
Author: Hadee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-16 21:02:53

Spójrz na Contoso University . Doskonały przykład aplikacji na poziomie przedsiębiorstwa.

Przykładowa Demonstracja Aplikacji WWW

 -1
Author: Anjyr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 11:41:21