我想知道哪一个WCF或.NET套接字是更有效和更推荐在游戏开发场景中。
以下是游戏的不同部分:
在internet上播放的-a客户端/服务器通信
本地网络上对等的-peer。
我想知道你会在这些部件上使用哪种技术(两个都使用wcf,两个都使用socket,一个使用wcf,另一个使用socket…)如果可能的话,还有为什么。
所涉及的游戏不需要很高的通信频率(每秒3-4次就足够了)。
发布于 2011-03-06 17:10:37
WCF的目的是为了节省开发人员为不同的传输协议编写代码,它具有大量的功能,这就是为什么它比Sockets慢的原因。另外,WCF适用于面向服务的应用程序。我不认为游戏属于这一类。
但正如你提到的每秒只有3-4个请求,WCF可能是一个更好的选择,因为它非常灵活,将节省大量的开发时间。
以下是一些要点:
以net*开头的绑定用于.NET应用程序之间。(客户端和服务器WCF)
如果其中任何一个不是WCF:您只能使用不是以net前缀开头的绑定。BasicHttpBinding、WSHttpBinding等。这些比net*绑定慢得多,因为有很多开销。
您可以继续使用NetPeerTcpBinding并使用它一段时间。它还支持双工通信。
以下是P2P的一些有用链接:
Peer-to-Peer Programming with WCF and .NET Framework 3.5
http://blogs.interknowlogy.com/2009/08/05/building-a-really-simple-wcf-p2p-application
发布于 2011-03-06 16:27:12
如果您想最大限度地提高性能,套接字是可行的方法,WCF同时具有数据和处理开销。但是..。如果性能对你来说那么重要,你也应该考虑汇编器而不是c#。
WCF将处理每秒3-4个请求,而不会眨眼。
我会从WCF开始,它会节省你很多的开发时间,不需要滚动你自己的解析器等等。你可以专注于游戏的其他部分。如果WCF对你的游戏来说太慢了,你可以抛出WCF,转而使用套接字。
发布于 2011-03-06 16:58:23
这两种技术都可以管理您提到的每秒请求的数量,但是编程模型却截然不同。套接字的级别非常低,需要您在其上构建自己的通信协议。但是,开销可以是最小的。WCF是在RPC (远程过程调用)之后建模的,并在传输上提供了抽象。它允许您通过非常不同的技术使用相同的API,例如web服务或消息传递。然而,提供的抽象有它自己的一组问题,比如一定的复杂性或陡峭的学习曲线……
在您的示例中,您还可以考虑MSMQ、ZeroMQ或ActiveMQ等消息传递技术,这些技术提供了套接字的良好抽象,并大大简化了开发。
https://stackoverflow.com/questions/5209372
复制相似问题