[英]How to establish 2-way communication between a web server and a site server?
我正在计划使用WCF用C#,ASP.NET编写的SaaS系统,该系统具有两个独立的组件:
该网站应用显然可以连接到该网站上发布的Web服务。 但这很麻烦-我也希望Web应用程序能够启动与站点应用程序的连接...并且站点服务器不一定必须具有静态IP。 我无法控制这一点,因为将来某个时候我们可能会有数百个客户,并且我们不能通过坚持要求客户拥有具有固定IP的服务器来限制可销售性。
那么,该怎么做呢?
我可以让站点应用程序每分钟左右“登录”网络,以使网络应用程序可以通过“当您在这里时,请执行x,y,z ... ”进行响应,但这似乎非常优雅。 另外,如果我们正在谈论数百个客户,那么我不想被所有这些“嗨!”轰炸我的Web服务器。 消息(如果不是必需的话)。
有没有更好的办法?
WCF? 开始了:
瞧 在断开连接的情况下,客户端可以重新连接,重新标识自己并获取待处理的消息。
编辑:我认为SNMP服务可能会提供答案,但我不是网络专家。 您必须进行一些挖掘或对stackoverflow提出一个单独的问题。
IIRC“推送通信”是通过让客户端执行具有不确定超时的HTTP请求来完成的。 然后服务器在有话要说时做出响应。 响应后,客户端立即发出新请求。
它的工作方式与服务器建立连接的方式相同,并且占用的资源比轮询少得多。
您对彗星技术有何看法?
听起来您肯定在服务器上需要某种注册表,然后如果需要工作,它可能会尝试调出客户端应用程序。
通常,客户端应用程序每隔X秒钟向服务器检入一次-这就是Selenium网格的工作方式。 具有客户注册的中央集线器。 集线器收到运行某些测试的请求时,会将作业传递给客户端以执行。
您可能不需要“签到”。 服务器可以尝试调出已注册的客户端应用程序,直到找到可用的客户端应用程序为止,这样只有服务器需要一个静态地址(可以使用DNS名称而不是IP使其更强大)。
还可以看看XMPP PubSub 。 这可能是更健壮和标准化的方式来处理此问题。
最后,我决定使用NetTcpBinding,这是@Allon Guralnek 在此处给出的最佳理由。 值得点击阅读他的话...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.