|
|
1
2
使用Josh提到的pull模型是最简单的方法。首先,您将克服许多安全问题。无需担心客户端防火墙。另外,您不必担心必须在每个客户端上打开相同的端口,或者打开动态端口并通知服务器正在使用哪个客户端上的哪个端口。 此外,您不必在服务器上维护订户列表。此外,如果客户机以不太干净的方式断开连接(应用程序崩溃、电源故障等),则无需担心清理订户列表。 基本上,从客户端到服务器上的服务的简单轮询是最简单、最干净的方法,IMHO。我已经用过好几次了。如果您选择,您甚至可以让用户配置轮询间隔。 编辑:
基本上,我有一个web服务,当被查询时,它将返回系统的状态。这个web服务显然是在服务器上运行的。启动时,客户机将启动一个单独的线程,该线程将每30秒查询一次web服务,以获取服务器系统的状态。然后,UI将被更新以指示该状态。一旦任务完成,线程将返回睡眠状态30秒。更新时间可通过配置文件进行配置。只要确保捕获错误,这样,如果对服务的请求由于服务器停机以外的原因而失败,整个应用程序就不会崩溃。 |
|
|
2
2
这几乎肯定是矫枉过正,但有一个完整的(而且非常活跃的)学科在研究故障检测器的类别,它们可以提供什么样的保证,以及它们如何实际实现。对于那些想比这个提问者暗示的更进一步的人,请看:
Book Series - Book Title - Distributed Computing Chapter Title - On the Impact of Fast Failure Detectors on Real-Time Fault-Tolerant Systems First Page - 354 Last Page - 369 Copyright - 2002 Author - Marcos K. Aguilera Author - Gérard Le Lann Author - Sam Toueg DOI - 10.1007/3-540-36108-1_24 Link - http://www.springerlink.com/content/e03yf4etbnle9728 Book Title - Distributed Algorithms Chapter Title - Heartbeat: A timeout-free failure detector for quiescent reliable communication First Page - 126 Last Page - 140 Copyright - 1997 Author - Marcos Kawazoe Aguilera Author - Wei Chen Author - Sam Toueg DOI - 10.1007/BFb0030680 Link - http://www.springerlink.com/content/dj5n71hl17841416 Introduction to Reliable Distributed Programming ,具有大量优秀的示例代码。 |
|
|
3
1
我们在谈论什么样的客户?Windows客户端还是asp.net?这有两种非常普遍的模式。您可以推送或拉取数据。如果你在互联网上遇到防火墙和NAT,推送就不起作用。最后是第三种变体,客户机初始化连接,服务器打开连接,来回发送信息。
最简单的解决方案是从客户端进行轮询,除非您希望服务器与客户端进行即时通信,否则这是一种方法。心跳并不是即时的交流。
我没有任何可以分享的例子,但应该有很多。 |