WCF VS. 套接字

我想知道哪个WCF或.NET套接字效率更高,而且在游戏开发方案中推荐的更多。

以下是游戏的不同部分:

– 在互联网上播放的客户端/服务器通信

– 在本地网络上同行。

我想知道你将在这些部件上使用哪种技术(两者都是wcf,两者都是套接字,另一端是wcf,另一端是套接字……)以及为什么,如果可能的话。

涉及的游戏不需要高通信频率(每秒3-4个就足够了)。

WCF的目的是保存开发人员为不同的传输协议编写代码,并且它具有大量的function,因此它比Sockets慢。 加上WCF用于面向服务的应用程序。 我不认为游戏属于这一类。

但是你提到每秒只有3-4个请求,WCF可能是一个更好的选择,因为它非常灵活,可以节省大量的开发时间。

一些要点:

以net *开头的绑定意味着在.NET应用程序之间使用。 (客户端和服务器WCF)
如果任何一个不是WCF:您只能使用不以网络前缀开头的绑定。 BasicHttpBinding,WSHttpBinding等。 这些比net *绑定慢得多,因为有大量的开销。

您可以继续使用NetPeerTcpBinding并使用它一段时间。 它还支持双工通信。

以下是P2P的一些有用链接:

使用WCF和.NET Framework 3.5进行点对点编程
http://blogs.interknowlogy.com/2009/08/05/building-a-really-simple-wcf-p2p-application

如果您希望最大化性能套接字是可行的方法,WCF既有数据又有处理开销。 但是……如果性能对您至关重要,您还应该考虑汇编而不是c#。

WCF将在没有闪烁的情况下每秒处理3-4个请求。

我将从WCF开始,它将为您节省大量的开发时间,无需自己解析器等。您可以专注于游戏中的其他部分。 如果它真的变成我们的WCF对你的游戏来说太慢了你就可以把WCF扔出去而去换套接字。

这两种技术都可以管理您提到的每秒请求数,但编程模型却截然不同。 套接字是非常低级的,需要您在其上构建自己的通信协议。 但是,开销可能很小。 WCF以RPC(远程过程调用)为模型,并提供传输的抽象。 它允许您使用与Web服务或消息传递等不同技术相同的API。 然而,所提供的抽象有其自身的一系列问题,例如某种复杂性或陡峭的学习曲线……

在您的情况下,您还可以查看消息传递技术,如MSMQ , ZeroMQ或ActiveMQ ,它们提供了对套接字的良好抽象,并简化了很多开发。

如果你不需要实时性能(你正在使用C#所以我猜就是这种情况)那么我建议使用WCF。

WCF将为您提供更简单的OOP样式工具来编写Server-Client协议。
WCF的优势在于,从长远来看,您最终在其中编写的协议和代码更易于维护和遵循。

如果您想要添加任何内容,则可以更轻松地向协议添加和更改function。

WCF是高度可定制的,因此您可以更好地了解它提供的不同数据发送方法以及重载它们的方法。

您可以使用不同的绑定类型来优化数据传输:

WCF绑定深度