在过去的几年里,我一直是温莎的忠实用户。在使用 Fluent Registration API 之前,我会在 Xml 注册和大量的 AddComponent() 代码之间切换。很长一段时间以来,我们一直在愉快地使用 Fluent Registration API 和 Installers。我从各种著作中得到了这样的印象:
http://docs.castleproject.org/Windsor.XML-Registration-Reference.ashx
Xml 注册方法已经失宠,如果它在不久的将来被标记为弃用,我也不会感到惊讶。
现在,对于我的问题:Fluent Registration API 和安装程序在自动连接场景中流畅地工作(即,当我希望 Windsor 弄清楚如何构建我的对象图时)。自动布线是绝大多数 IoC 用例,但是当自动布线不可能时呢?换句话说,我有多个服务实现,我需要告诉 Windsor 如何构建我的对象图的各个部分。我已经用 Xml 注册方法做过很多次了,但是这些天有更首选的方法吗?我对采用 Xml 注册方法犹豫不决,因为它的未来似乎不确定,但我不知道如何通过 Windsor 实现这一目标。
我的用例是:
- 系统需要能够在 QA 测试中交换实现(即信用检查和欺诈检测处理,我们希望在不依赖信用局 API 的情况下进行测试)
- 我们系统中的提供者模式,我们需要在部署时有条件地打开和关闭不同的实现。
这一切似乎都非常适合 IoC,我们已经准备好所有的构建块,但要确保我正在采用最适合未来的 Windsor 方法。
更新:虽然我喜欢功能切换方法,但我最近发现了一个 Windsor 功能,该功能在此前置后备组件 上非常有用。我将这里的编辑留给以后可能偶然发现的任何人。