/ / Як налаштувати єдність у n-tier ASP .net MVC-додатку - asp.net-mvc, ioc-container

Як налаштувати Unity у n-tier прикладній програмі ASP .net MVC - asp.net-mvc, ioc-контейнер

У мене є невелика проблема з'ясувати, як налаштувати Unity IoC контейнер в моєму n-ярусі ASP.

У моєму рішенні є 3 проекти: 1. MVC (використовується як перегляд): має лише референт для Business Logic Layer 2. Бізнес-логічний шар: має посилання тільки на проект сховища 3. Репозитарій: Не мають посилання на будь-який з вищезазначених проектів

Зверніть увагу на те, як моя довідкова робота, я зробив це так, що я зможу замінити зв'язок між моїми рівнями, використовуючи WCF з меншими труднощами.

Я налаштував контейнер Unity в моєму MVC-додатку, виконуючи такі дії (Global.asax):

container.RegisterType (); // MyService міститься в моєму бізнес-логічному шарі

Клас MyService використовує моє сховище у своєму конструкторі, що означає, що коли один з цих класів MyService створено, також потрібний MyRepository

public MyService (сховище IRepository): base (сховище) {}

Як ви бачите, я ще не налаштував IRepository у своєму контейнері.

Я не хочу робити це в моєму Global.asax, тому що я не хочу, щоб додати будь-які посилання на сховище MVC (View) рівня.

Де найкраще налаштувати це? Я тут заплутаний.

Заздалегідь спасибі.

Відповіді:

2 для відповіді № 1

Ти намагався: http://mvcunity.codeplex.com/


1 для відповіді № 2

Дозвольте мені розповісти, що я зробив досі:

Я створив статичний клас у службі таЗгодом, у моєму шарі перегляду (MVC) я створюю контейнер Unity і передаю його статичним класам, вони заповнюють контейнер тим, що їм потрібно, плюс наступний шар, наприклад, рівень сервісу також викликає статичний клас у моєму сховищі.

Таким чином я конфігурую контейнер з усім необхідним.

Питання: чи добре це робити?


0 для відповіді № 3

Якщо ми використовуємо Unity. ми можемо реалізувати розширення контейнера Unity в середньому шарі і зареєструватися в шарі Presentation, як показано нижче.

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

Більш детальну інформацію див. У статті.

N-ярус з DI (Unity)

Дякую