C# 保持用户连接的最佳设计/方式是什么?

C# 保持用户连接的最佳设计/方式是什么?,c#,silverlight,wcf,design-patterns,polling,C#,Silverlight,Wcf,Design Patterns,Polling,我正在开发一个用于自学的POC,我想让我的用户以实时模式保持连接。例如,一个4个用户一次可以玩的游戏,这里我需要让这个用户与我的游戏保持连接 我不擅长Socket类型的编程,喜欢用服务的方式来做。我想知道的是“做这件事的最佳方式是什么”。根据我最初的头脑风暴,我决定使用SilverLight(浏览器内或浏览器外)作为前端[我在这方面没有问题] 我更关心后端。 我要么创建一个处理程序,要么创建一个WCF服务,要么使用全双工服务,并为此使用池机制。作为一个随机的想法,我想出了一个定时器类型的逻辑,它

我正在开发一个用于自学的POC,我想让我的用户以实时模式保持连接。例如,一个4个用户一次可以玩的游戏,这里我需要让这个用户与我的游戏保持连接

我不擅长Socket类型的编程,喜欢用服务的方式来做。我想知道的是“做这件事的最佳方式是什么”。根据我最初的头脑风暴,我决定使用SilverLight(浏览器内或浏览器外)作为前端[我在这方面没有问题]

我更关心后端。 我要么创建一个处理程序,要么创建一个WCF服务,要么使用全双工服务,并为此使用池机制。作为一个随机的想法,我想出了一个定时器类型的逻辑,它将在客户端每隔10秒触发一次,并获得类似

  • 现在轮到掷骰子了吗

  • 家中有许多用户离开(如果 有些人离开了)

  • 中的已连接用户状态是什么 像这样的游戏有分数/分数等 更新
    根据他的观点来看

请把你最好的答案放在这里,这将有助于我了解这一点

提前致以问候和感谢

编辑:

开始赏金,因为我需要更多反馈。

FH

Fasih

由于HTTP是无状态的,所以不能从代码进行双向通信。但是如果您使用的是AJAX,则有一个变通方法。正如你所说,定时器是单向的。另一种称为反向AJAX

这模拟了双向通信,而不依赖于计时器。要实现这一点,您必须对服务器进行长时间运行的AJAX调用,并且只有在需要更新时才会返回调用。假设一个简单的网络聊天场景。2个用户对服务器进行长时间的AJAX调用,两个用户都在轮询公共媒体(比如DB),如果用户1发送一些文本,它将得到更新,用户2等待的AJAX调用将获取文本并返回。同样,两个用户都会打一个长时间的电话来监听对方

由于您已经决定继续使用silverlight,您可以使用WCF双工通道来模拟双向通信。正如我前面解释的,不要使用计时器逻辑。如果你在10秒内轮询服务器(游戏中任何事情都可能在10秒内发生),它不是即时的,如果你每秒钟轮询一次,它会增加服务器负载

因此,避免使用计时器逻辑,并使用长时间运行的AJAX调用

如果您正在寻找WCF双工通道以外的其他选项,那么COMETs是另一种选择


请查看支持web socokets的浏览器。基本上,这是一个能够将数据从服务器推送到客户端的问题。 所以我认为是订阅者-发布者体系结构,您可以在服务器上为每个连接的用户创建一个队列(在db table for ex中),并使用ajax调用web服务,从表中提取数据

每个消息都应该封装为客户端的命令。因此,您可以为客户端能够执行的每个操作使用不同的消息。{command:display,text:“用户blah blah已登录”}另一个命令可能类似于{command:rolldice,text:“roll the dice”}


让我知道你的想法…

如果你决定使用WCF,那么我建议你使用回调

更多信息请点击此处:


--帕维尔回答得很好。我喜欢这样。由此,我可以创建自己的Ajax调用机制。让我看看。will Update现在就看你的答案比我的好对,如果使用定时器,服务器负载会更大伙计,我说我现在就看你的答案如果我读了,我就不会费心评论我做了什么,说你的答案比我的好只是出于礼貌没问题。。这种情况一直伴随着我:DDo你知道ajax调用在服务器上运行多长时间,或者有关于这方面的好文章吗?