内部 WCF 调用其哑 DMZ 版本连接到 Internet 的体系结构

Architecture for Internal WCF calling its dumb DMZ version connecting to the Internet

如果这是重复的,请原谅我,我没有找到答案。

我们有以下网络设置

Internal | DMZ | Internet

我认为这是安全标准。

然后我有一个内部 WCF 服务,它具有业务逻辑和持久性。

由于数据不应该理想地托管在 DMZ 中,我认为最好的解决方案是拥有相同服务的 "dumb" shell部署到 DMZ 并传递与 Internet

通信所需的参数

我相信它看起来像这样:

Internal | DMZ | Internet WCF_Full <---> | <-- WCF_Thin --> | <----> (Third party)

  1. 最好的方法是什么?

我的解决方案是

挑战在于我必须通过网络传递更多数据(配置+业务消息),才能使 WCF_Thin 正常工作,否则我不会这样做如果我坚持 WCF_Thin.

  1. 这是一个值得的权衡,还是我做错了?

1) "best approach" 是主观的,它总是取决于上下文

2) 我已经看到它按照您的描述完成了,但仅针对外部发起的流量。 DMZ 托管了该服务的 'Relay' 版本,正如您所描述的,它只是将流量传递到完整版本。在我们的例子中,完整版本托管在 'internal' 网络上,然后访问数据存储并将其返回链。不确定为什么需要对内部发起的流量执行此操作。

这个 'Relay' 解决方案增加了相当多的复杂性,我们最终用一个应用层网关 (ALG) 代替了它,它基本上做了同样的事情,尽管复杂性较低。 ALG 将流量代理到服务的完整版本,'Relay' 版本已停用。如果你 Google 'application layer gateway' 你会找到一堆信息。

可以对发往外部的内部发起的呼叫进行相同的代理。考虑一个负载测试场景,您不想加载供应商的服务或您按调用付费。为此,您可以将 ALG 设置为识别消息的签名并以您确定的任何方式进行响应。

HTH