API 和 SOA 有啥区别

Posted

技术标签:

【中文标题】API 和 SOA 有啥区别【英文标题】:What is the difference between an API and SOAAPI 和 SOA 有什么区别 【发布时间】:2012-03-18 18:29:50 【问题描述】:

那里有很多What is the difference between... 问题,但我找不到这个。

***这样说API

应用程序编程接口 (API) 是一种基于源代码的规范,旨在用作软件组件相互通信的接口。

关于SOA

SOA 通常还为服务消费者(例如基于 Web 的应用程序)提供了一种了解可用的基于 SOA 的服务的方法。

难道不是两种技术都可以向其他服务提供服务吗? 有人可以对此进行扩展吗?

【问题讨论】:

【参考方案1】:

面向服务的架构是一种架构方法。这是一种从面向业务的角度将职责分离为独立服务的方法,这些服务通过通用 API 进行通信(通常但不一定通过将事件发布到总线)。

例如,您可以让一项服务负责捕获客户订单,该服务将 OrderCaptured 事件发布到总线;以及一个单独的服务,负责跟踪客户何时计费以及欠了多少,它订阅总线并响应 OrderCaptured 事件。由于责任分离,第一个服务可能不需要了解有关计费的任何信息。 而且这两个服务也不需要相互了解,只需要了解它们周围发生的事件。

API 是组件/服务公开的接口,以便其他组件可以与之通信。在上面的示例中,总线为许多服务提供了一个通用 API 以进行通信。

总结:

API = 软件组件公开的任何通信方式。

SOA = 一组企业架构设计原则,通过将职责拆分为服务来解决可扩展性问题。

【讨论】:

那么 API 是 SOA 的一部分,而不是相反? 是的,每个架构(除了非常小的架构)都会有一个或多个 API,以便其组件可以通信。 SOA 是一种架构模式/设计。 谢谢,这帮助我在这里写了一个关于 SOA 的解释:***.com/questions/2026523/…【参考方案2】:

换句话说:

SOA 是架构模式。

API 是制定或启用 SOA 模式的方法之一。

SOA 是“规划”Blue Print 设计方法。

API 是设计的实际实现。

【讨论】:

>>制定或启用 SOA 模式的一种方式 【参考方案3】:

简明扼要的版本:

API 是通过 http、Web 套接字等提供数据访问的层,并且对移动设备更友好。这些 API 的架构应该考虑到 SOA 支持,并且当前使用围绕 JSON 和 REST 发展的现代技术。

SOA 更多的是 A2A 和 B2B 业务解决方案层,当业务需要在不同类型的介质之间来回传递数据时,会构建 API,并围绕它构建业务规则。技术通常是 XML、RPC 和 SOAP。

两者都使用可互换的技术。两者都可以解决安全问题,SOA 通常是这样,如果 API 的目的是为开放数据提供服务,那么 API 的情况就不那么好了。

【讨论】:

【参考方案4】:

似乎对此有很多意见;这是一本有趣的书。这是我的看法。

SOA:SOA 是一种以服务为中心的架构模式,用于构建和访问软件组件/服务套件(如上述答案中所述)。形成 SOA 模式的 SOA 原则可以在很多地方找到,但并非所有这些原则都相互一致,这使得 SOA 成为一个有点模糊的术语。几乎可以使用任何现代软件开发技术集构建 SOA 服务(见下文)。

API:通常,“API”一词用于表示如何以编程方式使用或与软件解决方案交互的规范。它可以指诸如编程语言及其组件 (Java API) 的规范、如何访问和/或扩展 COTS 解决方案的规范、如何利用服务或服务集的规范(包括签名或与服务接口相关的数据结构)等。

SOA 和 API:SOA 服务的 API 可以包括服务的概念性、与技术无关的规范(例如:一个数据元素将是客户的姓氏),以及物理的、特定于技术的规范该 SOA 服务的每个物理实例化的使用规范(例如:将提供两个实例化,一个使用 JSON 布局,另一个使用 XML 布局,每个包含大致等效的“LAST NAME”数据元素的物理规范)。

误解:术语 API 应仅用于指 RESTful 或“简单、轻量级”或基于 JSON 的接口(旁注:RESTful 不等同于“简单”或“轻量级”)。实际上,可以使用多种技术(包括基于 WS* 的服务)按照多种模式构建 API。

误解:SOA 严格遵循 WS* 或其他“复杂、重量级”的接口方法。实际上,几乎可以使用任何现代软件开发技术集构建和使用 SOA 服务,包括 RESTful 方法或 JSON 文件。

关于 SOA 的更多信息: SOA 是一种架构模式,它建立在以下概念之上:功能应该被实例化为具有清晰使用规范的服务,因此可以被任何遵循该使用规范的软件组件“客户端”使用,而不管服务所基于的技术是什么已开发或在其上开发了“呼叫客户端”。编写良好的服务应该是高度交叉兼容的。

因为许多开源提供商和供应商已经构建了基于 XML 方法的面向 SOA 的框架,特别是 WS* 标准集,所以 SOA 有时被错误地限制性地与 WS* 和/或 XML 相关方法相关联。但实际上,SOA 作为一种概念模式,与技术无关。一个概念性 SOA 服务可以以多种形式实例化一次或多次,每次实例化都从设计人员确定的各种技术(XML、JSON、WS*、REST 方法、Java、C++、LAMP 等)中进行选择和该实例化的开发人员。

SOA 解决方案或解决方案生态系统是基于 SOA 原则构建的;它由遵循 SOA 原则构建和使用的服务组成,同样,使用开发人员选择的任何技术。

【讨论】:

以上是关于API 和 SOA 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

SOA 和微服务有何区别?

SOA 和微服务有何区别?

SOA 和微服务有何区别?

SOA架构和微服务架构的区别(转载)

API、框架和中间件有啥区别? [关闭]

Shell、Kernel 和 API 有啥区别