2011-02-01 94 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

一种方法是在服务器端托管另一个允许流式传输的服务。只需通过双工通道发送一条消息到带有位置和某种标识符的笔记本电脑,即可使用其他服务进行下载。