Конфигурация контейнера IoC - PullRequest
2 голосов
/ 19 апреля 2010

Как должна быть организована конфигурация для контейнера IoC? Я знаю, что регистрация по коду должна быть размещена на самом высоком уровне в приложении, но что, если приложение имеет сотни зависимостей, которые необходимо зарегистрировать? То же самое с конфигурациями XML. Я знаю, что вы можете разделить конфигурации XML на несколько файлов, но, похоже, это станет проблемой, связанной с обслуживанием, если кому-то придется копать несколько файлов XML.

Существуют ли передовые практики для организации регистрации зависимостей? Из всех видео и учебных пособий, которые я видел, код, использованный в демоверсии, был достаточно прост, чтобы разместить его в одном месте. Мне еще не приходилось сталкиваться с примером приложения, которое использует большое количество зависимостей.

Ответы [ 2 ]

6 голосов
/ 19 апреля 2010

Autofac и другие (например, Ninject) используют концепцию модуля для этой конкретной цели.http://code.google.com/p/autofac/wiki/StructuringWithModules может быть то, что вы ищете.

Hth Ник

2 голосов
/ 19 апреля 2010

Было бы немного полезно, если бы мы знали, говорите ли вы о каком-либо конкретном контейнере IoC.

Виндзор, например, позволяет вам определять зависимости для широкого диапазона файлов XML (организованных так, как вы хотите) и просто включаемых в конфигурацию. Структура должна быть в формате, который имеет смысл . Иметь файл / папку для контроллеров, объектов и т. Д. Иерархия связанных элементов.

С помощью чего-то более ориентированного на код, такого как Autofac, вы можете легко создать множество провайдеров конфигурации контейнера для поддержки вашей конфигурации. С Hiro вам вообще не нужно много настраивать.

Независимо от используемого контейнера, все они предоставляют возможности для регистрации на основе соглашения сверх конфигурации, так что это должно быть вашей первой остановкой при очистке регистраций. Отличным примером будет регистрация всех классов, чье имя оканчивается на «Controller» в приложении MVC.

...