面向服务 vs 面向API

3

我在SO上看到了几个围绕这个主题的问题,但没有一个真正令我满意的答案。

我试图用言语表达我感受到的东西,但并不总能清晰地表达出来,以至于不能说服身边的人。可能是我错了。也可能是我的理解不够深入,找不到合适的论据。

你如何对比按照“面向服务的方法”而非“传统”的API方法开发应用程序?

让我们在这里完全明确一点,通过服务,我不一定指Web服务。

以下是我看到的一些区别。如果我错了,请纠正我:

  • 服务是一个“生物”,你可以按照特定和明确的协议与其交流。服务有自己的运行时,而库使用你的应用程序的运行时。你可以将这个“生物”移动到任何地方。
  • 库允许基于代码的集成,而服务传统上使用基于消息的集成(然而,没有什么真正阻止你编写基于交换消息的库)。
  • 服务是可发现的。
  • 合同是明确的,并在运行代码之外表达。
  • 服务是自治的(但在这里,你也可以编写自治的API,不是吗?)
  • 边界是明确的。

我错过了什么吗?还有什么能真正区分服务和高级API吗?

2个回答

1

您已经涵盖了大部分重要点。我想再补充一个:

通常,服务是无状态的。每个服务请求都是独立的。这与库接口形成对比,您可能需要按顺序进行某些调用才能获得所需的结果。


1

面向服务的架构意味着暴露的接口不在客户端运行的同一主机上,服务与客户端代码完全解耦(松散耦合)。您可以通过加载必要的库并在同一节点上执行代码轻松调用API。与定义API不同,面向服务的架构专注于功能,很多时候您可以使用不同的协议访问相同的功能。

如果有什么可以区分SOA和AOA的东西,我会选择松散的代码耦合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接