我正在实现一个服务,该服务需要调用另一个服务,该服务以一种我不知道的方式计算结果。
假设我有以下场景:在我的代码中有一些地方,调用对已定义端点的HTTP请求,另一个返回已定义结果的服务。现在,我不能规定如何计算结果但是,我可以定义我期望的结果输出数据类型。我想强调一下这一点,否则我就只能在我的服务中实现计算逻辑了。
我将向用户描述它:
您需要提供一个HTTP服务,使用这个确切的端点,接收这些确切的参数,交付这个确切的结果类型,但是如何计算结果是您的工作。我只需要你的服务的URL。
之后,我的服务的用户将把他们的HTTP服务的URL配置到我的服务中,这样我就可以向{url}/defined-endpoint
发出HTTP请求。
除了"服务注入",我想不出别的名字了。为了描述这个概念,因为它与依赖注入有相似之处,只是在代码中不提供对象实例,而是通过http调用的服务。
我的问题是:这个概念是否有一种模式或一种替代方案,可以更优雅地解决将计算外包给另一个服务的一般问题?
您正在定义一个契约,说明您的服务和其他服务之间的接口如何。这意味着,只要合同得到双方的尊重,整合和沟通就会成功。不确定是否"服务注入";是一个很好的术语。您没有在自己的服务中注入任何东西,您只是将计算委托给另一个服务,但是您没有将服务的逻辑注入到您自己的服务中。这很好,因为你有一个很好的关注点分离和松耦合。只要契约得到尊重,两个服务都可以以任何需要的方式进行更改,并且集成仍然保持不变。
这个概念是否有一个模式或一个更优雅地解决将计算外包给另一个服务的一般问题的替代方案?
这就是微服务生态系统的运作方式。您有多个公开api的服务,它们相互通信,以作为一个整体提供更高阶的功能。