2010-02-22 2 views
2

Я создаю приложение, которое будет использовать DI Framework для загрузки компонентов для извлечения данных из различных источников, таких как внешний веб-сервис или БД. Теперь компонентам потребуется некоторая конфигурация приложения, такая как URL-адрес веб-службы или строка подключения к базе данных. Сохранение всего этого в Web.Config и передача его через параметры конструктора является основным вариантом, который у меня есть.Как управлять конфигурацией компонентов, загружаемых через инъекции зависимостей?

<constructor> 
    <param name="connectionString" parameterType="string"> 
    <value value="AdventureWorks"/> 
    </param> 
    <param name="dataService" parameterType="IMyService"> 
    <dependency /> 
    </param> 
</constructor> 

Но эта опция не является масштабируемой, и файл конфигурации может стать громоздким по мере роста числа компонентов. Может ли кто-нибудь предложить лучшую практику? С уважением, Том

+0

Связанный вопрос: http://stackoverflow.com/questions/2280137/structuremap-xml-configuration-or-configuration-through-code –

ответ

1

Это либо XML, либо код (но они не являются взаимоисключающими). Это то, что делают большинство (все?) Контейнеров IoC. В качестве примера см. Статьи XML config docs и code config (fluent registration) docs от Windsor. Другой вариант конфигурации кода создает DSL, например Binsor.

Обычно я смешиваю оба подхода, регистрируя как можно больше кода, за исключением частей, которые необходимо настраивать, которые идут в виде конфигурации XML. Или вы даже можете сделать регистрацию в коде и прочитать простые параметры из appSettings.

Конечно, вы также можете поместить свою конфигурацию в INI-style config или даже базу данных, но это, как правило, не имеет большого смысла.

+0

+1 Я думаю, что знаю, что вы имеете в виду (и если так я согласен), но ваша формулировка звучит так, как XML и код являются эксклюзивными опциями. Все дело в том, что вы можете смешивать XML с кодом (и вы, похоже, подразумеваете это в остальной части вашего ответа), чтобы в XML остались только настраиваемые по-умолчанию параметры. –

+0

Спасибо, Марк, я отредактирую, чтобы сделать его более понятным. –

Смежные вопросы