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

时间:2013-10-24 00:31:37

标签: c# asp.net wcf

请在暂停之前阅读我的帖子!!

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

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

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用

  • VPN - 虚拟专用网

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

答案 1 :(得分:0)

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

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

投票服务

该服务实际上是一个客户端,在您的网络上调用某些Web服务并询问说明 好处:易于实施和部署 下行:通过轮询,可扩展性/带宽使用与服务速度之间始终存在成本效益。在选择轮询时间以防止同时进行所有客户端轮询时,还需要考虑一些因素。

该服务是tcp-server

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

效益:可扩展且带宽效率高 下行:更难实施。需要防火墙遍历解决方案(UPNP或防火墙例外)。