一、軟件開(kāi)發的互聯網思維
1、網絡就是計(jì)算(suàn)機
進入互聯網時(shí)代,軟件開(kāi)發必然放眼全局,充分利用互聯網的資源和(hé)特性。比如,為(wèi)了提高(gāo)響應性能,就選擇使用CDN作(zuò)為(wèi)前端緩存。而且可(kě)能還(hái)需要采用CDN提供的API進行(xíng)編程,以便更加優化地調度緩存資源。類似這樣可(kě)利用的網絡資源很(hěn)多(duō),開(kāi)發者需要統一考慮到,也就是建立起軟件開(kāi)發的互聯網思維。這樣開(kāi)發出來(lái)的軟件,才具有(yǒu)互聯網基因,能夠适應互聯網的時(shí)代。
2、雲計(jì)算(suàn)助力軟件開(kāi)發
雲計(jì)算(suàn)通(tōng)過虛拟化技(jì)術(shù)把很(hěn)多(duō)資源整合起來(lái),軟件開(kāi)發理(lǐ)念不斷向更高(gāo)維度抽象。從虛拟機到集群,再到容器(qì),再抽象成函數(shù)計(jì)算(suàn),軟件開(kāi)發越來(lái)越聚焦在業務核心上(shàng)。這樣的演進,必然帶來(lái)效率的提升。基于雲計(jì)算(suàn)環境的軟件,不可(kě)避免地需要通(tōng)過各種API來(lái)進行(xíng)資源管理(lǐ)。
3、WEB API的作(zuò)用
1)開(kāi)放有(yǒu)價值的數(shù)據
一些(xiē)數(shù)據具有(yǒu)較強的使用價值,比如天氣預報。利用 WEB API 作(zuò)為(wèi)開(kāi)放接口,可(kě)以讓數(shù)據價值作(zuò)用充分發揮出來(lái)。每個(gè)人(rén)都會(huì)有(yǒu)打車(chē)的經曆,大(dà)多(duō)服務商都在打車(chē)軟件上(shàng)接入天氣預報API,做(zuò)到提前通(tōng)知司機師(shī)傅天氣變化情況,司機可(kě)做(zuò)好出行(xíng)應急準備,以及準備好雨具等貼心服務。并可(kě)通(tōng)過此情況,設定相應的價格波動控制(zhì),調動司機師(shī)傅的積極性,并給乘客提供更優質的預知服務,達到三方共赢。
2)複雜計(jì)算(suàn)接口
WEB API的另一個(gè)主要作(zuò)用就是可(kě)以作(zuò)為(wèi)複雜計(jì)算(suàn)的開(kāi)放接口。例如,針對文檔的WEB展現,特别是在移動端WEB展現,缺少(shǎo)成熟通(tōng)用的技(jì)術(shù)方案。一些(xiē)應用不得(de)不采取變通(tōng)的辦法,比如阿裏釘釘把文檔頁轉成了圖片;某郵箱丢失了字體(tǐ)輪廓特征;某信則要下載後通(tōng)過第三方APP打開(kāi)。反而一些(xiē)中小(xiǎo)開(kāi)發團隊,通(tōng)過調用九雲圖的文檔轉換 WEB API,以最少(shǎo)的成本,實現了更好的效果。九雲圖WEB API 可(kě)以把各類文檔轉換成包含SVG的HTML5 格式,在移動端缺少(shǎo)字庫的情況下,也能保持字體(tǐ)和(hé)版式完全不變,還(hái)可(kě)平滑縮放。像這樣的複雜計(jì)算(suàn)功能,采用 WEB API 進行(xíng)接口開(kāi)放,再合适不過了。
3)雲計(jì)算(suàn)資源管理(lǐ)
前面提到,基于雲計(jì)算(suàn)環境的軟件,不可(kě)避免地需要通(tōng)過各種API來(lái)進行(xíng)資源管理(lǐ)。做(zuò)為(wèi)雲計(jì)算(suàn)基礎設施的一部分,WEB API 是必不可(kě)少(shǎo)的。開(kāi)發者通(tōng)過調用 WEB API,可(kě)以使軟件類産品高(gāo)效、方便地融合到雲計(jì)算(suàn)體(tǐ)系裏。
二、WEB API的統一性需求
1、體(tǐ)系結構的統一
一套完善的API,需要有(yǒu)一個(gè)統一的體(tǐ)系結構。
在API發展的各個(gè)階段,這樣的體(tǐ)系結構也在不斷演進。初期,針對科學計(jì)算(suàn)需要,主流開(kāi)發語言提供了一些(xiē)計(jì)算(suàn)函數(shù),那(nà)時(shí)候API體(tǐ)系雖然不複雜,但(dàn)作(zuò)為(wèi)編程語言的一部分,整體(tǐ)的統一性非常明(míng)确,開(kāi)發者很(hěn)清楚有(yǒu)哪些(xiē)函數(shù)是可(kě)以利用的。
随着IT技(jì)術(shù)的發展,出現了控件、類庫、框架等越來(lái)越強大(dà)的開(kāi)發接口,各種方案自成體(tǐ)系,盡管第三方資源不斷加入,但(dàn)整體(tǐ)的體(tǐ)系結構,還(hái)是依賴于核心功能的支撐。比如Java JDK提供了大(dà)量的原生(shēng)類庫,第三方産品雖然豐富多(duō)彩,但(dàn)由于Java的平台屬性,以及核心 API 功能的完善,JDK體(tǐ)系結構的統一性始終非常明(míng)确。維持 API 體(tǐ)系結構的統一性,還(hái)需要有(yǒu)理(lǐ)論的支持,比如各種 GUI 模型,都是遵循基礎理(lǐ)論進行(xíng)設計(jì)的。這保證了開(kāi)發者在各種開(kāi)發工具之間(jiān)的思維統一,比如有(yǒu)了Windows GUI的開(kāi)發經驗後,再從事 Java Swing 開(kāi)發時(shí),也會(huì)得(de)心應手。
當前,WEB API 在體(tǐ)系結構的統一方面,還(hái)十分不足。既缺乏理(lǐ)論基礎,又缺少(shǎo)基本框架。顯得(de)非常散亂,即使同一個(gè)雲廠商的各種資源接口,也缺少(shǎo)合理(lǐ)的分類體(tǐ)系結構。開(kāi)發者面對這些(xiē) WEB API,很(hěn)難做(zuò)到了然于胸。如果能夠規劃出一個(gè)合理(lǐ)的體(tǐ)系結構,以雲計(jì)算(suàn)資源為(wèi)主幹,分門(mén)别類,第三方API都能在這個(gè)分類體(tǐ)系中找到相應的位置。開(kāi)發者在使用 WEB API時(shí),就能得(de)心應手了。
2、接口規範的統一
和(hé)傳統的 API 一樣,一套具備完善體(tǐ)系結構的 WEB API,也需要有(yǒu)統一的接口規範。讓開(kāi)發者有(yǒu)明(míng)确的标準,可(kě)以提高(gāo)溝通(tōng)和(hé)使用的效率。
3、交互方式的統一
最開(kāi)始提到網絡就是計(jì)算(suàn)機,互聯網、雲計(jì)算(suàn)的各種資源,需要協同工作(zuò)。WEB API 應該提供訂閱、監聽(tīng)、事件等機制(zhì),統一各資源之間(jiān)的交互方式。使整個(gè) API 體(tǐ)系互相關聯,成為(wèi)一個(gè)協同運作(zuò)的統一體(tǐ),不再是衆多(duō)分散存在的零部件。
4、安全保障的統一
和(hé)傳統API的最大(dà)不同,就是WEB API面臨着非常高(gāo)的安全需求。互聯網的開(kāi)放,使網絡資源和(hé)服務都面臨着巨大(dà)的風險。這是 WEB API 必須要解決的問題。各個(gè)雲計(jì)算(suàn)廠商和(hé)第三方WEB API開(kāi)發者,建立了一些(xiē)加密、鑒權等機制(zhì),但(dàn)是很(hěn)多(duō)都是分散實施的,有(yǒu)些(xiē)也提供了統一的訪問控制(zhì),比如阿裏雲的RAM。但(dàn)是在針對WEB API的安全保障方面,統一的程度、力度、透明(míng)度,以及抽象的層級似乎還(hái)遠遠不夠。依靠中心化保障安全機制(zhì)固然有(yǒu)必要,但(dàn)是否應該引入區(qū)塊鏈這樣的技(jì)術(shù)作(zuò)為(wèi)安全機制(zhì)的補充,也是一個(gè)需要考慮的問題。
三、軟件産業大(dà)規模協作(zuò)的前提
目前,軟件開(kāi)發領域技(jì)術(shù)協作(zuò)性不強,從阿裏雲API市場(chǎng)的交易量也可(kě)以看出。這是由于軟件産業起步較晚,成熟度不夠導緻的。而一些(xiē)成熟度較高(gāo)的産業,比如汽車(chē)制(zhì)造業,技(jì)術(shù)協作(zuò)十分廣泛,大(dà)量的零部件都是協作(zuò)生(shēng)産的。軟件産業要實現大(dà)規模協作(zuò),至少(shǎo)需要具備如下兩個(gè)條件:
1、繁榮的生(shēng)态
一個(gè)繁榮的生(shēng)态需要健全的基礎設施,WEB API領域的基礎設施包括數(shù)據、網絡資源和(hé)體(tǐ)系結構。随着雲計(jì)算(suàn)的發展普及,數(shù)據和(hé)網絡資源基本具備,當務之急是要建立統一的體(tǐ)系結構。這樣的體(tǐ)系結構,需要完善、有(yǒu)力的主幹支撐,必須有(yǒu)足夠規模和(hé)實力的企業投入資源,發揮主幹作(zuò)用,才有(yǒu)可(kě)能讓WEB API生(shēng)态繁榮起來(lái)。
2、系統準入和(hé)監管
軟件産業的技(jì)術(shù)協作(zuò)如果要打開(kāi)局面,還(hái)有(yǒu)兩件事情必須要做(zuò)。一是制(zhì)訂一些(xiē)技(jì)術(shù)标準,二是發放資質證書(shū)。傳統産業這兩件事做(zuò)得(de)很(hěn)好,基本都是政府在主導。這樣可(kě)以保障技(jì)術(shù)協作(zuò)的可(kě)靠性,因為(wèi)政府在制(zhì)訂标準和(hé)發放牌照的過程中,間(jiān)接承擔了擔保人(rén)的角色。而軟件産業的技(jì)術(shù)協作(zuò),政府卻沒有(yǒu)條件做(zuò)上(shàng)面的兩件事。這就需要有(yǒu)實力的企業來(lái)承擔這個(gè)角色,一方面對WEB API産品制(zhì)定一些(xiē)技(jì)術(shù)标準,比如文檔格式轉換類的,應提供什麽樣的接口,參數(shù)的類型、命名、響應的時(shí)間(jiān)等;另一方面,對符合标準的WEB API發放資質證明(míng),并對獲得(de)資質的産品進行(xíng)日常核查,确保其運行(xíng)狀态穩定,為(wèi)使用者提供充分可(kě)靠的服務。
WEB API已滲入到我們生(shēng)活、出行(xíng)、工作(zuò)的各環節,成為(wèi)了每個(gè)重要信息技(jì)術(shù)趨勢的核心內(nèi)容。移動設備、雲計(jì)算(suàn)、物聯網、大(dà)數(shù)據及社交網絡等應用都依賴于一個(gè)基于WEB的界面與它們的分布式組件進行(xíng)連接,為(wèi)全球範圍內(nèi)的各個(gè)商業領域提供具有(yǒu)創新性和(hé)颠覆性的解決方法。而WEB API的使用既是催化劑,也是促成這些(xiē)成果的主要力量。