用于在服务器和客户端之间实现心跳的模式

6 .net c# design-patterns

我想在服务器中实现一个心跳功能,该功能会定期向窗口客户端提醒 其活跃度.我正在考虑的想法很少,但会很感激建议和例子/参考

  • 有一个单独的线程,可以发送心跳到连接的客户端

  • 有不同类型的心跳来指示服务器的不同状态(缓慢,快速,不堪重负的客户端,up和ready)

  • 也许让客户订阅不同级别,默认发送心跳

我真的很想看看它在实践中是如何完成的,例子是最好的.

编辑1客户端和服务器不是基于Web的!(服务器可能会迁移到Web,但我认为它不应该更改协议)

Jos*_*rke 1

我们在谈论什么样的客户?Windows 客户端还是 asp.net?有两种非常通用的模式。您可以推送或拉取数据。如果你在互联网上,你会遇到防火墙和网络攻击,那么推送就不起作用。因此,您最终会得到第三种变体,其中客户端启动连接,服务器使连接保持打开状态以来回发送信息。

您需要提供更多信息,我们是在谈论互联网还是内联网?您的目标是哪个 .net 框架?您在谈论多少客户?可以处理十几个客户端(特别是在推送模型或第三种模型中)的解决方案可能与可以扩展到数千个客户端的解决方案看起来非常不同。

最简单的解决方案是从客户端进行轮询,除非您希望服务器与客户端进行即时通信,否则这是可行的方法。而且心跳并不是即时通讯。

编辑

好吧,您指定了套接字,您真的确定要进行较低级别的网络类型编程吗?为什么不建立在现有的网络策略(例如 HTTP)之上。您可以通过 HTTP 执行简单的远程服务,这将让您绕过防火墙。或者如果您的服务器是 Web 服务器,那么只需设置一个普通的旧 xml 服务就更好了。

我没有任何可以分享的例子,但应该有很多。