【问题标题】:C# Calling WCF behind DMZC# 在 DMZ 后面调用 WCF
【发布时间】:2013-05-16 14:53:21
【问题描述】:

我需要调用 DMZ 后面的 WCF 服务:

WEBDMZ           ..    LANDMZ
-------------          ------------
ClientServer     =>    WCF service

由于两者之间有防火墙,客户端无法连接到 WCF 服务。所以我需要 WCF 服务连接到客户端并“监听”连接或以某种方式创建隧道。

我觉得这一定是一个非常普遍的问题,但我还没有找到合适的解决方案。不,不可能打开一个端口。连接必须由 WCF 发起。

客户端是一个服务器,可以轻松托管任何 MSMQ 或其他服务。

似乎这个问题也可以称为“反向代理”或“反向隧道”。

解决方案:

  • 由客户端托管的 MSMQ(但恐怕它只是一直在轮询并产生网络开销)。

  • 反向隧道/代理?

  • WCF 双工?

我正在寻找最简单的解决方案,最好是使用 C# 并且没有第三方软件。也许有允许反向调用的 WCF 配置?

【问题讨论】:

  • 我已经使用 Azure 服务总线解决了这个问题,但那是第 3 方工具。无需打开任何端口,服务有保障,有协议升级(又名直连)的可能性。

标签: c# wcf web-services msmq tunnel


【解决方案1】:

使用 .Net 版本 4,您可以在 here 查看 WCF 路由服务。或者您可以按照 Michele Leroux 的示例自行构建路由服务。这是link

编辑:

你可以建立一个路由服务,把它放在WEBDMZ服务器上,它会包含放在DMZ服务器上的端点wcf服务列表。在这里,它将充当服务服务器以及客户端连接到 DMZ 服务器上的服务。您还可以构建发现服务来自动配置这些端点。

【讨论】:

  • 您可以在 WEBDMZ 服务器上构建一个路由服务,其中将包含 LANDMZ 服务器上的端点 wcf 服务列表。您还可以在启动新的 wcf 服务时应用发现服务来自动配置这些端点。路由服务也可以应用轮询或双工服务。
猜你喜欢
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
相关资源
最近更新 更多