订阅软件研发RSS CSDN首页> 软件研发

API设计如龙生九子,Tunneling、Hypermedia等更受开发者青睐

发表于2014-06-19 14:53| 次阅读| 来源CSDN| 0 条评论| 作者伍昆

摘要:IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下,50.5%的投票给予了JSON,47.8%的票数落在了XML。

日前,全球领先的IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查对象是CA的客户,截至目前,共计收到180份来自API管理领域的专家或相关企业的回复。

调查结果表明,JSON与XML可谓两分天下,50.5%的投票给予了JSON,47.8%的票数落在了XML。


查阅完整的数据图表,请点击这里

在Web技术服务方面:

  • 43.5%的产品支持CRUD,18.8%的受访者会考虑增添该支援;
  • 41.9%的产品支持SOAP;19.1%的受访者会考虑增添该支援;
  • 26.3%的产品支持Hypermedia(超媒体);28%的受访者会考虑增添该支援。


其中,有以下四种最为开发者熟悉和使用的风格:

一、Tunneling Style(隧道式风格)

隧道式设计之前一直是最广泛采用的方案,与之对接的Web服务的技术通常是SAOP。而从近10年的情况来看,SOAP APIs的采用率出现了下滑,以下给出了导致该状况的几点分析:

  • SOAP对于开发者来说较复杂且难掌握;
  • SOAP对基础架构要求较高,在移动端的使用更是寥寥可数,因为过于庞大;
  • SOAP有极其严格的格式要求,因此开发者的自由与创新受到限制。

隧道式APIs的典型用户有eBay和PayPal。其特性包括:

  • 提供组件级别的接口;
  • 在域中对对象组件进行绑定;
  • 发布和确保终端的安全;
  • 以XML为中心的信息格式。

尽管SOAP的采用每况愈下,但对端对端通信安全性以及第三方认证有特殊需求的企业来说,SOAP仍占一席之地。

二、URI Style(通用资源标识符风格)

由于原生的网络属性,通用资源标识符风格可能是目前最广为人知而使用又最为广泛的设计样式了;相对于隧道式,它就显得平易近人多了。

采用URI的代表作有,Box(网盘) API以及StackMob(云后端服务) API。如果对Box API感兴趣,可以参阅ProgrammableWeb一篇对其深度剖析文章,链接请点击这里

其特性包括:

  • 基于对象级别的接口;
  • 在域中对对象进行绑定;
  • 对URIs和查询参数进行预定义;
  • 执行CRUD(增加、查询、更新、删除)操作。

在公共APIs、移动端和网络应用程式中,URI风格被广泛使用,同时可用于访问以SOAP为后台的旧系统数据以及网络服务。

三、Hypermedia Style(超媒体风格)

超媒体风格API以图形、声音、动画等超媒体元素为设计之本,建基于REST风格,REST是由Adobe高级技术专家、Apache联合创始人Roy Fielding提出的。

应用超媒体风格的例子有PayPal REST APIs以及Elastic Path(电商平台)Cortex Hypermedia API。

其特性包括:

  • 基于消息级别的接口;
  • 对消息进行绑定;
  • 与REST相结合;
  • 拥有属于自己的URIs;
  • HATEOAS(Hypermedia As The Engine Of Application State,超媒体的状态应用引擎)。

超媒体风格的最大好处是任何针对API工作流的变更,都不会影响当时使用该API的应用。此外,其延展性良好,能持续对客户端应用以及服务提供支援。但是,在该风格越来越受到大众青睐的同时,不少开发者认为在使用中需要面临不少的困难。来自CA的Nadareishvili指出:“对于大型分布式系统来说,超媒体风格是个很好的解决方案。特别是在不对用户使用过于限制或需要长时间才能完成的大规模变更场合,尤为适合。因此,具体情况具体分析,复杂度与有效度两者间的天枰,需要开发者好好衡量。”

四、Event-Driven Style(事件驱动风格)

属于新鲜事物的事件驱动风格在近几年取得不错的发展。典型例子如WebSocket协议,提供了客户端和服务器端的全双工数据传输模式。此外,CR8 CREATE 3D文件打印分析API也是采用该风格的。

其特性包括:

  • 客户端/服务器端单独或联合对新事件进行监听;
  • 被传送的事件是由异步消息产生的。
事件驱动风格的使用范围相当广泛,例如:可以把事件驱动风格应用程式与浏览器相结合,作为通用的客户端配置;可用于社交类和实时通信类的应用程式;可用于信息密集型应用程式,如网游;可用于实时交易数据场合,如股票信息查询;可用于实时商业智能数据浏览和分析参合。

写在后面

API风格如龙生九子,各有异同;但有时很难明确界定某API就是精确从属于某个风格。同时,在应用中也有可能出现混合风格的情况。因此,企业在执行项目前,需要进行周密严谨的评估与分析,以确立主体的风格取向来最大程度地满足商业目的。尽管这个过程可能是漫长且困难的,但是能明确的一点是:选择自己所熟悉的。因为这样,才能明确各个项目阶段的细节;即使失败,也能对错误环节进行有效的分析,回滚变更或重拟项目计划。

英文出自:Programmableweb

(译者/伍昆 责编/夏梦竹)

  • CSDN官方微信
  • 扫描二维码,向CSDN吐槽
  • 微信号:CSDNnews
程序员移动端订阅下载

微博关注

相关热门文章