一、软件开发的互联网思维
1、网络就是计算机
进入互联网时代,软件开发必然放眼全局,充分利用互联网的资源和特性。比如,为了提高响应性能,就选择使用CDN作为前端缓存。而且可能还需要采用CDN提供的API进行编程,以便更加优化地调度缓存资源。类似这样可利用的网络资源很多,开发者需要统一考虑到,也就是建立起软件开发的互联网思维。这样开发出来的软件,才具有互联网基因,能够适应互联网的时代。
2、云计算助力软件开发
云计算通过虚拟化技术把很多资源整合起来,软件开发理念不断向更高维度抽象。从虚拟机到集群,再到容器,再抽象成函数计算,软件开发越来越聚焦在业务核心上。这样的演进,必然带来效率的提升。基于云计算环境的软件,不可避免地需要通过各种API来进行资源管理。
3、WEB API的作用
1)开放有价值的数据
一些数据具有较强的使用价值,比如天气预报。利用 WEB API 作为开放接口,可以让数据价值作用充分发挥出来。每个人都会有打车的经历,大多服务商都在打车软件上接入天气预报API,做到提前通知司机师傅天气变化情况,司机可做好出行应急准备,以及准备好雨具等贴心服务。并可通过此情况,设定相应的价格波动控制,调动司机师傅的积极性,并给乘客提供更优质的预知服务,达到三方共赢。
2)复杂计算接口
WEB API的另一个主要作用就是可以作为复杂计算的开放接口。例如,针对文档的WEB展现,特别是在移动端WEB展现,缺少成熟通用的技术方案。一些应用不得不采取变通的办法,比如阿里钉钉把文档页转成了图片;某邮箱丢失了字体轮廓特征;某信则要下载后通过第三方APP打开。反而一些中小开发团队,通过调用九云图的文档转换 WEB API,以最少的成本,实现了更好的效果。九云图WEB API 可以把各类文档转换成包含SVG的HTML5 格式,在移动端缺少字库的情况下,也能保持字体和版式完全不变,还可平滑缩放。像这样的复杂计算功能,采用 WEB API 进行接口开放,再合适不过了。
3)云计算资源管理
前面提到,基于云计算环境的软件,不可避免地需要通过各种API来进行资源管理。做为云计算基础设施的一部分,WEB API 是必不可少的。开发者通过调用 WEB API,可以使软件类产品高效、方便地融合到云计算体系里。
二、WEB API的统一性需求
1、体系结构的统一
一套完善的API,需要有一个统一的体系结构。
在API发展的各个阶段,这样的体系结构也在不断演进。初期,针对科学计算需要,主流开发语言提供了一些计算函数,那时候API体系虽然不复杂,但作为编程语言的一部分,整体的统一性非常明确,开发者很清楚有哪些函数是可以利用的。
随着IT技术的发展,出现了控件、类库、框架等越来越强大的开发接口,各种方案自成体系,尽管第三方资源不断加入,但整体的体系结构,还是依赖于核心功能的支撑。比如Java JDK提供了大量的原生类库,第三方产品虽然丰富多彩,但由于Java的平台属性,以及核心 API 功能的完善,JDK体系结构的统一性始终非常明确。维持 API 体系结构的统一性,还需要有理论的支持,比如各种 GUI 模型,都是遵循基础理论进行设计的。这保证了开发者在各种开发工具之间的思维统一,比如有了Windows GUI的开发经验后,再从事 Java Swing 开发时,也会得心应手。
当前,WEB API 在体系结构的统一方面,还十分不足。既缺乏理论基础,又缺少基本框架。显得非常散乱,即使同一个云厂商的各种资源接口,也缺少合理的分类体系结构。开发者面对这些 WEB API,很难做到了然于胸。如果能够规划出一个合理的体系结构,以云计算资源为主干,分门别类,第三方API都能在这个分类体系中找到相应的位置。开发者在使用 WEB API时,就能得心应手了。
2、接口规范的统一
和传统的 API 一样,一套具备完善体系结构的 WEB API,也需要有统一的接口规范。让开发者有明确的标准,可以提高沟通和使用的效率。
3、交互方式的统一
最开始提到网络就是计算机,互联网、云计算的各种资源,需要协同工作。WEB API 应该提供订阅、监听、事件等机制,统一各资源之间的交互方式。使整个 API 体系互相关联,成为一个协同运作的统一体,不再是众多分散存在的零部件。
4、安全保障的统一
和传统API的最大不同,就是WEB API面临着非常高的安全需求。互联网的开放,使网络资源和服务都面临着巨大的风险。这是 WEB API 必须要解决的问题。各个云计算厂商和第三方WEB API开发者,建立了一些加密、鉴权等机制,但是很多都是分散实施的,有些也提供了统一的访问控制,比如阿里云的RAM。但是在针对WEB API的安全保障方面,统一的程度、力度、透明度,以及抽象的层级似乎还远远不够。依靠中心化保障安全机制固然有必要,但是否应该引入区块链这样的技术作为安全机制的补充,也是一个需要考虑的问题。
三、软件产业大规模协作的前提
目前,软件开发领域技术协作性不强,从阿里云API市场的交易量也可以看出。这是由于软件产业起步较晚,成熟度不够导致的。而一些成熟度较高的产业,比如汽车制造业,技术协作十分广泛,大量的零部件都是协作生产的。软件产业要实现大规模协作,至少需要具备如下两个条件:
1、繁荣的生态
一个繁荣的生态需要健全的基础设施,WEB API领域的基础设施包括数据、网络资源和体系结构。随着云计算的发展普及,数据和网络资源基本具备,当务之急是要建立统一的体系结构。这样的体系结构,需要完善、有力的主干支撑,必须有足够规模和实力的企业投入资源,发挥主干作用,才有可能让WEB API生态繁荣起来。
2、系统准入和监管
软件产业的技术协作如果要打开局面,还有两件事情必须要做。一是制订一些技术标准,二是发放资质证书。传统产业这两件事做得很好,基本都是政府在主导。这样可以保障技术协作的可靠性,因为政府在制订标准和发放牌照的过程中,间接承担了担保人的角色。而软件产业的技术协作,政府却没有条件做上面的两件事。这就需要有实力的企业来承担这个角色,一方面对WEB API产品制定一些技术标准,比如文档格式转换类的,应提供什么样的接口,参数的类型、命名、响应的时间等;另一方面,对符合标准的WEB API发放资质证明,并对获得资质的产品进行日常核查,确保其运行状态稳定,为使用者提供充分可靠的服务。
WEB API已渗入到我们生活、出行、工作的各环节,成为了每个重要信息技术趋势的核心内容。移动设备、云计算、物联网、大数据及社交网络等应用都依赖于一个基于WEB的界面与它们的分布式组件进行连接,为全球范围内的各个商业领域提供具有创新性和颠覆性的解决方法。而WEB API的使用既是催化剂,也是促成这些成果的主要力量。