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的总体架构如下图所示:

CDIF总体架构
通过框架提供的设备抽象层,CDIF将来自不同厂商的各种类型的REST或SOAP API,或者物联网设备封装成各种虚拟设备,并对外提供统一的虚拟设备访问REST接口供客户端使用。
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的文档和测试工具都会自动更新。

自动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接口提供了灵活的数据缓存和独有的双向数据通道能力,厂商只需要调整其REST API对CDIF框架提供的统一JSON模型上几个字段取值便可开放这些能力,API数据的缓存时间从1毫秒到10年可以由API开发者根据实际情况随意指定,并随时调整。在开启双向数据通道能力后,厂商云服务上的各种数据更新便可以实时地通过WebSocket,APN等通道被CDIF的消息订阅者获取,而不需要由用户主动发起API调用更新数据,产生额外的API调用开销。这些独有的特性都为目前所有基于API调用的单向云服务数据通道提供了更强大的能力。
CDIF技术的版权和开发归属上海灵长软件科技有限公司所有。我们已基于CDIF打造了一个全新的API管理解决方案,并向所有开发者开放使用。欢迎大家向我们咨询关于CDIF的更多技术细节和信息。
CDIF: 基于JSON的SOA软件框架的更多相关文章
- CDIF:基于JSON的SOA软件框架
通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnec ...
- 接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)
基于python实现的http+json协议接口自动化测试框架(实用改进版) by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 目录 1. ...
- 基于.NET CORE微服务框架 -surging 基于messagepack、protobuffer、json.net 性能对比
1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输 ...
- 基于.NET CORE微服务框架 -谈谈surging 的messagepack、protobuffer、json.net 序列化
1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输 ...
- 基于.NET平台常用的框架整理(转)
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的 学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到, ...
- 【转】基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累 了一些开源的组件,就目前想到的先整理于此,如果再想到, ...
- 基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
- 基于.NET平台常用的框架整理【转】
转:http://www.cnblogs.com/hgmyz/p/5313983.html 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产 ...
- ( 转)基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就 ...
随机推荐
- Java 八大类型、String和 StringBuffer
1. 八大类型 类型 封装类 占字节 int; Integer; 4 short; Short; 2 byte; Byte; ...
- 玩转微信小程序
原文链接 2007 年 1 月 9 号,苹果一代在功能机盛行的年代中出世. 2017 年 1 月 9 号,微信小程序在重型app风靡的压力下上线. 苹果的出世掀起了互联网一波又一波的浪潮,而微信小程序 ...
- vue-router跳转页面
小结放在前:先祝大家新年快乐!鸡年大吉大利!在新的一年里大家都有跳跃般的成长!作为新年的第一篇文章,就拿他来给大家拜个年!!!文章前部份讲解了vue-router路由的配置,后半部分为去年的文章vue ...
- twemproxyRedis协议解析探索——剖析twemproxy代码正编
这篇文章会对twemproxyRedis协议解析代码部分进行一番简单的分析,同时给出twemproxy目前支持的所有Redis命令.在这篇文章开始前,我想大家去简单地理解一下有限状态机,当然不理解也是 ...
- js-面试题1
//1. y 和 z的值? ; ; ; function add(n){n=n+;} y = add(x); function add(n){n=n+;} z = add(x); //y,z输出und ...
- 蓝牙连接音响问题(android电视)
最近老大让我开发电视的蓝牙,由于android电视的蓝牙不稳定和设计上的各种各样的要求,需要在原有的基础上做一些更改,中间遇到了各种问题,在此总结一下. 我们首先要获取blueToothAdapter ...
- redisson实现分布式锁原理
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- IOS9.0 之后友盟分享详细过程
一: 申请友盟的AppKey(友盟的Key是根据应用的名称生成的!) 在友盟注册了你自己的开发者账号后就可以申请AppKey了.然后在这个方法里面设置Key - (BOOL)application:( ...
- css中的text-overflow
css中的text-overflow HTML中: <body><div class="clip">此处中多余的文字直接被切掉,不显示</div> ...
- Raspberry树莓派学习笔记2—配置RobotFramework自动化测试环境
一般RobotFramework都是安装在Windows/Linux的PC机上,这里将简单介绍在树莓派硬件平台上配置RobotFramework的开发和运行环境. 树莓派上配置了自动化测试软件,可以考 ...