2009-11-03 232 views
1

我有幾個關於WCF服務的問題,我將不勝感激。我已經閱讀了很多關於如何將WCF服務應用到現實生活場景的材料,但是存在很多矛盾的觀點。WCF Web服務和客戶

我們有一個數據服務,它只不過是一個到後端數據存儲的接口。這種數據服務有許多客戶端,當數據服務所保存的數據發生變化時應該通知客戶端。這些客戶端隨後可以根據這些通知從數據服務請求數據。我們想支持說2000個客戶(不是基於網絡的解決方案,但可能是一個大型的分散網絡)。

我的顧慮:

·如果連接服務端和客戶端之間丟失,客戶應立即知道。

·服務應在短時間內通知客戶數據發生變化。通知無法排隊並在稍後收到。

·我們不希望客戶端的大量配置工作使其與服務一起工作。

·如果服務和客戶端不能很好地擴展,我們不希望服務和客戶端之間存在永久連接。

的方法,我們已經看過:

·MSMQ

·雙面打印裝訂

·輪詢事件(包括Silverlight 3的新投票結合)

·訂閱/發佈方式。

我們發現所有這些都有缺陷,並且似乎沒有一種最佳的做我們想要的方式。

任何幫助,將不勝感激。

感謝 伊恩

回答

3

這不正是你所尋找的,但是當涉及到基於事件的服務架構,這個人(或博客)諮詢是Udi Dahan

他的文章Event-Driven Architecture: SOA Through the Looking Glass提供了一個很好的概述他對這些事情的方法。雖然這篇文章沒有明確地討論WCF,但他對WCF也知之甚多,所以我只能推薦瀏覽他的博客,看看是否有什麼東西讓你覺得有用。

5

要完成第一個顧慮,唯一的方法就是違反第四條:爲了讓客戶知道連接中斷,需要一個常數輪詢機制(立即「拒絕」)或保持開放連接。 WFC不適合開放連接,所以首先關注的是反對使用它。

無論您選擇哪種技術,您的第二個擔心都會引入規模問題。從長遠來看,有狀態的連接模式將難以實施和擴展,因此您可能需要檢查這些問題是完整的業務需求還是僅僅是偏好。

+0

+1總的來說,一個很好的答案,雖然我不同意「WCF不適合打開連接」。確實,API模型斷開了通信,但是一些綁定(甚至雙工HTTP綁定)使用了開放連接。 – 2009-11-04 08:26:21