2012-01-22 59 views
0

我想知道是否可以根據以下要求得到一些想法: - 一種服務,它輪詢多個數據庫上的日誌表以進行更改,然後將通知發佈到任意數量的輕量級客戶端運行在各種計算機上 - 發送的消息很小,只包含有關事件時間戳和事件性質的數據。 - 我希望在PC上安裝桌面客戶端非常容易,所以不希望它對.NET 4框架以外的第三方組件有很大的依賴。設計發佈者/訂閱者體系結構

這是我自己的想法,到目前爲止: 我玩過NServicebus,這似乎符合我想要的法案interms。 我正在考慮使用某種異步方法輪詢在發佈者中進行輪詢的每個數據庫,然後創建訂閱者(客戶端)隨後會收到的消息。 Nservicebus對此是否太多了呢?目前我並不要求客戶端只會收聽和收到消息,因此他們不會真的發回任何東西。 我意識到,如果我要安裝NServicebus,那麼MSMQ和其他位也需要安裝在每個客戶端上。 所以希望這些都不是資源飢渴。 我已經做了一些閱讀並下載了一些代碼來玩,但在這方面並沒有太多的經驗,所以任何建議都是有用的。

+0

你看過使用netTcpBinding的WCF回調嗎?每個客戶都必須註冊該服務,但實現相對容易,輕量級且不需要第三方軟件。 – Lloyd

+0

@勞埃德,不正確沒有。我確實查看了全雙工服務之前的其他內容,但我猜也應該看看 – Rubans

回答

1

你描述可以用純.NET框架來實現什麼......恕我直言NServiceBus是相當「吃不消」爲你描述...

爲了實現這樣的自己的機制,你可以使用UDP廣播.. 。雖然UDP不給交貨保證它通常是在LAN可靠......只有你可能需要的是有防火牆規則允許你UDP端口照顧方面...

至於與零件數據庫:

你不會說這是什麼樣的數據庫......但一些數據庫(如SQL Server 2008,Oracle等)帶有事件/ noti fication機制,這將使投票部分陳舊...

+0

感謝您的回覆,我計劃連接SQL Server 2008 dbs。然而,我不能保證我能夠使用像服務代理這樣的功能,只有我可以肯定的是我將讀取訪問表。 – Rubans

+0

此外,防火牆問題也許是一個因素,因爲我可能不得不在假設下工作,我將無法更改任何防火牆設置。但是,這也可能會影響msmq。 – Rubans

+1

@Rubans如果你不能改變任何防火牆設置,那麼你需要使用任何可用的連接選項......所以問題就變成了什麼樣的連接在運行時可用(在決定技術之前)? – Yahia

0

我個人認爲這是某種ESB的情況。從使用已建立的ESB(如NserviceBus使用的MSMQ)中獲得的好處是您可以獲得消息持久性等內容。

我也認爲,使用ESB來處理通信層有助於通過分離的兩個域(出版領域和消費領域)多一點,以提高解決方案的整體架構比你可以用自定義的網絡解決方案