2011-03-06 37 views
6

我想知道哪些WCF或.NET套接字在游戏开发场景中效率更高,更推荐。WCF VS.套接字

下面是游戏的不同部分:

-a客户端/服务器通信到互联网上播放

-peer同行本地网络上。

我想知道你会在这些部位使用的技术(WCF两个,插座两个,WCF在一个插座上的其他...),为什么,如果可能的话。

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

+0

你打算怎么做的客户端/客户端本地网络上?这没有意义。 – Chev 2011-03-06 07:59:29

+2

他意味着同侪2同侪;它是有道理的 – madd0 2011-03-06 08:03:55

+0

不,对等是有道理的。不是客户端到客户端。 – Chev 2011-03-06 08:05:02

回答

6

WCF的目的是为了节省开发人员为不同的传输协议编写代码,并且它具有大量的功能,所以这就是为什么它比Sockets慢。 Plus WCF适用于面向服务的应用程序。我不认为游戏属于这个类别。

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

几点:

的绑定与净*启动是指.NET应用程序之间使用。 (客户端和服务器WCF)
如果其中任何一个不是WCF:您只能使用不以网络前缀开头的绑定。 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

10

如果你想最大限度地提高性能的插座是要走的路,WCF既有数据和处理开销。但是......如果性能对你至关重要,你还应该考虑用汇编代替c#。

WCF将每秒处理3-4次请求,而不会眨眼。

我将开始与WCF,它会为你节省大量的开发时间,没有必要推出自己的解析器等,您可以专注于其他地区的游戏来代替。如果它真的让我们的WCF对于你的游戏来说太慢了,那么你可以将WCF扔出去,然后转向套接字。

1

如果您不需要实时性能(您正在使用C#,所以我想是这样的话),那么我会建议WCF。

WCF会给你一个更容易OOP风格的工具来编写你的服务器 - 客户端协议。
WCF的优势在于,从长远来看,最终编写的协议和代码更易于维护和遵循。

如果您想添加任何东西,添加和更改协议的功能将会更容易。

WCF是高度可定制的,所以你更好地了解不同的发送数据的方法提供,并重载它们的方式。

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

WCF Binding In Depth

+0

C#可以用来编写实时应用程序(我想它也取决于你实时的意思)。 – 2012-06-12 01:16:45

2

两种技术可以管理每秒您mentionning请求的数量,但是编程模型是完全不同的。套接字的级别非常低,需要在其上构建自己的通信协议。但是,开销可能很小。 WCF建模在RPC(远程过程调用)之后,并在传输上提供抽象。它允许您使用具有不同技术(如Web服务或消息传递)的相同API。然而,提供的抽象有其自身的问题,如一定的复杂性或陡峭的学习曲线...

在你的情况,你也可以看看短信技术,提供了一个很好的抽象,如MSMQZeroMQActiveMQ并且简化了开发过程。