如何在C#中通过网络提供单例对象?

kth*_*ore 0 c# singleton

我正在用C#为学校项目创建一个纸牌游戏.这个纸牌游戏是联网的.纸牌游戏的游戏数据作为gameData存储在单个对象中.gameData保持,玩家姓名,游戏等待的玩家,玩家对象.每个玩家有3个List对象.卡片再次是自定义对象.最初我打算为每个card,player和gameData对象创建一个ToByte()方法,并将它们序列化以使用TCPlistener通过网络发送.然而,我正在寻找其他方式.

这些是我听说过的解决方案:

-SOAP(不知道如何实现这个)

-Database(对于LAN来说似乎有点过分,除非可以使小型数据库服务器在运行中运行)

-Client Activated Object(但这会为每个客户端创建不同的单例)

我想做的是让每个客户端使用他们自己的gameData但使用get,设置它将与托管这个singleton对象数据的服务器通信.您有什么推荐的吗?

TJB*_*TJB 5

WCF支持单例服务

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
class MySingleton : ...
{...}
Run Code Online (Sandbox Code Playgroud)

这样,您就拥有一个服务于所有客户端的服务实例.

WCF使用很少的网络代码轻松进行网络通信.

有关更多详细信息,请查看此文章.

将单例实例与您找到的任何WCF教程相结合,您应该有一个很好的起点.

祝好运.