2011-02-01 105 views
0

我有以下情形:WCF架構問題

WCF主機服務器< - 網絡連接 - > WCF便攜式客戶端< - 連接 - > WCF客戶端2

我也有一個在WCF HOST SERVER所在的服務器上,WCF HOST CLIENT具有UI。該客戶端在主機服務器上調用服務。

我連接了WCF主機客戶端以列出連接的WCF LAPTOP客戶端; 我已經使用雙工連接,因此如果我雙擊其中一臺連接的筆記本電腦客戶端,雙工通道將用於與選定的WCF LAPTOP客戶端進行通信。

但是,我不需要一個字符串消息,而是需要將一個大的數據文件傳輸回WCF LAPTOP客戶端。我無法使用回撥通道進行流式傳輸,因爲雙工不允許流式傳輸。

注:我必須使用NetTcpBinding爲此要求。

所有WCF LAPTOP客戶端使用相同的IP和端口。

所以問題是如何在WCF HOST CLIENT UI上選擇連接的筆記本電腦,並將流對象發送回選定的laptlop?由於回調通道知道筆記本電腦的位置,我可以通過某種方式使用該信息爲該特定筆記本電腦打開一個新的wcf連接(或新的套接字連接)?我使用GUID在WCF HOST CLIENT上註冊每檯筆記本電腦,並使用它來確定哪個WCF LAPTOP CLIENT發送字符串消息。

我試過了什麼: 我曾嘗試在WCF LAPTOP客戶端使用回調消息從主機服務器調用不同的服務;這工作並返回從HOST SERVER到特定的LAPTOP客戶端的字符串消息,但我無法發回字節數據,因爲我得到了合同不匹配錯誤。

我實際上必須做的是將大文件從服務器發送到筆記本電腦,然後將該文件轉發給WCF CLIENT 2,該WCF CLIENT 2只連接到筆記本電腦,而不連接到網絡。 WCF CLIENT 2實際上是一個XP上的小盒子。除非我知道將文件發送到哪臺筆記本電腦,否則所有筆記本電腦都會收到該筆記本電腦,而我只需要選定筆記本電腦即可接收該文件,然後將其轉發至其連接的盒子。我正在使用套接字連接在筆記本電腦和盒子之間進行轉發。

任何見識或幫助,將不勝感激。

回答

0

一種方法是在服務器端託管另一個允許流式傳輸的服務。只需通過雙工通道發送一條消息到帶有位置和某種標識符的筆記本電腦,即可使用其他服務進行下載。