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