API和SOA之间有什么区别

时间:2012-02-29 09:10:22

标签: api soa

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

维基百科说这是关于API

  

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

关于SOA

  

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

这两种技术都不是您向其他服务提供服务吗? 有人可以扩展吗?

4 个答案:

答案 0 :(得分:38)

面向服务的体系结构是一种体系结构方法。这是一种将责任从业务导向的角度分离为独立服务的方式,这些服务通过公共API进行通信(通常但不一定是通过将​​事件发布到总线)。

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

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

总结:

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

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

答案 1 :(得分:4)

换句话说:

SOA是架构模式。

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

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

API是设计的实际实现。

答案 2 :(得分:1)

简明版本:

API 是一个通过http,网络套接字等提供数据访问的层,并且更具移动性。这些API应该在构建时考虑到SOA支持,并且目前使用围绕JSON和REST发展的现代技术。

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

两者都使用可互换的技术。安全性可以通过SOA解决,通常情况下,如果API的目的是提供开放数据,那么API就不那么重要了。

答案 3 :(得分:0)

似乎对此有很多意见;这是一个有趣的读物。这是我的看法。

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原则构建和使用的服务组成,同样使用开发人员选择的任何技术。