城堡中IWindsorInstaller和AbstractFacility之间的区别

时间:2011-03-04 21:01:14

标签: .net castle-windsor

我一直在使用工具来注册我的组件,但注意到了IWindsorInstaller。

它看起来与我相似,我想知道两者之间的区别是什么,应该在哪里使用。

1 个答案:

答案 0 :(得分:18)

丹,

区别如下:

  • 安装程序旨在封装离散的注册单元。换句话说,您使用安装程序在容器中注册应用程序组件。 可以使用Configuration类或FromAssembly类来帮助您使用配置文件,或者自动发现您的安装程序并一次性运行它们,因为在大多数应用程序中您将有几个他们。
  • 设施旨在增强容器的开箱即用功能。所以你有(使用标准设施作为例子)像TypedFactoryFacility这样的东西,它增加了自动创建工厂的能力,从而透明地从容器中提取组件。您拥有StartableFacility,允许启动/停止组件,而无需您明确担心。您还可以使用NHibernate,WCF或Monorail或ASP.NET MVC等集成工具,使Windsor了解其工作的其他框架的某些方面,以便您的工作更轻松。在功能方面,设施可以有自己的配置。批量添加工具也没有助手,因为大多数应用程序只需要几个。

他们两个都可以注册东西,但主要区别是 - 安装程序注册您的应用程序需要的任何内容(包括添加设施)。另一方面,设施记录了他们为完成工作所需要的东西。

这通常意味着设施注册容器的扩展,如自定义解析器,ComponentModel构造贡献者或拦截器 - 根据定义,它们知道容器。

安装人员注册最不了解容器的应用程序级组件。

希望能使区别更加清晰。