面向服务与面向API

时间:2012-10-22 11:36:56

标签: api architecture service

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

我试图把话语放在我感觉到的东西上,而不是总能清楚地表达它们来说服我周围的人。可能是我错了。可能是我的理解不足以找到适当的论据。

您如何根据“面向服务的方法”而不是“传统的”API方法来对比开发应用程序?

让我们在这里完全清楚,通过服务,我不一定是指Web服务。

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

  • 根据给定的显式协议,服务是您可以与之交谈的“living thing”。服务具有自己的运行时,而库使用应用程序的运行时。您可以将“生物”移动到任何您想要的地方
  • 库允许基于代码的集成,而服务传统上使用基于消息的集成(但是,没有什么可以阻止您根据交换消息编写库)
  • 服务可被发现
  • 合同是明确的,并在“正在运行的代码”之外表达
  • 服务是自治的(但在这里,您可以编写自治API,不是吗?)
  • 边界是明确的

我在这里缺少什么?还有什么能够真正区分服务和高级API?

2 个答案:

答案 0 :(得分:1)

你已经涵盖了最重要的一点。我想补充一句:

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

答案 1 :(得分:1)

面向服务的体系结构意味着公开的接口不会位于客户端运行的同一主机上,并且服务与客户端代码完全分离(松散耦合)。您可以通过在同一节点上加载必要的库并执行代码来轻松调用API。面向服务的体系结构不是定义API,而是关注功能,很多时候您可以使用不同的协议访问相同的功能。

如果有任何可以区分SOA和AOA的话,我会选择松散的代码耦合。