【问题标题】:Best way to set up a server to act as a WCF Proxy设置服务器以充当 WCF 代理的最佳方式
【发布时间】:2011-07-08 01:10:56
【问题描述】:

我有一个运行一些 WCF 服务的服务器。它位于我公司的内部网络中。我想将它的服务公开给互联网,但我不想直接公开服务器。

有没有办法在我们的 DMZ 中设置一个服务器来充当内部服务器的代理?理想情况下,解决方案需要在代理服务器上使用最少的代码,并且不需要对服务进行两次更改。

【问题讨论】:

    标签: wcf iis


    【解决方案1】:

    做你想做的最好的方法是使用内置的 WCF 4 Routing Service. 你可以做更多的事情,而不仅仅是将来自另一台服务器的调用重定向到你的内部服务。这都是配置驱动的,因此您无需更改服务合同或重新编译任何代码。您甚至可以使用一种绑定公开服务并使用不同的绑定调用目标服务。

    编辑:

    RoutingService 的MSDN provided samples 是查看 RoutingService 配置工作示例的良好起点。像 WCF 的其他东西一样,翻阅文档是一项乏味但几乎总是必要的成本来学习如何使用该死的东西 :)

    【讨论】:

    • 好的,这给了我一些有用的信息,但你能指出任何用于我目的的例子吗?需要消耗大量的文档。
    • MSDN 示例中的 Hello World 解决方案(请参阅我编辑的答案)应该符合将 RoutingService 配置为简单路由器的要求。
    • 我已经使用这种方法编写了一个路由服务,但是我遇到了错误。请参阅此处的问题 - stackoverflow.com/questions/6831111/…
    【解决方案2】:

    这取决于您所谈论的更改类型。如果它只是重​​定向到真实服务器的同一服务合同的替代实现,那么您需要进行更改的唯一时间是合同本身发生变化,而不是它的实际实现(这些程序集甚至不应该安装在代理服务器)。 WCF 的某些方面允许您使用一个操作来编写服务,该操作处理通用消息并返回通用消息 (OperationContract(Action="*")] public void Message Execute(Message incoming),但随后您需要检查收到的消息以确定如何转发它。

    【讨论】:

    • 如果我只需要发布两次合同变更,那是可以接受的。设置 WCF 服务以转发到另一个位置和从另一个位置转发是否有捷径?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2023-03-23
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    相关资源
    最近更新 更多