C# 多人纸牌游戏的设计考虑
我在C#NET上开发一个纸牌游戏引擎已经有一段时间了。此时,该界面已接近完成,但到目前为止,它只是一个简单的控制台界面,具有C# 多人纸牌游戏的设计考虑,c#,multithreading,wcf,callback,C#,Multithreading,Wcf,Callback,我在C#NET上开发一个纸牌游戏引擎已经有一段时间了。此时,该界面已接近完成,但到目前为止,它只是一个简单的控制台界面,具有ReadLine和WriteLine 对于数据,我有一个GameState对象,它在给定的时间点存储了几乎所有与游戏相关的信息。游戏的其余部分主要由事件驱动 我希望将其扩展到一个全面的在线应用程序中。我已经读了很多关于WCF及其在web服务中的回调支持的书,这对我来说似乎是一个不错的选择。然而,如果其中一个适合我,我愿意接受其他想法 我预期的唯一问题是,当我尝试这样做时,会
ReadLine
和WriteLine
对于数据,我有一个GameState
对象,它在给定的时间点存储了几乎所有与游戏相关的信息。游戏的其余部分主要由事件驱动
我希望将其扩展到一个全面的在线应用程序中。我已经读了很多关于WCF及其在web服务中的回调支持的书,这对我来说似乎是一个不错的选择。然而,如果其中一个适合我,我愿意接受其他想法
我预期的唯一问题是,当我尝试这样做时,会出现线程噩梦。我想到了一种方法,可以尽可能减少线程问题:
1) 让WCF服务仅通过回调接口从用户请求数据(例如提示某些操作),并提供几个单向回调,以通知客户端游戏状态的更新。强调:客户端不能“查询”游戏状态。他们向服务器发送数据的唯一方法是服务器通过回调请求数据
我唯一担心的是,客户机可能需要以某种我没有预料到的方式从服务器请求一些数据。如果出现这种情况,我可以为客户端提供一些读取游戏状态的方法,但是现在我必须开始考虑GameState
对象上的读卡器锁
我想如果必须的话,我会深入研究并尝试使这个东西线程安全,但我想让你们运行这个,看看你们是否有任何建议。如果你们想让它成为一个web应用程序(html),那么我会说你们最好使用web套接字(chrome本机支持,其他浏览器的flash插件)并将类似websocket的服务器集成到代码中。这样就可以实现从服务器到客户端的真正推送通信 如果您正在创建silverlight前端,您有很多选择,但从我收集的信息来看,如果您想同时扩展超过500个在线客户端,唯一的实际选择是使用自定义服务器,因为IIS无法同时处理很多客户端。我和一个制作silverlight版本的家伙聊了聊,他使用了一个定制服务器,它与iis很好地集成在一起,这个服务器对业余爱好者来说非常昂贵,但看起来很棒
如果您正在创建一个富客户端,您可以随意向它抛出任何东西,甚至可以使用二进制套接字与WCF进行本机通信。很好的建议。我应该花些时间考虑一些可能更低层次的方法来实现这一点。我猜想,没有太多的游戏使用web服务作为联网的手段,而是有一个更专有的设置。