我有一台运行一些WCF服务的服务器。它位于我公司的内部网络中。我想将其服务公开给互联网,但我不想直接公开服务器。
有没有办法在我们的DMZ中设置服务器作为内部服务器的代理?理想情况下,解决方案需要代理服务器上的代码最少,并且不需要更改要发布的服务两次。
答案 0 :(得分:1)
执行所需操作的最佳方法是使用内置WCF 4 Routing Service.除了将来自其他服务器的调用重定向到内部服务之外,您还可以做很多事情。这是所有配置驱动的,因此您无需更改服务合同或重新编译任何代码。您甚至可以使用一个绑定公开服务,并使用不同的绑定调用目标服务。
编辑:
RoutingService的MSDN provided samples是查看RoutingService配置工作示例的一个很好的起点。就像更多东西WCF一样,浏览文档是一项乏味但几乎总是必要的成本来学习如何使用该死的东西:)
答案 1 :(得分:0)
这取决于你所谈论的变化。如果它只是重定向到真实服务器的同一服务合同的替代实现,那么您需要进行更改的唯一时间是合同本身更改,而不是实际的实现(这些程序集甚至不应安装在代理服务器)。 WCF的某些方面允许您使用一个操作来编写服务,该操作处理一般消息并返回一般消息(OperationContract(Action =“*”)] public void Message Execute(Message incoming),但是您需要检查传入消息以弄清楚如何转发它。