StructureMap и MVC 3.0 - PullRequest
       16

StructureMap и MVC 3.0

2 голосов
/ 23 января 2011

Кто-нибудь использовал structmap с новыми функциями DI asp.net mvc 3.0?Если да, не могли бы вы опубликовать пример кода или несколько ссылок на полезные примеры?Пытаясь изучить ASP.NET MVC 3, я стараюсь использовать все «новые» функции и пытаюсь интегрировать контейнер IoC.

Ответы [ 3 ]

3 голосов
/ 23 января 2011

Как уже упоминалось, вы бы хотели посмотреть Common Service Locator (CSL), который представляет собой простой фасад разрешения службы вокруг любого контейнера (любого по вашему выбору).

MVC3 внутренне интенсивно использует новый IDependencyResolver интерфейс, который в некоторой степени похож на CSL, но в контексте ASP.NET MVC. Хорошо, что если вы уже используете CSL, вы можете установить его как Respendency Resolver для MVC.

Эта тема одинаково важна для любого контейнера и не относится к StructureMap.

Итак, что там происходит:

  • Вы предоставляете все необходимые регистрации контейнеров (предпочтительно через Registry DSL в случае StructureMap);
  • Вы получаете адаптер StructureMap для Common Service Locator;
  • Вы (опционально - если вам нужен CSL вместе с DependencyResolver) регистрируете свой адаптер StructureMap в качестве текущего локатора службы: ServiceLocator.SetLocatorProvider(() => yourStructureMapAdapter)
  • Вы регистрируете свой CSL (поддерживаемый StructureMap) как MVC DependencyResolver: DependencyResolver.SetResolver(yourStructureMapAdapter)
  • MVC3 автоматически подключает все через внутренний интерфейс IDependencyResolver (используя все возможности автоматического подключения StrucutreMap DI).

Наряду с возможностями встроенного IoC MVC3, максимально используйте возможности инструмента IoC (например, используйте сканирование сборок, доступное в StructureMap).

1 голос
/ 23 января 2011

Столкнулся с этим на днях, может быть полезно:

http://weblogs.asp.net/rashid/archive/2009/02/15/asp-net-mvc-unity-and-common-service-locator.aspx

1 голос
/ 23 января 2011

Я немного осмотрелся, и это первый результат Google, который я получил.Это дает хорошее представление о новом месте службы MVC 3: http://bradwilson.typepad.com/blog/2010/07/service-location-pt1-introduction.html

Хотя это зависит от бета-версии MVC 3, я уверен, что с некоторыми экспериментами можно это выяснить.

Короче говоря, похоже, что они добавили некоторые интерфейсы и методы расширения, которые вы можете использовать для вызова StructureMap или любой другой предпочитаемой вами библиотеки IoC.

Я только что наткнулся на эту ссылку в блогах, на которые я подписан.У него есть хороший пример кода.http://stevesmithblog.com/blog/how-do-i-use-structuremap-with-asp-net-mvc-3/

...