У мене є невелика проблема з'ясувати, як налаштувати 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>();
Більш детальну інформацію див. У статті.
Дякую