3

我已经看到几个围绕 SO 主题的问题,但没有一个真正让我满意的答案。

我试图用语言表达我的感受,但我总是无法清楚地表达它们以说服我周围的人。可能是我错了。可能是我的理解不够深入,无法找到合适的论据。

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

让我们在这里完全清楚,我所说的服务并不一定是指 Web 服务。

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

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

我在这里想念什么?还有什么真正将服务与高级 API 区分开来?

4

2 回答 2

1

你已经涵盖了最重要的观点。我会添加一个:

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

于 2012-10-23T05:24:21.517 回答
1

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

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

于 2012-10-23T05:47:13.403 回答