【发布时间】:2017-01-23 22:28:41
【问题描述】:
我正在构建一个服务(休息服务),它对数据库进行内部调用,然后进行一个外部 Web 服务调用。此服务可用于内部请求并暴露给外部客户调用,我怀疑我是否可以将此服务命名为 Facade 或 Gataway。我确实读过网关和外观模式,一种是客户是外部应用程序,另一种是内部应用程序,所以我没有发现这两种调用的服务模式。
【问题讨论】:
标签: design-patterns anti-patterns
我正在构建一个服务(休息服务),它对数据库进行内部调用,然后进行一个外部 Web 服务调用。此服务可用于内部请求并暴露给外部客户调用,我怀疑我是否可以将此服务命名为 Facade 或 Gataway。我确实读过网关和外观模式,一种是客户是外部应用程序,另一种是内部应用程序,所以我没有发现这两种调用的服务模式。
【问题讨论】:
标签: design-patterns anti-patterns
在许多方面Gateway/Facade 是two sides of the same coin 网关模式将用于简化对您外部的 Web 服务的调用(即提供一致的 API),而外观模式将用于提供为您的客户提供您自己的内部 API 的简化版本。
如果您希望您的客户能够像您一样访问外部 Web 服务,您可以随时将简化的外部 API 直接合并到您的外观中。一个更好的解决方案可能是通过使用command pattern(或类似的)将其与您的内部分离,如果外部 Web 服务 API 添加功能或更改,无论出于何种原因,您有一个简单的方法来修改您的系统来应对。
我认为对于您的特定用例没有一个模式,您将不得不根据最有效/为您提供最一致、可维护的代码的方式来设计您的解决方案。
【讨论】: