首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实时环境中的WCF或Sockets通信?

实时环境中的WCF或Sockets通信?
EN

Stack Overflow用户
提问于 2011-01-09 04:26:41
回答 3查看 4.5K关注 0票数 3

我有一个场景,我需要跨两个客户端发送一系列数据。

该数据包括序列化的XML,该XML将包含另一个客户端需要对其做出反应的命令。

我还需要发送图像通过电线,因为我需要提供一个聊天设施在视频/音频聊天的形式。

我希望两者都有一个单一的通信媒介,因为消息/命令的数量可能会很少。

WCF还是Sockets?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-09 05:48:39

WCF是用于构建面向服务的应用程序的API。我不认为视频/语音聊天是这样的应用程序。

首先,对于这样的应用,您需要哪些传输功能?我的语音/视频传输知识非常差,但我希望:

客户端连接到聊天服务器,发送他的语音/视频数据,并接收其他client.

  • Streaming的语音/视频数据的
  • 双工通信-数据量可以相当大,所以当您开始读取数据时,处理这些数据会很好。此外,还应将一些编码算法用于业务控制的可持续传输速率的streaming.
  • Quality。(如果您想进行会议视频聊天,还需要协调多个流)

因此,通过简单地描述这三个期望,我已经看到了问题所在。WCF内置Net.Tcp binding does not allow duplex communication and streaming together。还要注意的是,在WCF上的Net.tcp通信的性能比普通的套接字通信差得多。这是因为WCF简化了很多事情,但这些简化和概括减慢了处理速度。

此外,根据选定的算法,this可能是一个问题。

你可以在Silverlight4中找到一些视频聊天的描述。Silverlight允许Here和net.tcp绑定,但通信仍然是在套接字上开发的。

Here您可以找到广泛使用的IP语音协议的描述-用于数据传输的RTP和用于协调和QoS的RTCP。这些协议也用于视频传输。通过谷歌搜索,我找到了适用于.NET的implementation (我不知道它的实现有多好,我只是使用了谷歌...)

票数 4
EN

Stack Overflow用户

发布于 2011-01-09 06:03:45

以下是我会考虑的一些事情:

如果您预期有几种不同类型的客户端连接到您的服务器,则WCF可能会很有用。也许将来你会想让其他人写客户端,或多或少独立于你。另一方面,如果它是一个封闭的系统,那么您可能更喜欢编写自己的套接字代码。

WCF为您提供了更高级别的抽象,因此您可以更快地编写系统。特别是,像XML编码和会话管理这样的东西并不是您的应用程序域的一部分,因此您不想在它们上面花费太多的时间。但更高的抽象通常涉及性能成本,因为抽象层比任何一个应用程序需要的更通用。使用普通套接字,您可以根据自己的需要定制您的系统,这可能允许更高的性能(代价是更繁琐的开发和错误修复)。

您可能希望在不同的流中发送数据/命令和视频。假设数据/命令必须通过可靠的传输来发送,但是视频可能会遭受一些损失。或者,视频应该以高QOS发送,而数据/命令可能遭受延迟。我实际上从来没有使用过QOS,所以我不知道这里有什么问题,但它可能会影响你关于WCF的决定(无论是积极的还是消极的)。

您可以在服务器自己的进程中或在IIS中承载服务器。如果你自己托管它,那么你可以用你自己的方式做事情。我相信WCF和IIS是好朋友,所以如果你在想IIS,那么WCF可能会让生活变得更容易。如果您选择IIS (或任何已建立的web服务器)而不是您自己的主机,则可以利用其基础架构-可伸缩性、可靠性、加密等。缺点是您可能会被锁定在该服务器中,但在实践中这可能不是问题。

根据您的环境,您可能能够混合和匹配各种技术和功能。例如,我们有一个听起来与您的系统有点相似的系统,我们选择了:客户端中的普通套接字;服务器中的普通套接字,但可以选择将服务器托管在Apache中;执行我们所需的自定义XML库;嵌入OpenSSL;COM在系统的核心,但依赖于.NET。特别是,我们在第一个原型中使用SOAP,因为它的消息传递和RPC与我们的设计完美匹配,但发现它增加了太多的复杂性,并用我们自己的协议替换。

如果您有时间,那么我建议您在WCF中构建一个快速原型,看看您的想法。最主要的原则是尽可能高效地为客户提供最大的业务价值,这通常意味着您应该将精力花在应用程序领域而不是基础设施上。但同时不要忽视诸如性能、可靠性、可伸缩性、可维护性、可扩展性等次要原则。

票数 3
EN

Stack Overflow用户

发布于 2011-01-09 04:33:53

WCF 套接字?这些都不是可选的: WCF包括用于TCP/IP通信的NetTcpBinding和NetPeerTcpBinding。

如果您的客户端都是Windows,则应使用WCF。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4635959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档