2

我想弄清楚Windows工作流基礎的內部。所以,我們有一些軟件組件,我們將它們以工作流的形式交織在一起,無論是基於條件的順序工作流還是狀態機工作流。現在,我在想(這裏我可能是錯的),這不適用於IoC +依賴注入(通過Unity或Spring.net)。什麼時候用什麼?我甚至想對嗎?Windows Workflow Foundation或IoC容器+依賴注入?

+0

我的問題有問題嗎?它已經2小時沒有任何反應,它不像StackOverflow – Perpetualcoder 2009-01-05 19:33:54

回答

4

不太確定我明白這個問題,但我會試一試。

WF不使用IOC容器。它使用ServiceLocator模式將依賴項添加到工作流運行時,服務定位器和工作流活動,並從工作流運行時檢索這些服務。

ServiceLocator和IOC模式相似,在解耦依賴關係中具有相同的用途。雖然在IOC容器中推送依賴關係,但是使用ServiceLocator來提取依賴關係,但應用程序是不同的。

希望這回答你的問題,如果不是,我會嘗試重新解釋原來的問題。

3

我一直在琢磨如何使用我的IOC容器從工作流中提供和維護的組件。正如其他答案所述,工作流實例希望使用service-locator從運行時提取服務,而不是注入依賴關係。

縮小差距的一個簡單方法是在設置WF運行時時將依賴關係從您的IOC容器中取出,然後使用AddService將它們放入運行時。您的工作流可以覆蓋OnActivityExecutionContextLoad,並使用服務提供者上的GetService方法將它們從運行時退出,並將它們放到工作流的[NonSerialized]公共屬性中。然後,您可以訪問代碼活動中的服務等。

您也許可以搭建一個運行時服務,在啓動工作流實例時注入依賴關係。