从服务器访问客户端上的数据

本文关键字:数据 客户端 服务器 访问 | 更新日期: 2023-09-27 18:36:49

请在搁置之前实际阅读我的帖子!!

首先,我要说的是,我整个下午都在寻找解决方案,到目前为止,我已经看到了很多WCF的示例,但没有一个可以满足我的需求。

我用 c# 开发了一个应用程序,该应用程序将安装在客户服务器上,并访问客户本地网络上的 sql 服务器。该应用程序还能够控制客户本地网络上的网络中继,并在sql中记录这些中继的状态。我正在尝试找出一种方法,让客户的服务器建立与我们的数据中心的连接,并能够向客户的服务器发出命令(从sql检索数据集,控制网络中继等)。我已经找到了很多方法可以让客户端在服务器上调用类,但到目前为止还没有找到相反的方法。一个考虑因素是在客户的服务器上编写 Web 服务作为应用程序的一部分,但需要一种方法来为具有动态 IP 地址的客户建立此连接,而不必通过防火墙等进行发布。

从服务器访问客户端上的数据

如果我理解正确,您希望从客户的数据库中获取信息,该数据库位于防火墙后面并且没有已知的静态IP,此外可能有数百名客户,因此客户的专用VPN是不可行的。

首先:您不应该直接联系客户数据库。数据库不是为这种情况而设计的,如果直接暴露在 Internet 上,可能会受到攻击。因此,您需要在数据库之上提供服务。此服务有两个主要选项:

轮询服务

该服务实际上是一个客户端调用网络上的某个 Web 服务并请求指令。
优点:易于实施和部署。
缺点:轮询总是有可扩展性/带宽使用与服务速度的成本效益。在选择轮询时间以防止所有客户端同时轮询时,还有一些注意事项。

该服务是 tcp 服务器

这可以是通常的Web服务(或RESTfull服务)或其他一些服务。唯一的区别是它需要为自己做广告。为此,您需要有一个已知的目录服务器。当服务启动时,它会连接到目录服务,并告诉它可以联系的端口(目录知道来自连接的 ip)。然后,它需要定期联系目录,让它知道它仍然处于活动状态,以便检测到 IP 中的任何更改。
网络上的客户端现在将查询目录以查找客户端的地址并直接连接到该目录以发出命令。

优点:可扩展且带宽高效。
缺点:更难实现。需要防火墙穿越解决方案(UPNP 或防火墙例外)。

您是否考虑过使用

  • VPN - 虚拟专用网络

  • 在 ADSL 调制解调器上配置端口转发重定向,并使用类似 www.noip.com ?