我正在設計一個系統,允許用戶從一個系統獲取數據併發送到其他系統。其中一個目標系統具有複雜的SOA(Web服務),另一個是接受平面文件輸入的大型機。我應該使用消息而不是數據庫嗎
我創建了一個包含PublishEvent表和PublishEventType表的數據庫。還有一些標準化的表格是特定於正在發佈的事件的類型。
我還有一個「接口」表,它是標準化數據表的一個扁平版本。最終用戶有一個將數據放入接口表的進程。我不確定確切的過程 - 我認爲這是某種報告應用程序,他們可以將結果導出到SQL表。然後,我使用SSIS包從接口表中取出數據並將其放入規範化數據結構中,並在PublishEvent表中創建新行。我使用平坦表,因爲當我第一次向他們展示關係表時,他們似乎很困惑。
我有一個windows服務,監視PublishEvent表中的新行。 Windows服務通過插件進行擴展(使用MEF框架)。調用哪個插件取決於PublishEvent行中的PublishEventTypeID字段的值。
PublishEventTypeID 1調用從一組表中讀取數據並調用SOA Web服務的插件。 PublishEventTypeID 2調用從另一組表中讀取數據的插件,並創建要發送到大型機的平面文件。
這似乎是我正在實施「數據庫作爲IPC」的反模式。我應該改變我的設計以使用基於消息傳遞的系統嗎?將數據放入平面表然後放入規範化表中的過程是多餘的?
編輯:這是正在開發的.NET 3.5中