2010-08-20 87 views
0

我們得到了一個用戶可以創建定期任務的場景。重複執行的任務可以是任何類型,例如在每個月的一個月中定期向該客戶發送報告,並在每個星期一處理髮票。所有這些任務都是特定於應用程序的(不是用戶特定的),也可以看到我的其他用戶。爲了迎合這種需求,我們爲前景中的每項任務創建約會,這使我們能夠找到下一個約會執行日期。我們在服務器上運行了一個服務,所有約會都在服務器上安裝的Outlook客戶端上創建。現在我對這個實現有了一些懷疑。定期預約系統 - 設計指導

1)Outlook客戶端是否會支持多線程? Coz線程池中的幾個線程可以訪問客戶端嗎?

2)使用outlook客戶端的唯一原因是找到下一個執行日期。我們自己想過解決這個問題,但有很多最終案例需要解決。是否有任何第三方工具或組件可以滿足我們的需求?我們的服務器組件是用c#編寫的。

回答

0

我不認爲Outlook將支持您的多線程場景。

iCalendar是一個用於創建,保存和傳輸日曆信息的標準化規範(RFC 2445)。許多日曆應用程序使用此標準來導入和導出其他客戶端(包括Outlook中的實現)。

我使用Douglas Day創建的開源.NET實現,它是available here來管理我的應用程序中的循環事件。這聽起來像你只需要一小部分功能,但是所有的工作都是在處理完整的複雜循環模式的過程中完成的,發現下一個事件是微不足道的。事件數據是完全可序列化的,因此您可以將它們保存在平面文件或關係數據庫中,並且如果您想提供該功能,則可以將事件導入到Outlook或其他應用程序中,從而獲得更多好處。

最難的部分是熟悉對象模型,但考慮到短暫的秒殺,您很快就會關閉並運行,並且不必在服務器上執行任何令人討厭的Office interop。

這只是我過去使用過的一個選項;毫無疑問還有其他方法可行,但無論如何,我會遠離將應用程序事件保存在服務器上的Outlook的運行實例中,特別是使用異步訪問。

+0

感謝周杰倫。我會評估它。 – Hunter 2010-08-23 16:07:07