CDIF:基于JSON的SOA软件框架

通用设备互联框架(CDIF)是一个基于web的链接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnect framework。CDIF是一种基于JSON的SOA软件框架。CDIF为客户端app提供了与基于XML的WSDL语言和SOAP协议同等抽象能力、但简洁得多的基于JSON的实现,也很是适合用于描述微服务架构的API接口。CDIF提供了完整的服务注册和发现能力,并为全部的web服务和物联网设备,包括REST、SOAP类型的服务,各类协议的物联网设备建立出一个简洁、统一的JSON模型;并在此基础上提供了其REST接口上的,基于JSON文本的统一RPC调用接口,方便了各类前端应用开发出基于该统一模型的API调用代码。前端

CDIF的整体架构以下图所示:node

                                                 CDIF整体架构git

经过框架提供的设备抽象层,CDIF未来自不一样厂商的各类类型的REST或SOAP API,或者物联网设备封装成各类虚拟设备,并对外提供统一的虚拟设备访问REST接口供客户端使用。github

CDIF框架代码用node.js书写,所以底层的虚拟设备驱动所有使用node.js的npm包进行管理。每一个设备驱动可包含一到多个虚拟设备,由驱动被加载时上报给CDIF框架。被CDIF管理的虚拟设备及其API内部实现经过设备抽象层被封装在驱动中,这些驱动的内部实现可使用node.js丰富的生态中任意一个优秀的第三方包帮助实现,好比request, crypto, moment等,所以很是容易开发和管理。配合周边的辅助开发工具,由CDIF管理的API能够拥有自动文档生成,自动测试工具等能力。如下是灵长科技API市场上经过解析CDIF API为REST或SOAP API定义的规范,以及利用JSON schema form技术为各类REST或SOAP API自动生成的API文档和测试页面截图。同时,当API的参数发生变化好比新增参数字段时,这些API的文档和测试工具都会自动更新。web

wKioL1jkiYqREuvpAAJy7bRhjgs598.jpg

                                                           自动API文档生成npm

wKioL1jkidWiIsrKAAI915HXJLE480.jpg

                                                         自动API测试页面生成api

CDIF为云服务API建立的统一模型由UPnP的启发而来。在支持各种云服务的API接口同时,CDIF也为全部的物联网设备了一个统一的模型,而且能够方便地帮助客户端建立出物联网设备和网络服务联动的各类应用场景。缓存

因为其简洁的抽象能力,基于严格契约的松耦合架构,状态无关的可互换服务定义等优势,在WSDL和SOAP基础上打造的SOA技术体系至今仍然普遍应用于包括银行、交易所、航空公司、电信、医院、电商、支付平台等各行各业的大中型企业中。据MuleSoft估算,目前世界上每一年花费在与SOA技术相关的企业IT基础设施建设和系统集成工做有5000亿美圆之多。但因为XML格式用于数据交换过于复杂,以XML为基础的许多优秀的WS-*标准都逐渐走向了没落。服务器

随着移动时代的发展,以REST和JSON为基础打造的各类web服务、微服务架构逐渐成为主流。基于JavaScript开发的应用,如各类web app等都以REST和JSON做为链接的基础。新兴IT企业也更倾向于使用REST API,而不是SOAP来链接企业内部的各类基础业务组件。可是,因为缺乏有效的schema约束和管理能力,目前企业内外使用的各类REST API基本都须要依赖于文档手动管理,数据只能用"举例"的方式描述,缺少严谨的规范也给API集成带来了诸多不便之处。同时,在API接口须要变化时,部署和升级新的API版本也很是不便。CDIF为REST API创建的通用模型帮助填补了REST API与传统SOA技术的差距,并为传统SOA技术和云服务的结合与发展提供了全新的方向。基于CDIF的SOA技术能够方便地建立出许多全新类型的应用,好比REST服务流应用,web服务和物联网设备的无缝结合等等,这些都是现有技术没法轻易实现的场景。网络

与WSDL或Swagger等API modelling language不一样,借助于JSON schema form和服务器端渲染等技术带来的便利,使用CDIF提供的JSON模型与RPC接口的客户端app能够为客户端app提供全自动化集成能力。在这种状况下,不须要对被CDIF管理的REST API作离线的客户端代码生成和手动集成,即可将由CDIF管理的API接口,及其变化动态地反映在客户端UI上供用户使用,省却了客户端对REST API的集成和API接口变化带来的繁琐的手动客户端升级工做。由CDIF管理的REST API能够将新增长的,或者变化后的API自动展示在app UI上供用户消费使用,简化了app开发人员的工做,同时可作到实时推广厂商新增API所展示的新业务能力。

若是客户端app不但愿使用这些高级特性,CDIF提供的REST接口也能够向下兼容目前流行的手动集成方法。用户参考CDIF为各类云服务API建立的通用模型即可方便地开发出基于该模型的API调用代码。

因为作到了对API的访问地址和方法彻底透明,CDIF也能够较好地帮助企业解决REST API的变化管理这一难题。CDIF内部对API驱动包中的JS代码使用动态装载技术,可支持驱动代码的热切换,驱动中的API访问代码发生变化时,只须要一键安装新的驱动包到CDIF框架上,变化便可当即生效。同时可作到不打断线上正在执行的旧版本API调用。这些特性均可以帮助企业更方便地管理其自身的API接口。

更进一步,CDIF也为厂商的云服务API接口提供了灵活的数据缓存和独有的双向数据通道能力,厂商只须要调整其API对CDIF框架提供的统一JSON模型上几个字段取值即可开放这些能力,API数据的缓存时间从1毫秒到10年能够由API开发者根据实际状况随意指定,并随时调整。在开启双向数据通道能力后,厂商云服务上的各类数据更新即可以实时地经过WebSocket,APN等通道被CDIF的消息订阅者获取,而不须要由用户主动发起API调用更新数据,产生额外的API调用开销。这些独有的特性都为目前全部基于API调用的单向云服务数据通道提供了更强大的能力。

相关文章
相关标签/搜索