2010-06-25 69 views
1

我們正在討論設置通知服務的正確方法。這種服務將被各種應用程序調用,服務將需要返回相關數據。MSMQ/.EXE與Web服務.... MEF IoC?

我的感覺是你只是創建一個Web服務,內部網門戶(或任何其他)可以通過發送用戶ID和作爲回報獲取任何信息(用戶425報告是90天到期,應用程序已拒絕..等等..)我們有多個內聯網應用程序以及門戶(讓我們稱他們爲應用程序A,B和C)。

另一個人在這裏說我們需要使用MSMQ ..所以我做了一些研究,並且據我所知,MSMQ的意義在於當你有一個用戶執行某種請求很長而且不能同步運行..如果這些呼叫需要0.02秒.. MSMQ的優勢是什麼?我正在做的是發回一條消息...

那麼哪個更有意義?

獎勵:應用程序A,B和C都有自己的業務邏輯,用於確定將消息發送回主門戶應用程序......所以我可以。

  1. 通知Web服務是否包含應用程序A B和C的所有邏輯?現在有問題了,我正在理解應用程序AB和C如何工作,以便我可以讓WS回發相應的消息。

  2. 使用MEF/IoC並作爲構建過程的一部分我得到一個MEF .DLL實現一定的接口。所以我的通知程序jsut去各種應用程序,並說給我你的BIZ LOGIC DLL ....所以一旦我有所有的DLL,並知道接口,我可以循環通過thme,並獲得我需要的數據...這樣它直到A,B和C的開發者都是他們的領域的expoerts來實現這個消息傳遞接口。

幫助。 (我幾乎沒有理解MEF,所以我可以離開那裏)

回答

1

我認爲這裏的一部分問題是,對於MSMQ在這個過程中究竟扮演什麼角色存在一些困惑。基本上你做這些通知的方法有兩種:

  1. 有一系列可以查詢,以獲得所需的通知網絡服務(拉模式讓說)
  2. 擁有的應用程序發佈過程中出現的狀態變化他們在選擇2的情況下,當然做他們的工作,其中一些可以通過通知服務被拾起,然後加工(推模式)現在

,你可以使用像NServiceBus設置建立一個發佈/訂閱消息系統,它將允許應用程序發佈重要事件i系統和通知服務來訂閱需要生成通知的消息。恰巧NServiceBus使用MSMQ作爲默認傳輸,所以在這種情況下,MSMQ會出現在圖片中,但僅作爲實現細節。

在選項1的情況下,您可以通過多種方式實現它,包括WCF Web服務。

就我個人而言,我發現Pub/Sub模型是選項中最具可擴展性和靈活性的,並且項目的文檔高於標準,這很好。

+0

我最初的想法是版本1。這更簡單,重要。有人登錄後,它會向通知系統發出請求,以便恢復任何通知。 選項2對我來說似乎很好,如果這些應用程序正在爲我的通知服務創建工作,這將是長期運行的... 因此,假設通知服務可以開始和完成任何它在0.05秒內做的事情..我不查看有任何隊列的點 – punkouter 2010-06-27 17:09:44

+0

該隊列爲您提供了一些額外的可靠性,因此如果在Web服務調用期間發生某些嚴重故障(Windows更新),而不是在以太網中丟失,它實際上會寫入隊列,所以當事情發生故障或重新開始時,處理等待的消息。這實際上取決於你如何看待你的架構,你問服務的狀態還是你的服務提醒其他服務有關正在發生的事情。 – ckramer 2010-06-28 00:08:29

+0

如果我創建了一個更新「通知」表並在發現需要發送通知時創建條目的Windows服務。 然後,我想其他應用程序可以調用一個Web服務,該服務查找nable並返回集合的通知.. 我不明白pub/sub如何幫助這裏或否則我不明白...內部應用程序不是'訂閱 以任何方式,除了他們有代碼調用通知Web服務..應用程序不會發布任何狀態更改..通知Web服務具有邏輯和數據庫。 – punkouter 2010-06-28 14:27:51