0

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

我们有以下网络设置

Internal | DMZ | Internet

我相信这是安全的标准。

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

由于数据不应该理想地托管在 DMZ 中,我认为最好的解决方案是将同一服务的“哑”外壳部署到 DMZ 并传递与Internet通信所需的参数

我相信它看起来像这样:

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

  1. 最好的方法是什么?

我的解决方案是

  • 在WCF_Full中有一个指向WCF_Thin的服务引用。
  • 两者都具有相同的接口,并且WCF_Thin只是将消息传递到 Internet

挑战在于我必须通过网络传递更多数据(配置+业务消息),才能让WCF_Thin工作,如果我对WCF_Thin有持久性,我不会这样做。

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

1 回答 1

1

1) “最佳方法”是主观的,它总是取决于上下文

2) 我已经看到它按照您的描述完成,但仅适用于外部发起的流量。DMZ 托管服务的“中继”版本,正如您所描述的,它只是将流量传递到完整版本。在我们的案例中,完整版本托管在“内部”网络上,然后访问数据存储并将其返回链。不知道为什么您需要为内部发起的流量执行此操作。

这个“中继”解决方案增加了相当多的复杂性,我们最终用一个应用层网关 (ALG) 代替它,它基本上做同样的事情,但复杂性较低。ALG 将流量代理到服务的完整版本,“中继”版本已停用。如果你谷歌“应用层网关”,你会发现一堆信息。

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

高温高压

于 2016-06-30T14:35:08.683 回答