/ / Jak skonfigurować Unity w n-warstwowej aplikacji ASP .net MVC - asp.net-mvc, ioc-container

Jak skonfigurować Unity w n-warstwowej aplikacji ASP.net MVC - asp.net-mvc, ioc-container

Mam mały problem, zastanawiając się, jak skonfigurować kontener Unity IoC w mojej n-warstwowej aplikacji ASP .net MVC.

Mam 3 projekty w moim rozwiązaniu: 1 MVC (używany jako widok): posiada referene tylko do warstwy logiki biznesowej 2. Warstwa logiki biznesowej: Ma odniesienie tylko do projektu repozytorium 3. Repozytorium: Nie należy odwoływać się do żadnego z powyższych projektów

Proszę zwrócić uwagę na sposób, w jaki działa moja referencja, zrobiłem to tak, że będę mógł zastąpić komunikację między moimi warstwami za pomocą WCF z mniejszymi trudnościami.

Skonfigurowałem kontener Unity w mojej aplikacji MVC wykonując coś takiego (Global.asax):

container.RegisterType (); // MyService jest w mojej warstwie logiki biznesowej

Klasa MyService używa mojego repozytorium w swoim konstruktorze, co oznacza, że ​​gdy tworzona jest jedna z tych klas MyService, wymagane jest także MojeRepozytorium:

public MyService (repozytorium IRepository): base (repozytorium) {}

Jak widać nadal nie skonfigurowałem IRepository w moim kontenerze.

Nie chcę tego robić w moim Global.asax, ponieważ nie chcę dodawać żadnych odniesień do repozytorium do warstwy MVC (View).

Gdzie jest najlepsze miejsce, aby to skonfigurować? Jestem tu trochę zmieszany ....

Z góry dziękuję.

Odpowiedzi:

2 dla odpowiedzi № 1

Czy próbowałeś: http://mvcunity.codeplex.com/


1 dla odpowiedzi nr 2

Pozwólcie, że powiem wam, co dotychczas zrobiłem:

Stworzyłem klasę statyczną w mojej usłudze iRepozytorium Później tworzę kontener Unity w mojej warstwie widoku (MVC) i przekazuję go do tych klas statycznych, zapełniają kontener tym, czego potrzebują, oraz następną warstwą, na przykład warstwa usług wywołuje również klasę statyczną w moim repozytorium.

W ten sposób konfiguruję kontener ze wszystkim, czego potrzebuję.

Pytanie brzmi: czy to dobrze robić?


0 dla odpowiedzi № 3

Jeśli używamy Unity. możemy zaimplementować rozszerzenie kontenera Unity w warstwie środkowej i zarejestrować się w warstwie prezentacji, jak poniżej.

          //Data Layer dependency mapping as extension eg : IUnitOfWork
container.AddNewExtension<DependencyInjectionExtension>();

Więcej szczegółów można znaleźć w artykule.

Poziom N z DI (Unity)

Dzięki