Как управлять конфигурацией компонентов, загружаемых посредством внедрения зависимости? - PullRequest
2 голосов
/ 22 февраля 2010

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

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

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

1 Ответ

1 голос
/ 22 февраля 2010

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

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

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

...