V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
out4b
V2EX  ›  JavaScript

CDIF: 基于 REST 和 JSON 的 SOA 框架

  •  
  •   out4b · 2016-11-11 11:01:20 +08:00 · 2199 次点击
    这是一个创建于 2938 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通用设备互联框架( CDIF )是一个具备中美知识产权保护的,基于 web 的连接框架,目前有部分开源实现存放在: Github: 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 的更多技术细节和信息。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2688 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 15:43 · PVG 23:43 · LAX 07:43 · JFK 10:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.