2012-02-23 58 views
1

這個問題是關於體系結構的。其實,我想知道哪些體系結構模式或解決方案允許執行以下操作。允許系統各部分之間進行通信的架構

例如,我有一個客戶,客戶可以在我的網站上訂閱新聞。我需要一個解決方案,允許我在添加新消息時向所有訂閱的客戶發送通知。當然,我想自動完成而不添加額外的代碼來添加新聞。

但是,它可能有很多的一些任務。不僅在添加新聞時發送通知。 如果有人能夠提出一些不是觀察者,事件或消息採購的東西,那將會很棒。

+4

退房觀察者模式:http://en.wikipedia.org/wiki/Observer_pattern – MicSim 2012-02-23 11:29:30

回答

2

如果只有一個發佈者,觀察者模式非常棒。

由於您訂閱特定消息,發佈/訂閱會更好,因爲任何人都可以發佈消息。一條消息可能是NewsPublished,它包含所有正在發佈的新聞項目的相關細節。

至於實施,它取決於您是否正在尋找進程內解決方案,或者您是否希望兩個或更多進程能夠進行通信。

如果.NET和inprocess是需求,我會使用控制容器的反轉來查找所有訂戶。

+0

你的意思是發行後的消息在一定隊列(例如MSMQ),然後處理它處理此隊列中運行的消息處理程序。很好理解總體想法嗎? – Ph0en1x 2012-02-23 13:36:19

+0

MSMQ是一個具體的實現。 Pub/Sub有很多不同的實現。您也可以使用像nServiceBus這樣的服務總線或創建一個進程內實現。 – jgauffin 2012-02-23 13:50:34

+0

其實這個話題的開始是因爲我知道這個任務可以用ServiceBus來解決,但我認爲對於我目前的需求來說,就像在車輪上打一隻蝴蝶,我好奇 - 是否可以更簡單的解決方案。 – Ph0en1x 2012-02-23 13:57:28

0

啊,我第二(或第四相當)觀察者模式。

如果您碰巧在.NET下編寫代碼,請查看功能強大的Rx(反應性擴展)框架!

根據網站的說法,它「是一個使用可觀察集合和LINQ風格的查詢操作符來編寫異步和基於事件的程序的庫。」

+1

唐'第二或第四。投票另一個答案。 – jgauffin 2012-02-23 14:38:29

+1

[這個答案在Meta Stack Overflow上討論](http://meta.stackexchange.com/questions/123369/flagged-incorrect-answer-got-declined)。 – Gilles 2012-02-24 12:59:52

+0

非常感謝這個信息,Gilles! – DaveFar 2012-02-24 13:34:29

相關問題