套接字与 Wcf 通信

Posted

技术标签:

【中文标题】套接字与 Wcf 通信【英文标题】:Socket vs Wcf communication 【发布时间】:2012-04-21 21:18:55 【问题描述】:

Wcf 是否替换了套接字? 对于客户端服务器应用程序,我需要客户端向服务器发送一些消息,并且服务器可以做同样的事情而无需等待任何客户端的请求。 那么我可以这样做还是 wcf 只能公开客户端需要的许多服务并且通信不能是交互和双向的? 谢谢

【问题讨论】:

在类似的提问线上:***.com/questions/59456579/is-wcf-built-on-sockets 【参考方案1】:

您希望连接是持久的吗?如果是这样,那么这听起来对 WCF 来说不是一个好案例。不妨看看ZeroMQ 之类的东西。

【讨论】:

感谢 OJ:我的应用程序是 GPS/GPRS 跟踪单元的模拟器。所以,我需要设备和服务器之间的持久连接,我有义务使用 wcf 来做到这一点。我可以这样做还是您认为这很难或不可能?任何建议 您可以使用 WCF 执行此操作,但我强烈认为它不适合这项工作。一个基本的套接字抽象是真正需要的,而 ZeroMQ 做这种事情非常好。 WCF 在构建时和运行时的开销使其比必要的更痛苦。对于您的情况,抽象并不会真正给您太多。请问您为什么必须使用 WCF 执行此操作?干杯! 我的老板会说客户端使用socket,服务器使用wcf,但我不知道具体是什么原因!!! 你的老板是技术人员吗?这是他打电话的地方吗?这类决策应该由技术人员(主管和架构师)做出,而不是由业务人员做出。在我看来,如果你的老板认为他们可以只在一端有一个套接字而在另一端有 WCF,那么你的老板不知道什么是 WCF。问题的过度简单化带有误解的味道。最终,这是业务人员不应该关心的实现细节。目标是以最好的方式解决问题。因为你描述的 WCF 在我看来不是那样的。 一侧是 Wcf,另一侧是套接字?当然不是技术性的,也许造型师“给我一白一红”【参考方案2】:

Wcf 永远不会替换套接字。 WCF 只是在 TCP 上实现了一些具体的协议,所以如果你需要其他东西,比如 IP 甚至 UDP,你仍然需要使用套接字。

如果您需要一个稳定的 TCP 连接,您仍然需要一个套接字。此讨论也可能对您有所帮助。 http://forums.silverlight.net/t/17502.aspx/2/10

【讨论】:

是的,双工通道实际上是一个双 TCP 连接,因此您有两个连接,一个用于发布数据,另一个用于从服务器接收数据,只需阅读我提到的链接即可。 如果我理解的话,socket和wcf双工通道的区别,在通信方式上,就是通道数:服务端和客户端可以无序一直发送和接收;客户端请求服务,服务器将结果发布到另一个通道,或者服务器向客户端发送命令,客户端发送验证或拒绝。 是的,有两个套接字,但是“抽象”又没有给你任何东西,它实际上把东西拿走了。有很多开销是不值得的。

以上是关于套接字与 Wcf 通信的主要内容,如果未能解决你的问题,请参考以下文章

WCF - 是不是可以使用 HttpListener 或套接字来监听 WCF ChannelFactory

(初学者)C#/WCF:套接字连接中止

如何将基于套接字的客户端与 WCF (net.tcp) 服务一起使用?

WCF:套接字连接已中止

将 DTO 与 WCF 结合使用

WCF 传输安全:套接字连接被中止