.net 回合制多人游戏:WCF还是Socket?
我想就我的问题提出建议 我们正在创建一款多人网络象棋游戏,具有以下功能:.net 回合制多人游戏:WCF还是Socket?,.net,wcf,sockets,architecture,.net,Wcf,Sockets,Architecture,我想就我的问题提出建议 我们正在创建一款多人网络象棋游戏,具有以下功能: 游戏将支持大量并发用户 我们将在磁盘上物理保存每个游戏移动(例如,使用SQL Server数据库) 我们也将在会话中使用相同的SQL Server 多个游戏服务器将用于负载平衡/可扩展性 所有游戏服务器将相互连接 所有游戏服务器也将连接到该SQL服务器 因为这是一个国际象棋游戏,所以只有2个用户可以玩这个游戏,但是 无限数量的用户可以作为观众实时观看此游戏(广播) 观众/游戏用户可以选择私下或公开发送和接收聊天信息 我们将
- (+++)比WCF快(特别是在使用UDP时)
- (+)由于带有套接字的应用程序将具有更好的可扩展性,因此未来您将在硬件上花费更少
- (-)您将在开发上花费更多时间
- (-)你将在发展上花更多的钱
- (-)您需要设计自己的协议或使用足够接近的合适协议
- (-)难以扩展API
- (-)这对第三方开发者来说是困难的
- (+)避免与传输级别有关的任何问题
- (+)易于扩展的API
- (+)它将为您节省开发时间
- (+)易于提供第三方API
- (+)你将在发展上花更少的钱
- (-)它比插座慢
- (-)您将在硬件上花费更多的钱,因为带有WCF的应用程序的可扩展性会更差
我相信这两种技术还有很多其他的理由。但我认为问题是:你想让它更快还是更容易维护。它是一个经常添加功能的应用程序,还是一个负载将以几何级数增长的应用程序。等等等等除了丹尼尔的回答之外:
抽象您的通信代码并从WCF开始。如果它最终会变慢(我认为不会),您仍然可以相对轻松地切换到套接字。如果它有很好的文档和示例代码,没有什么是困难的。是的,当然。但是,如果我可以让开发人员添加一个服务引用,为什么我必须让开发人员使用自定义套接字协议呢?谢谢Danil,谢谢你抽出时间。实际上,我们对WCF唯一感到困惑的是可伸缩性。WCF能否在多个连接的服务器上工作?这是主要问题。至少我们将有4到5台物理机器用于游戏服务器。我们希望系统足够灵活,以便随着负载的增加,我们可以轻松地添加更多的节点。和您的问题相关的套接字并没有区别。“WCF能在多个连接的服务器上工作吗?”这个问题没有意义,但答案是肯定的。无论如何,在这两种情况下,可伸缩性和所有其他应用程序属性不仅取决于技术,还取决于它的设计方式。因此,我相信,最好的方法是在正确的地方使用正确的技术。设计你的项目。决定应该在哪里使用套接字,以及可以在哪里使用WCF。通过一些测试和检查来证明您的概念。好吧,WCF是一个基于http的协议,因此它比通过原始套接字发送的二进制有效负载要慢一些(例如,有一些替代方案增加的开销更少,使用起来也很方便),如果您希望web服务连接到多个服务器,那么您必须引入负载平衡器。您还(我发现)希望在通信通道的两端使用WCF,因为WCF web套接字与Java和PHP web服务有点不兼容!重要的是,如果您使用WCF,您可以使用套接字连接,只需更改绑定即可。