当前位置: 首页 > news >正文

CDIF: 基于REST和JSON的SOA软件框架

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: Common device interconnect framework。CDIF是世界上第一种基于REST和JSON的SOA软件框架,提供了与基于XML的WSDL语言和SOAP协议同等抽象能力、但简洁得多的基于JSON的实现,也非常适合用于描述微服务架构的API接口。CDIF提供了完整的服务注册和发现能力,并为所有的web服务和物联网设备,包括REST、SOAP类型的服务,各种协议的物联网设备创建出一个简洁、统一的JSON模型;并在此基础上提供了其REST接口上的,基于JSON文本的统一RPC调用接口,方便了各种前端应用开发出基于该统一模型的API调用代码。

CDIF的总体架构如下图所示:

cdif arch

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

CDIF框架代码用node.js书写,因此底层的虚拟设备驱动全部使用node.js的npm包进行管理。每个设备驱动可包含一到多个虚拟设备,由驱动被加载时上报给CDIF框架。被CDIF管理的虚拟设备及其API内部实现通过设备抽象层被封装在驱动中,这些驱动的内部实现可以使用node.js丰富的生态中任意一个优秀的第三方包帮助实现,比如request, crypto, moment等,因此非常容易开发和管理。

CDIF项目由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来连接企业内部的各种基础业务组件。但是,目前企业内外使用的各种REST API基本都需要依赖于文档手动管理,在API接口变化时,部署和升级新的API版本非常不便。CDIF为REST API建立的通用模型帮助填补了REST API与传统SOA技术的差距,并为传统SOA技术和云服务的结合与发展提供了全新的方向。基于CDIF的SOA技术可以方便地创建出许多全新类型的应用,比如REST服务流应用,web服务和物联网设备的无缝结合等等,这些都是现有技术无法轻易实现的场景。

与WSDL或Swagger等API modelling language不同,使用CDIF提供的JSON模型与RPC接口的客户端app不需要对被CDIF管理的REST API做离线的客户端代码生成和手动集成,便可将这些REST API接口及其变化通过schema form等组件动态地反映在客户端UI上供用户使用,省却了客户端对REST API的集成和API接口变化带来的繁琐的手动客户端升级工作。被CDIF管理的REST API可以将新增加的,或者变化后的API自动展现在app UI上供用户消费使用,简化了app开发人员的工作,同时可做到实时推广厂商新增API所展现的新业务能力。

如果客户端app不希望使用这些高级特性,CDIF提供的REST接口也可以向下兼容目前流行的手动集成方法。用户参考CDIF为REST API创建的通用模型便可方便地开发出基于该模型的API调用代码。

由于做到了对API的访问地址和方法完全透明,CDIF也可以较好地帮助企业解决REST API的变化管理这一难题。CDIF支持驱动代码的热切换,驱动中的API访问地址或方法发生变化时只需要安装新的驱动包到CDIF框架上,变化即可立即生效。当API参数或结果类型发生变化时,上层应用可以自动发现这些变化。这些特性都可以更好地帮助企业建设全自动化的运维环境。

更进一步,CDIF还可以为厂商的REST API提供独有的双向数据通道能力,厂商只需要调整其REST API对CDIF框架提供的统一JSON模型上一个Boolean取值便可开放该能力。此时,厂商云服务上的各种数据更新便可以实时地通过WebSocket,APN等通道被CDIF的消息订阅者获取,而不需要由用户主动发起API调用更新数据,产生额外的API调用开销。该特性为目前所有基于API调用的单向云服务数据通道提供了更强大的能力。

CDIF技术的版权和开发归属上海灵长软件科技有限公司所有。目前我们正在基于CDIF打造一个全新API管理解决方案,敬请大家关注我们的最新进展,同时也欢迎大家向我们咨询关于CDIF的更多技术细节和信息。

转载于:https://my.oschina.net/u/3028879/blog/786129

相关文章:

  • 步步为营 .NET 设计模式学习笔记 二十四、Factory Method(工厂方法模式)
  • 杉杉股份聘方正科技前副总任伟泉掌帅印
  • npm安装任何包报错,解决方法:
  • Windows 7快速定位照片方法
  • Calendar类,运用Calendar类打印日历
  • 禁止浏览器自动保存密码弹框
  • tomcat:javax.servlet.http.HttpServletRequest cannot be resolved
  • Git忽略规则及.gitignore规则不生效的解决办法
  • 手把手教你实现微信聊天框随文本升高
  • packge-info.java
  • Java 线程 — ThreadLocal
  • 前端学数据库之数据表操作
  • [转]C#中捕捉对话框的文本内容 EnumChildWindows
  • (转)LINQ之路
  • 创建dialog
  • [deviceone开发]-do_Webview的基本示例
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Android系统模拟器绘制实现概述
  • Angular6错误 Service: No provider for Renderer2
  • canvas 五子棋游戏
  • gcc介绍及安装
  • iOS | NSProxy
  • iOS编译提示和导航提示
  • javascript 哈希表
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • react 代码优化(一) ——事件处理
  • windows下使用nginx调试简介
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 关于使用markdown的方法(引自CSDN教程)
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 爬虫模拟登陆 SegmentFault
  • 算法---两个栈实现一个队列
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Linux权限管理(week1_day5)--技术流ken
  • #### go map 底层结构 ####
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C#)获取字符编码的类
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (九)One-Wire总线-DS18B20
  • (算法)Game
  • (译)计算距离、方位和更多经纬度之间的点
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • ..回顾17,展望18
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 表达式计算:Expression Evaluator
  • .Net的C#语言取月份数值对应的MonthName值
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .net项目IIS、VS 附加进程调试
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @property括号内属性讲解
  • @Query中countQuery的介绍