内部 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)
- 最好的方法是什么?
我的解决方案是
- 在 WCF_Full 中有一个指向 WCF_Thin 的服务引用。
- 两者具有相同的接口,WCF_Thin只是将消息传递到互联网
挑战在于我必须通过网络传递更多数据(配置+业务消息),才能使 WCF_Thin 正常工作,否则我不会这样做如果我坚持 WCF_Thin.
- 这是一个值得的权衡,还是我做错了?
1) "best approach" 是主观的,它总是取决于上下文
2) 我已经看到它按照您的描述完成了,但仅针对外部发起的流量。 DMZ 托管了该服务的 'Relay' 版本,正如您所描述的,它只是将流量传递到完整版本。在我们的例子中,完整版本托管在 'internal' 网络上,然后访问数据存储并将其返回链。不确定为什么需要对内部发起的流量执行此操作。
这个 'Relay' 解决方案增加了相当多的复杂性,我们最终用一个应用层网关 (ALG) 代替了它,它基本上做了同样的事情,尽管复杂性较低。 ALG 将流量代理到服务的完整版本,'Relay' 版本已停用。如果你 Google 'application layer gateway' 你会找到一堆信息。
可以对发往外部的内部发起的呼叫进行相同的代理。考虑一个负载测试场景,您不想加载供应商的服务或您按调用付费。为此,您可以将 ALG 设置为识别消息的签名并以您确定的任何方式进行响应。
HTH
如果这是重复的,请原谅我,我没有找到答案。
我们有以下网络设置
Internal | DMZ | Internet
我认为这是安全标准。
然后我有一个内部 WCF 服务,它具有业务逻辑和持久性。
由于数据不应该理想地托管在 DMZ 中,我认为最好的解决方案是拥有相同服务的 "dumb" shell部署到 DMZ 并传递与 Internet
通信所需的参数我相信它看起来像这样:
Internal | DMZ | Internet
WCF_Full <---> | <-- WCF_Thin --> | <----> (Third party)
- 最好的方法是什么?
我的解决方案是
- 在 WCF_Full 中有一个指向 WCF_Thin 的服务引用。
- 两者具有相同的接口,WCF_Thin只是将消息传递到互联网
挑战在于我必须通过网络传递更多数据(配置+业务消息),才能使 WCF_Thin 正常工作,否则我不会这样做如果我坚持 WCF_Thin.
- 这是一个值得的权衡,还是我做错了?
1) "best approach" 是主观的,它总是取决于上下文
2) 我已经看到它按照您的描述完成了,但仅针对外部发起的流量。 DMZ 托管了该服务的 'Relay' 版本,正如您所描述的,它只是将流量传递到完整版本。在我们的例子中,完整版本托管在 'internal' 网络上,然后访问数据存储并将其返回链。不确定为什么需要对内部发起的流量执行此操作。
这个 'Relay' 解决方案增加了相当多的复杂性,我们最终用一个应用层网关 (ALG) 代替了它,它基本上做了同样的事情,尽管复杂性较低。 ALG 将流量代理到服务的完整版本,'Relay' 版本已停用。如果你 Google 'application layer gateway' 你会找到一堆信息。
可以对发往外部的内部发起的呼叫进行相同的代理。考虑一个负载测试场景,您不想加载供应商的服务或您按调用付费。为此,您可以将 ALG 设置为识别消息的签名并以您确定的任何方式进行响应。
HTH