我试图弄清楚Windows工作流基础的内部。因此,我们有一些软件组件,我们以工作流的形式将它们交织在一起,无论是基于条件的顺序工作流还是状态机工作流。现在,我在想(我可能在这里错了)不适用于IoC +依赖注入(通过Unity或Spring.net)。什么时候用?我甚至在想对吗?

有帮助吗?

解决方案

我不太清楚我理解这个问题,但无论如何我都会尝试一下。

WF不使用IOC容器。它使用ServiceLocator模式,您可以在其中向工作流运行时,服务定位器和工作流活动添加依赖项,并从工作流运行时检索这些服务。

ServiceLocator和IOC模式类似,在解耦依赖关系时具有相同的目的。 apporach是不同的,虽然在一个IOC容器推送依赖关系,而ServiceLocator用于拉出依赖关系。

希望这能回答你的问题,如果没有,我会尝试重新解释原来的问题。

其他提示

我正在努力解决如何使用工作流程中我的IOC容器提供和服务的组件。正如其他答案所述,工作流实例希望使用服务定位器从运行时提取服务,而不是注入依赖项。

弥合差距的一种简单方法是在设置WF运行时时从IOC容器中取出依赖项,然后使用AddService将它们放入运行时。您的工作流可以覆盖OnActivityExecutionContextLoad,并使用服务提供程序上的GetService方法将它们从运行时中移出并将它们放入工作流的[NonSerialized]公共属性中。然后,您可以从代码活动等访问服务。

您可能还能够在激活工作流实例时安装一个注入依赖项的运行时服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top