2015-09-18 14 views

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:

  1. 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 . Istnieje Project needs and specifications. Ale ogólnie, został przyjęty przy użyciu Design Patterns and Principles sprawia projekt bardziej robust, reliable i easy to maintain i uczynić kod loosely coupled and highly cohesive.
  2. 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 o Professionalism! . Twój projekt rośnie z upływem czasu i staje się bardziej dojrzały. Po prostu pomyśl o swoim projekcie!
  3. Jako pierwszy krok i dla architektury aplikacji na poziomie przedsiębiorstwa, zawsze staraj się postępować zgodnie z Separation of Concerns lub SoC. 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 dla Data Access Layer, Domain Entities, Business Layer i Presentation Layer. W projekcie MVC5 lepiej jest użyć Class Library Project dla Data Access Layer, Domain Entities, Business Layer i projektu MVC dla Presentation Layer.
  4. Data Access Layer to projekt skierowany do interakcji z bazami danych i bazami danych. Możesz mieć wszystkie swoje Entity 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 twoim Business Layer. Wszystkie inne projekty w twoim rozwiązaniu pozostają nienaruszone. Więc możesz łatwo przejść z MS Sql do Oracle lub z Entity Framework do NHibernate.
  5. 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 oznacza Easy to Maintain dla przyszłości w moim rozwiązaniu i łatwe do zrozumienia dla nowo przyłączonych programistów do projektu.
  6. Business Layer to miejsce, w którym umieszczam całą logikę biznesową, w tym Business Entities i Business 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 z Separation 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 temat View Models znajduje się w sekcji 7. Jedna rzecz do zapamiętania, Lepiej jest mieć różne klasy Business Services oparte na swoich rozwiązaniach obiektów lub Business Entities.
  7. 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 jest Presentation 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 MVC Models, a cała logika prezentacji powinna być umieszczona w sekcji projektu .
  8. 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 i EmitMapper.

Ostatnie słowo: prosimy o komentarz i ocena question i mój answer zrobić to lepiej!

+2

Czy znalazłeś przykład dobrego projektu? –

+0

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

+0

@Tarik Czy możesz wyjaśnić swoje pytanie? – Hadee

Powiązane problemy