一、API和SPI区别
1.1 API
为了做一个简单区别,先来说一下API(Application Programming Interface) ,目前一般企业架构内部都会有一个RPC框架,如果没有自研的也都在使用开源的比如比较有名的DUBBO,JSF等。业务需求确定之后,技术侧也会相互沟通说需要对方提供几个API接口。从面向接口编程的方式而言如下图1所示。另外还有当前的开放平台也是把企业内部的接口通过API网关暴露出去提供给第三方开发者如图2所示。这两种情况下说的都是API。接口我自己定义,自己来实现,然后暴露出去供别人调用,这是属于API概念。
图1
图2
1.2 SPI
SPI(Service Provider Interface) 一方制定接口,另外一方提供接口实现,比如在开放平台中,有平台制定接口,第三方去实现。这里的第三方是指开放平台的开发者,SPI这种调用关系多存在于开放平台架构中。接口我自己定义,但是我并不去实现,而是有其他模块或系统去实现,这是属于SPI概念。