gpt4 book ai didi

web-services - 服务可以在其代码中调用另一个服务吗?

转载 作者:行者123 更新时间:2023-12-04 02:22:58 24 4
gpt4 key购买 nike

以下是与 SOA 相关的演示幻灯片中提到的一点,它使我对服务编排和服务编排的概念感到困惑。要启用服务编排,Web 服务是否应该能够调用另一个 Web 服务?

SOA builds applications out of software services. Services comprise intrinsically
unassociated, loosely coupled units of functionality that have no calls to
each other embedded in them.

最佳答案

理论上,服务可以做任何它需要做的事情来完成它的工作。因此,似乎没有充分的理由禁止使用第二项服务来完成您的工作。为什么要重新发明轮子?

在实践中,问题更为复杂。如果您开始在您自己的 Web 服务器上调用其他服务,那么您最终会耗尽它的资源。充其量,当您的 Web 服务服务器自行运行时,“真正的”客户端将不得不等待更长的时间才能得到答案。

另一个问题是递归循环:服务 A 调用 B 调用 C 调用 A 调用 B ...你明白了。一项服务的微小变化可以在没有任何人注意的情况下引入这样的循环,并且它可以在那里停留很长时间,直到它突然杀死你的服务器。

这就是为什么您应该在服务器内部的层次结构中构建微服务的原因(即在 Web 服务层之下 - 此 不会暴露给客户端 )。这些微服务可以以自上而下的方式相互使用(以避免循环)。单元测试然后确保它们正常运行。

最后,这种重用非常缓慢。每个 HTTP 请求都需要大量资源来创建、发送、解析和处理。直接调用内部方法可以快 10 - 10000 倍。

这些是单个服务器公开的服务不应通过“公共(public)客户端 API”相互重用的主要原因。

注意:有些 Web 服务通过使用现有服务来构建新服务。 IFTTT - "If This Then That"就是这样一只野兽。

关于web-services - 服务可以在其代码中调用另一个服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26099432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com