2011-07-15 90 views
1

我已經得到了需要通過WCF通信的兩個應用程序服務器WCF: 稱爲A和B. 一個假設推值到B的存儲/更新 乙想推的列表存儲到一個兩個WCF服務器VS與回調

在我的團隊的高級程序員要開在一個我要求一個人應該是服務器,另一個應該是客戶端WCF服務器和B.

另一個WCF服務器值並使用服務器回調爲了避免將接口拆分爲兩個,避免循環依賴和重複的代碼設置。他不明白。任何人都可以幫我解釋他爲什麼他的解決方案是不好的代碼?

+0

之前堅持您的解決方案(看起來比較正常的,確實),檢查你將能夠使用綁定接受回調。保證您的應用程序始終位於同一個Intranet中? – Dan

回答

0

服務應封裝其他應用程序可以使用的一組功能。它所做的只是等待並響應來自其他組件的請求,而不會自行發起操作。

如果應用程序B正在存儲數據,那麼它當然可以作爲服務提供給應用程序A.它提供了存儲數據的「服務」,而不需要應用程序A擔心如何或在哪裏,並返回成功存儲的數據。這正是WCF Services要處理的事情。

我假設應用程序A是發起請求的應用程序(除非您有未提及的第三個應用程序,其中之一必須是是發起程序)。如果應用程序A正在發起操作(例如,它具有UI,或被觸發以執行一些批處理等),則不應將其建模爲「服務」。

我希望幫助:)

1

這取決於您的標準。假設一個客戶端/服務器模型,其中A是客戶端,B是服務器。您聲明B應該將數據「推送」到A.

如果您確實需要推送,那麼您應該將B配置爲雙工服務器。這確實給你的帶子帶來了一些壓力,所以如果你有一個帶寬限制,這可能不是正確的選擇。

如果您在A上可能會比您想要選擇自己的輪詢機制(可能基於計時或某種其他邏輯)延遲一段時間。

如果兩者都不是選項,則可以嘗試交換角色。那麼,讓B成爲客戶端和A服務器。這很直觀,但它可能適合您的情況。如果您可能會延遲存儲數據,請B輪詢A以更改數據並保存一段時間。

如果兩者都沒有延遲並且bandwith有限,那麼最終會得到兩個WCF服務。儘管它乍一看可能看起來很傻,但請記住它們是服務而不是服務器。它確實使事情變得更加複雜,所以我會把它作爲最後的手段。