2011-10-05 29 views
0

我想構建一個簡單的Windows工作流來監視入站文件的目錄並使用Windows WF 4.0做一些數據庫更新。目前,我打算構建一個'WCF工作流服務'並將其作爲'24小時全天候運行'的Windows服務(每日服務關閉和啓動)。主持WF作爲Windows服務

進一步在未來,我打算使用ASP.NET/WPF應用程序來使用此服務來創建基本儀表板的東西。

考慮到WF託管在Windows服務的文件的目錄輪詢的想法,這似乎是一個好主意嗎?這可能是什麼原因?

如果這方面有任何缺點,或者可以通過更好的方法達到什麼目的,請諮詢意見嗎?

回答

0

我實際上正在做這個,但它比你想象的要複雜一點,如果可能的話應該避免。

您不應該在活動中阻止;如果預期這是一個長時間運行的活動,並且正在等待來自外部的輸入(例如FileSystemWatcher事件),則工作流應該自己閒置並等待從外部喚醒。

我是如何做到這一點的?我創建了一個託管FileSystemWatcher的工作流擴展。一旦活動準備好觀察文件,它就創建了一個書籤並將其傳遞給擴展。

擴展程序然後啓動FSW,保持書籤。

當一個FSW事件被觸發時,該擴展繼續書籤,傳遞一個包含有關事件詳細信息的對象。該活動完成了該活動所需的內容,然後重新安排了自己。

通常我不會這樣做,但我有一些要求,迫使我使用WF4來實現這一目標。如果我不需要使用WF4,我會在服務中加入FSW並消耗事件。

除非您期望必須非常靈活地使用您的配置,詳細說明您對FSW事件所做的事情,並且期望在部署服務期間經常更改,否則我會跳過WF4。

+0

謝謝。這是否意味着WF沒有設計滿足目錄/文件監控等需求?在任何使用SOA的行業中,這些行爲是不是很常見?考慮一些圓滿的時尚來實現它仍然使用WF會好嗎? – thinkster

+0

@ Sriraj.P:沒有用於監控目錄的烘焙活動。監控目錄是一種老派;現在誰在地獄中將文件放入目錄?哦,等等,我必須這樣做。所以你必須自己滾動它。正如我的答案所表明的那樣,您可以使用我所描述的圓潤時尚來正確實現它。我不會推薦它*除非你有很好的理由使用Workflow Foundation 4來監視目錄*在你的情況下,監視目錄可能會更好,然後*產生WF來處理任何已創建文件的內容* 。我猜這是兩全其美。 – Will

+0

這似乎是方式。感謝您的輸入 ! – thinkster