c# - 如何在 Web 服务器和站点服务器之间建立双向通信?

标签 c# asp.net wcf web-services architecture

我正在计划一个 SaaS 系统,用 C# 编写,ASP.NET 使用 WCF,它有两个独立的组件:

  1. 在云中的静态 IP 网络服务器上将是一个网络应用程序,对所有客户端都是通用的。
  2. 每个客户的办公室内都会有另一个应用程序,安装在带有 IIS 的服务器上。

站点应用程序显然能够连接到网站上发布的网络服务。但这就是问题所在——我还希望 Web 应用程序能够启动与站点应用程序的连接……并且现场服务器可能不一定具有静态 IP。我无法控制这一点,因为将来某个时候我们可能有数百个客户,我们不能通过坚持要求客户拥有固定 IP 的服务器来限制我们的可销售性。

那么,如何做到这一点?

我可以让网站应用程序每分钟左右“登录”一次网络,让网络应用程序有可能响应“当你在这里时,请做x,y,z。 ..”但这似乎很不雅。此外,如果我们谈论的是数百个客户端,我不想用所有这些“你好!”来轰炸我的网络服务器。消息(如果实际上不需要)。

有没有更好的办法?

最佳答案

WCF?我们开始吧:

  • 使用基于消息的方法(交换消息,无状态方法调用)。
  • 客户端连接到服务器。建立基于 HTTP 的双向连接。这样服务器就可以回调连接的客户端。这是标准的 WCF 内容,通过 NAT 与 .NET 框架版本 4 配合使用效果很好。

瞧。在断开连接的情况下,客户端可以重新连接、重新识别自己并获取待处理的消息。

关于c# - 如何在 Web 服务器和站点服务器之间建立双向通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4461591/

相关文章:

c# - 消息协定转换为 SOAP 消息

c# - WCF服务浏览器

c# - 尝试通过控制同时请求来解决可伸缩性问题

c# - 在编译时更改返回类型

c# - 向空的 ASP.NET SignalR 组广播会浪费资源吗?

c# - 在 LINQ 查询中使用 .Value 时出现问题

javascript - .NET 4 上的 ASP.NET 导致 IE11 抛出 _doPostBack 是未定义的 javascript 错误

asp.net - 如何在asp.net core中写入静态文件?

c# - 测量标签尺寸

C# 左移运算符