WCF与几个没有IIS的客户端通信

时间:2010-02-11 12:03:18

标签: c# wpf wcf tcp client-server

我们正在开发一种点对点通讯软件,允许一些杂货店将他们的库存与我们称之为“总部”的库存同步。 为此,我们考虑WCF + WPF,没有IIS和Web服务。我对WCF的体验基本上是零,所以我的问题是使用WCF的TCP comm解决方案是否有效。正在传输的数据非常有限,对于压缩的纯文本文件大约2MB(因此我们发送二进制数据!),这仅在每天进行一次。因此,带宽/负载不应成为问题。 此时的想法是在HQ上运行WCF“服务器”。商店让自己知道该服务器,然后来回发送文件(类似于聊天应用程序)。 我不确定的是:每家商店都需要有一个WCF“服务器”(或端点)吗?服务器(= HQ)如何将文件发送到其中一个客户端(=商店)?每个商店都可以将文件发送到任何其他商店和总部,每个商店也可以“请求”来自任何其他商店/总部的文件。

两个限制:由于预算原因,所涉及的计算机/计算机都不能运行Windows服务器,并且正如IIS之前所说的那样是不行的。

4 个答案:

答案 0 :(得分:3)

如果您只是来回发送文件,我可能会质疑WCF是否有任何意义。您是否考虑过使用文件传输协议,例如scp或sftp?

每台计算机都必须接受连接并设置文件放置位置,然后yuor应用程序必须监视该位置以获取新文件。我一般都喜欢WCF,但如果你想做的话,文件传输协议就会有所帮助。

答案 1 :(得分:2)

您不需要在IIS中托管WCF,但有什么特别的原因您不想这样做吗?

您可以在ServiceHost中托管WCF,但是您需要构建,维护和部署IIS免费提供的许多服务器/服务功能,例如应用程序进程回收,基于激活的托管等。

无论如何,几乎听起来你需要点对点网络。您可以使用NetPeerTcpBinding

在WCF上执行此操作

答案 2 :(得分:2)

如果您通过服务器引导所有流量,那么没有理由不通过WCF实现此目的。服务器将在IIS中托管WCF服务,其中的商店具有能够上载和请求文件的客户端。使用这种方法,商店将无法直接将fiels相互转移,但他们必须通过主服务器来完成,如果您没有其他方案的预算,这将满足您的需求。

如果每天进行一次所有传输,则会对每个客户端请求文件请求,然后每个客户端上传服务器或任何其他客户端所需的任何文件。最后一步是服务器将所需文件分发给每个客户端。显然,这是对它的简化看法,实际过程可能需要更多思考。

答案 3 :(得分:0)

如果您有机会重新设计应用程序,我建议您这样做。您可以在WCF中抛出字符串,但如果您可以创建数据协定,则可以保持所有通信的强类型。

如果您可以访问Windows Server 2008,那么新的IIS可以托管您的WCF,即使它没有使用tcp。否则,您只需要编写一个打开服务主机的应用程序,通常将其包装到Windows服务中。但正如@MArk Seemann指出的那样,通过在IIS中运行您的服务,您可以获得大量免费赠品。

没有使用PeerTcpBinding的经验,但我可以告诉你,NetTcpBinding既漂亮又快速,如果你需要它还带有加密和身份验证等各种好处。