我正在计划一个 SaaS 系统,用 C# 编写,ASP.NET 使用 WCF,它有两个独立的组件:
- 在云中的静态 IP 网络服务器上将是一个网络应用程序,对所有客户端都是通用的。
- 每个客户的办公室内都会有另一个应用程序,安装在带有 IIS 的服务器上。
站点应用程序显然能够连接到网站上发布的网络服务。但这就是问题所在——我还希望 Web 应用程序能够启动与站点应用程序的连接……并且现场服务器可能不一定具有静态 IP。我无法控制这一点,因为将来某个时候我们可能有数百个客户,我们不能通过坚持要求客户拥有固定 IP 的服务器来限制我们的可销售性。
那么,如何做到这一点?
我可以让网站应用程序每分钟左右“登录”一次网络,让网络应用程序有可能响应“当你在这里时,请做x,y,z。 ..”但这似乎很不雅。此外,如果我们谈论的是数百个客户端,我不想用所有这些“你好!”来轰炸我的网络服务器。消息(如果实际上不需要)。
有没有更好的办法?
最佳答案
WCF?我们开始吧:
- 使用基于消息的方法(交换消息,无状态方法调用)。
- 客户端连接到服务器。建立基于 HTTP 的双向连接。这样服务器就可以回调连接的客户端。这是标准的 WCF 内容,通过 NAT 与 .NET 框架版本 4 配合使用效果很好。
瞧。在断开连接的情况下,客户端可以重新连接、重新识别自己并获取待处理的消息。
关于c# - 如何在 Web 服务器和站点服务器之间建立双向通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4461591/