soa - 在服务层切换客户端逻辑是不是有问题?

标签 soa

我们有两个客户端应用程序(一个 Web 应用程序和一个代理应用程序)访问同一服务的方法,但要求略有不同。我的团队希望通过向每个方法传递一个 ApplicationType 参数来控制服务端的行为 - 这本质上是一个包含调用客户端应用程序名称的枚举 - 然后将其用作数据库查找的键来配置服务客户特定选项。

这让我感到不安,因为我认为服务实际上不必知道哪个客户端正在调用它。有人告诉我,这样做比通过方法调用动态传递大量选项更容易。

客户端应用程序告诉服务他们是谁有什么问题吗?或者传递配置键与传递一组参数化选项之间真的没有区别吗?

我看到的一个直接问题是,如果我们向第三方运行的另一个客户端开放服务,我们就必须在本地为他们维护他们的配置设置。目前我们拥有两个客户端应用程序,因此这不是什么大问题。

你会怎么做?

最佳答案

在分层解决方案中,您应该始终将层视为类似洋葱的层,并且依赖关系应始终向内,而不是向外。

所以你的GUI/App层应该依赖于业务逻辑层,业务逻辑层应该依赖于数据访问层,等等。

除非您对客户端进行分类(web、win、wpf、cli),或者使用客户端配置文件(客户端应用程序可以配置)进行概括,否则我永远不会传递调用应用程序的名称,因为这会使业务逻辑层了解并依赖于外部层。

我们正在讨论什么样的差异取决于应用程序的类型?如果您详细说明此处的差异,也许有人可以就解决此问题的其他方法提出一些有用的建议。

但在走你所描述的道路之前,我肯定会寻找其他方法。

关于soa - 在服务层切换客户端逻辑是不是有问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/336973/

相关文章:

Mule ESB 与 Spring 集成

java - 关于我的服务应该如何交互的建议

xml - 如何强制将每个双引号“转义为 XML 字符实体”

architecture - 微服务治理与 SOA

java - 迁移我的应用程序以使用 OSB

soa - 编排与编排

c# - 如何在 WCF 中使用 DomainModel

web-services - SOA - 贵公司首先实现的内部 Web 服务是什么?

web-services - 跨微服务查询/分页

java - 如何在面向服务的架构中使用mybatis 提高效率?