我需要创建一个包含2个组件的系统:
处理和存储数据的单个服务器.它还定期向代理发送更新
安装在远程端点的多个代理程序.这些数据收集(通常但不总是)长时间运行的数据,这些数据需要到达服务器
我正在使用C#.NET,理想情况下我想使用符合标准的通信方法(即可以在理论上与Java一起使用的方法,因为我们将来也可能使用Java代理).有没有Web服务的替代品?我有什么选择?
我看到它的方式我有3个选项使用Web服务,并做了以下观察:
客户拉
代理不需要开放端口,因为它像客户端一样
需要轮询服务器以获取更新
服务器推送
在代理程序中打开端口,因为它充当服务器
服务器必须轮询代理以获取结果
混合动力
Open port at the agent, as it acts like both a client and a server
No polling; server pushes out updates when required, client sends results when they are available
The 'hybrid' (where agents are both client and server seems the obvious choice - but this application will typically be installed in enterprise and government environments, and I'm concerned they may have an issue with opening a port at the agent. Am I dwelling too much on this?
Are there any other pros and cons I've missed out?
我们的朋友在http://www.infrastructures.org发誓基于拉动机制:http://www.infrastructures.org/papers/bootstrap/bootstrap.html
他们更喜欢客户端拉过服务器推送的一个主要原因是客户端可能已关闭,客户端必须(通常)应用服务器推送的所有操作.如果这个标准在你的情况下并不重要,也许他们的结论不会是你的结论,但我认为值得阅读他们论文中的"Push vs Pull"部分来自己确定.