Разница между IWindsorInstaller и AbstractFacility в замке

Я всегда использовал средства для регистрации своих компонентов, но заметил IWindsorInstaller.

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

Ответ 1

Dan,

разница заключается в следующем:

  • установщики предназначены для инкапсуляции дискретных единиц регистрации. Другими словами, вы используете установщиков для регистрации компонентов приложения в контейнере. Для этого используются помощники класса Configuration или FromAssembly, которые можно использовать для использования файла конфигурации или для автоматического обнаружения ваших установщиков и запуска их всех за один раз, потому что в большинстве приложений у вас будет несколько из них. Средства
  • предназначены для расширения возможностей контейнера из коробки. Таким образом, у вас есть (с использованием стандартных возможностей в качестве примеров) такие вещи, как TypedFactoryFacility, который добавляет возможность автоматического создания заводов для прозрачного вытягивания компонентов из контейнера. У вас есть StartableFacility, который позволяет запускать/останавливать компоненты без необходимости явно беспокоиться об этом. У вас также есть возможности интеграции для таких вещей, как NHibernate или WCF, или Monorail или ASP.NET MVC, которые заставляют Windsor знать о некоторых аспектах других фреймворков, с которыми он работает, чтобы ваша работа была проще. С точки зрения возможностей объекты могут иметь собственную конфигурацию. Также нет помощников для добавления дополнительных функций, так как в большинстве приложений вам потребуется всего несколько.

Оба из них могут регистрировать материал, но основное различие заключается в том, что установщики регистрируют все ваши приложения (включая добавочные средства). Услуги, с другой стороны, регистрируют то, что им нужно, чтобы выполнять свою работу.

Это обычно означает, что объекты регистрируют расширения в контейнере, такие как пользовательские резольверы, вкладчики компонентов или перехватчики ComponentModel - вещи, которые по определению знают о контейнере.

Установщики регистрируют компоненты уровня приложения, которые лучше всего не знают о контейнере.

Надеюсь, что делает различие более ясным.