【问题标题】:Send commands to another network向另一个网络发送命令
【发布时间】:2012-06-29 08:47:19
【问题描述】:

我正在尝试写一个监控工具来监控一些信息 它会在天蓝色上正常工作。所以我将在 azure 上托管数据库,webservice 也将在 azure 上托管。

在客户端上,我从配置文件中读取了他需要多少次将信息更新到 azure 数据库(使用 azure 上的 web 服务)。

现在我还想向客户端本身发送一些命令。就像启动服务一样,....最好的方法是什么? 如何从托管在 azure 平台上的网站发送它?

【问题讨论】:

  • 你的 Azure 服务器有 VPN 吗?
  • 不,没有通往 Azure 服务器的 VPN

标签: c# web-services network-programming


【解决方案1】:

由于您没有 VPN,听起来您在客户端上托管 WCF 服务可能存在问题。如果客户端位于防火墙后面,您必须修改防火墙配置以允许您的服务器连接到此服务。

上次我不得不做这样的服务时,我使用了Comet。服务器维护要发送到客户端的消息队列。您的客户端连接到 Web 服务并请求任何可用的消息。如果消息可用,则服务器返回它们。如果没有,服务器将请求打开一段时间。一旦消息到达,服务器就会将它发送到已经打开的连接。客户端将定期超时/重新连接或发送保持活动消息(可能每分钟一次),以便在干预防火墙中保持连接活动。

【讨论】:

    【解决方案2】:

    我认为您也应该考虑在客户端实现 WCF 服务。当需要指示客户端执行某项操作时,软件的 Azure 端可以从该服务调用操作。

    客户端的 WCF 服务应该很简单,托管在 Windows 服务或您的实际客户端中(不管它是什么...win 表单、控制台等)。

    【讨论】:

    • 那么我需要为每个“客户”配置一个我可以调用的客户端上的 web 服务。并给他们一些参数。
    • @Svekke:当你说“配置”时,我想到的是 IIS。但这并没有那么复杂。最多您需要设置端点以绑定到正确的 IP。您甚至可以从 UI 中执行此操作,因此无需进行繁琐的配置工作。
    • 我的意思是我需要在我的天蓝色系统上存储来自我客户的每个 ip。防火墙呢?
    • @Svekke:你不需要这样做。客户端可以ping,例如在启动时,服务器让他们知道他们的IP/端口。然后,服务器可以在该地址上回叫他们。但是你必须确保防火墙是开放的,并且允许流量才能正常工作。比配置所有客户端更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2013-12-09
    • 2011-10-05
    • 1970-01-01
    • 2015-05-07
    • 2014-10-22
    相关资源
    最近更新 更多