這個問題是關於體系結構的。其實,我想知道哪些體系結構模式或解決方案允許執行以下操作。允許系統各部分之間進行通信的架構
例如,我有一個客戶,客戶可以在我的網站上訂閱新聞。我需要一個解決方案,允許我在添加新消息時向所有訂閱的客戶發送通知。當然,我想自動完成而不添加額外的代碼來添加新聞。
但是,它可能有很多的一些任務。不僅在添加新聞時發送通知。 如果有人能夠提出一些不是觀察者,事件或消息採購的東西,那將會很棒。
這個問題是關於體系結構的。其實,我想知道哪些體系結構模式或解決方案允許執行以下操作。允許系統各部分之間進行通信的架構
例如,我有一個客戶,客戶可以在我的網站上訂閱新聞。我需要一個解決方案,允許我在添加新消息時向所有訂閱的客戶發送通知。當然,我想自動完成而不添加額外的代碼來添加新聞。
但是,它可能有很多的一些任務。不僅在添加新聞時發送通知。 如果有人能夠提出一些不是觀察者,事件或消息採購的東西,那將會很棒。
如果只有一個發佈者,觀察者模式非常棒。
由於您訂閱特定消息,發佈/訂閱會更好,因爲任何人都可以發佈消息。一條消息可能是NewsPublished
,它包含所有正在發佈的新聞項目的相關細節。
至於實施,它取決於您是否正在尋找進程內解決方案,或者您是否希望兩個或更多進程能夠進行通信。
如果.NET和inprocess是需求,我會使用控制容器的反轉來查找所有訂戶。
你的意思是發行後的消息在一定隊列(例如MSMQ),然後處理它處理此隊列中運行的消息處理程序。很好理解總體想法嗎? – Ph0en1x 2012-02-23 13:36:19
MSMQ是一個具體的實現。 Pub/Sub有很多不同的實現。您也可以使用像nServiceBus這樣的服務總線或創建一個進程內實現。 – jgauffin 2012-02-23 13:50:34
其實這個話題的開始是因爲我知道這個任務可以用ServiceBus來解決,但我認爲對於我目前的需求來說,就像在車輪上打一隻蝴蝶,我好奇 - 是否可以更簡單的解決方案。 – Ph0en1x 2012-02-23 13:57:28
正如所建議的,觀察者模式似乎是正確的工作模式。
實施例:http://www.dofactory.com/Patterns/PatternObserver.aspx#_self1
啊,我第二(或第四相當)觀察者模式。
如果您碰巧在.NET下編寫代碼,請查看功能強大的Rx(反應性擴展)框架!
根據網站的說法,它「是一個使用可觀察集合和LINQ風格的查詢操作符來編寫異步和基於事件的程序的庫。」
退房觀察者模式:http://en.wikipedia.org/wiki/Observer_pattern – MicSim 2012-02-23 11:29:30