我想就我的问题提出建议.
我们正在创建一个具有以下功能的多人互联网国际象棋游戏:
游戏将支持非常大量的并发用户
我们将保存每个游戏在磁盘上的物理移动(例如使用SQL Server数据库)
我们也将使用相同的SQL Server for Sessions
多个游戏服务器将用于负载平衡/可扩展性
所有游戏服务器都将相互连接
所有游戏服务器也将连接到该SQL Server
由于这是国际象棋游戏,因此只有2个用户可以玩游戏
无限数量的用户可以作为受众(广播)实时查看此游戏
观众/游戏用户可以选择私下或公开发送和接收聊天消息.
我们将在数据库中维护自己的用户列表.因此,我们需要一个自定义身份验证系统.
客户端将是桌面Windows窗体/ wpf应用程序.我们也在考虑基于在线浏览器的版本,但我们已将其用于未来,目前我们专注于桌面版.
现在我的问题是?
我们应该使用哪种技术,套接字或WCF?
序列化,XML或二进制或自定义二进制文件的首选方法是什么?
任何其他建议/建议/方向也欢迎.
谢谢
在这里我的意见.
套接字
(+++)比WCF更快(特别是如果你使用UDP)
(+)将来你会在硬件上花费更少,因为带套接字的app会有更好的可扩展性
( - )你将花更多的时间在开发上
( - )你将在开发上花更多的钱
( - )您需要设计自己的协议或使用足够合适的协议
( - )很难退出API
( - )对第三方开发者来说很难
WCF
(+)避免运输级别的任何问题
(+)易于扩展API
(+)它将节省您的开发时间
(+)易于提供第三方API
(+)你将花更少的钱用于开发
( - )它比套接字慢
( - )你将在硬件上花更多的钱,因为使用WCF的应用程序将具有更差的可扩展性
无论你要使用什么类型的序列化,WCF都会比套接字慢.
无论如何你不会使用"HipHop for PHP".我认为,答案是,使用WCF创建简化的客户端和服务器应用程序.使用不同的绑定,序列化等将其加载到最大值(如您所愿).如果WCF可以处理负载并具有良好的保留,那么我假设您可以使用它.如果不是 - 使用套接字.
也许是使用这两种技术的最佳方式.性能至关重要的套接字(例如,将游戏服务器彼此连接),其他部分的WCF(例如发送和接收聊天消息).
我相信这两种技术还有很多其他论点.但我认为问题是:你想让它更快或更容易维护.它是一个经常添加功能的应用程序,还是一个负载将以几何级数增长的应用程序.等等