超媒體是傳播、文化,社會是媒體、電信和計算的融合。這種融合是在三個部門采用數(shù)字技術(shù):音頻、視頻和超文本。越來越強大的個人計算機的發(fā)展使信息的一對一傳輸與一對一的交互和各種媒體的組合相結(jié)合。
正如軟件架構(gòu)師Irakli Nadareishvili所解釋的那樣,“超媒體是萬維網(wǎng)的制造問題。就像物理世界是由相互作用的基本粒子(玻色子和Fermions)構(gòu)建的,網(wǎng)絡(luò)本質(zhì)上是一個由無數(shù)相互作用的超媒體文檔組成的宇宙?!备R姷男g(shù)語超文本與超媒體密切相關(guān),大部分網(wǎng)絡(luò)由主要用超文本標記語言(HTML)編寫的網(wǎng)頁組成。但超媒體超越了超文本,這個詞表明不僅僅是文本,還能夠被超鏈接,如圖形、視頻和音樂文件。
因此,從本質(zhì)上講,超媒體只是我們在網(wǎng)絡(luò)上看到、聽到和互動的一切的另一個名稱。但自20世紀90年代初以來,超媒體的一般概念在大眾使用中在很大程度上被“交互式多媒體”一詞所取代。人們主要只是在軟件工程和建筑領(lǐng)域繼續(xù)談?wù)摮襟w。如今,該術(shù)語最常用于開發(fā)基于Web的應(yīng)用程序編程接口或API。
隨著軟件應(yīng)用程序和系統(tǒng)的復(fù)雜性不斷增長,越來越需要單個應(yīng)用程序中的不同組件——以及完全獨立的應(yīng)用程序——能夠簡單而清晰地相互通信。這種跨語言數(shù)據(jù)交換是API一直使用的用途,但各種API和用于編碼它們的語言可能差異很大,并且與單個軟件應(yīng)用程序本身一樣獨特。由Facebook開發(fā)的API和由Twitter開發(fā)的API可能無法相互很好地通信,開發(fā)人員通常必須對任何給定的API的獨特文檔進行排序,以弄清楚如何將其與自己的應(yīng)用程序一起使用。許多系統(tǒng)工程師和軟件開發(fā)人員認為,如果按照共享的商定結(jié)構(gòu),存在編寫API的通用格式,他們的工作會簡單得多。他們將網(wǎng)絡(luò)視為這種可能性的一個行之有效的例子。
但在我們進入超媒體使用戶友好的API的世界成為可能之前,一些上下文似乎很正常。超媒體的概念從何而來?它與超媒體API的想法有什么關(guān)系?
長話短說,超鏈接和超媒體的原始概念通常歸功于20世紀著名的美國工程師Vannevar Bush,他1945年在《大西洋》上的文章《As We May Think》闡述了他對“memex”的想法,這是一種機械桌面信息檢索工具,允許用戶通過非線性關(guān)聯(lián)快速索引和訪問大量信息存儲。布什的愿景有效地描述了我們現(xiàn)在與網(wǎng)絡(luò)關(guān)聯(lián)的非順序瀏覽和超鏈接功能,他的預(yù)言性文章繼續(xù)被世界各地的計算機科學(xué)學(xué)生閱讀。但直到近二十年后,即1963年,實際的“超文本”和“超媒體”這兩個詞才首次被創(chuàng)造出來。
受布什文章的啟發(fā),一位名叫泰德·納爾遜的有遠見的IT工程師開始在工作中使用這些術(shù)語,并最終在他1965年的文章《復(fù)雜信息處理:復(fù)雜、變化和不確定的文件結(jié)構(gòu)》中發(fā)表了這些術(shù)語。他寫道:“紙張系統(tǒng)在組織或提出想法方面有嚴重的局限性……然而,有了計算機驅(qū)動的顯示和大容量內(nèi)存,可以為教育和享受創(chuàng)造一種新的、可讀的媒介……讓我介紹“超文本”一詞,意思是以如此復(fù)雜的方式相互關(guān)聯(lián)的書面或圖片材料,以至于無法在紙上方便地呈現(xiàn)或表示?!?/p>
三年后,在1968年12月9日著名的“所有演示之母”上,計算機工程師道格拉斯·恩格爾巴特展示了一個工作計算機系統(tǒng),該系統(tǒng)具有我們今天在個人電腦中期望的所有陷阱——包括導(dǎo)航鼠標、圖形用戶界面(GUI)、多個應(yīng)用程序窗口和可點擊的超文本鏈接。那天在舊金山,布什和納爾遜對網(wǎng)絡(luò)超媒體的愿景明顯地誕生了。
快進到1990年12月,Tim Berners-Lee在概述他的“WorldWideWeb(W3)”項目一年后,通過他的超文本傳輸協(xié)議(HTTP)成功通過互聯(lián)網(wǎng)傳輸數(shù)據(jù),通過超文本鏈接訪問由他的HTML代碼組成的多個文檔?!俺谋尽痹?992年解釋說,“是一種鏈接和訪問各種信息的方式,作為用戶可以隨時瀏覽的節(jié)點網(wǎng)?!?/p>
到2000年,Berners-Lee編織的網(wǎng)絡(luò)已經(jīng)真正覆蓋了世界,其領(lǐng)先的先驅(qū)之一Roy Fielding——他幫助編寫了Berners-Lee開始的初始HTTP規(guī)范——正忙于在加州大學(xué)歐文分校完成他的博士論文。在他的論文第5章中,菲爾丁創(chuàng)造了一個術(shù)語,該術(shù)語今天繼續(xù)在關(guān)于Web服務(wù)和API的所有討論中回響。該術(shù)語是“REST”,代表代表狀態(tài)轉(zhuǎn)移。Fielding認為 REST 是定義“分布式超媒體系統(tǒng)”,特別是萬維網(wǎng)的建筑風(fēng)格和結(jié)構(gòu)的一種方式。用他的話說,“REST忽略了組件實現(xiàn)和協(xié)議語法的細節(jié),以專注于組件的作用,它們與其他組件交互的限制,以及它們對重要數(shù)據(jù)元素的解釋?!睋Q句話說,它是Web和HTTP工作方式的元視圖。許多(但不是全部)嚴重依賴HTTP的API可以被認為是“RESTful”,REST通常被用作讀取和寫入Web服務(wù)和API的替代樣式,以及SOAP(簡單對象訪問協(xié)議)、WSDL(Web服務(wù)描述語言)和RPC(遠程過程調(diào)用)等編程標準。最重要的是,由于REST API幾乎總是使用HTTP語法——包括動詞GET、PUT、POST等——它們被廣泛認為是超媒體API的最終形式。
超媒體驅(qū)動應(yīng)用程序架構(gòu)的核心思想是,通過將應(yīng)用程序的各個部分鏈接在一起,可以創(chuàng)建一個更易于發(fā)現(xiàn)、擴展和維護的系統(tǒng)。這種架構(gòu)的關(guān)鍵優(yōu)點包括靈活性、標準化和與任何給定服務(wù)的松散耦合。這意味著對系統(tǒng)的更改和擴展可以更容易地進行,而不會對現(xiàn)有功能產(chǎn)生負面影響。
超媒體使您的API更加靈活:您可以更無縫地添加新功能-使您的用戶立即可用。它還使您能夠更改API的某些方面(即更改資源,需要額外的GET參數(shù)),而不必破壞用戶正確實現(xiàn)的向后兼容性。
超媒體是最佳實踐:超媒體的亮點在于它能夠創(chuàng)建一個靈活的API,該API根據(jù)您的架構(gòu)而不是他們自己的架構(gòu)為開發(fā)人員提供動態(tài)數(shù)據(jù)。本質(zhì)上,它為開發(fā)人員提供了一個快捷方式,允許他們充分利用您的API,而不必完全依賴文檔和編寫規(guī)則,這些規(guī)則可能與您的應(yīng)用程序中的規(guī)則一致,也可能不一致。
超媒體在API方面經(jīng)常被誤解,但本質(zhì)上它的功能與網(wǎng)頁上的鏈接完全相同。雖然這項技術(shù)既受到贊揚又受到批評,但它確實提供了一系列短期和長期收益。我相信,您的