免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Mashups:Web 應(yīng)用程序新成員

級別: 初級

Duane Merrill (duane@duanemerrill.com), 自由作家, Freelance

2006 年 8 月 31 日

Mashup 是一種令人興奮的交互式 Web 應(yīng)用程序,它利用了從外部數(shù)據(jù)源檢索到的內(nèi)容來創(chuàng)建全新的創(chuàng)新服務(wù)。它們具有第二代 Web 應(yīng)用程序的特點,也稱為 Web 2.0。這篇簡介性的文章對 mashup 是什么、目前流行的不同種類的 mashup 以及 mashup 開發(fā)人員用于創(chuàng)建自己的應(yīng)用程序的支持技術(shù)進行了探索。另外,您還將看到 mashup 開發(fā)人員面臨的一些新的技術(shù)和社會挑戰(zhàn)。

簡介

一種新型的基于 Web 的數(shù)據(jù)集成應(yīng)用程序正在 Internet 上逐漸興起。通常用術(shù)語 mashup 表示,它們的流行萌芽于對交互式用戶參與和集成第三方數(shù)據(jù)的類似于科學(xué)怪人方式的重視。我們使用萌芽一詞是有一定原因的;mashup Web 站點的特點就表現(xiàn)為它正在 Web 上扎根發(fā)芽,它們利用了從組織邊界之外的數(shù)據(jù)源獲取的內(nèi)容和功能。

mashup 這種隱晦的數(shù)據(jù)集成定義當然不是非常嚴格。要深入了解什么是 mashup,就應(yīng)該了解一下這個單詞的起源:它源于流行音樂,mashup 是從兩首不同的歌曲(通常屬于不同的流派)中混合演唱和樂器的音軌而構(gòu)成的一首新歌。與那些 “bastard pop” 歌曲類似,mashup 也是內(nèi)容的一種不常見的創(chuàng)新組合(通常都源自于無關(guān)的數(shù)據(jù)源),這都是人工進行合成的(而不是通過計算機來合成的)。

那么,mashup 看起來到底是什么樣子呢?ChicagoCrime.org 的 Web 站點上有非常直觀的例子,它解釋了地圖 mashup 到底是什么。最初廣泛流行起來的 mashup 之一是一個 Web 站點,它將芝加哥警局在線數(shù)據(jù)庫中的犯罪記錄與 Google Maps 上的地圖復(fù)合在一起。用戶可以與 mashup 站點進行交互,例如告訴它在圖形界面上顯示一個包含圖釘?shù)牡貓D,圖釘展示南加州最近所有入室搶劫案件的詳細信息。這種概念和呈現(xiàn)方式非常簡單,犯罪和地圖數(shù)據(jù)復(fù)合之后提供的可視化的功能非常強大。

Mashup 流派 中,我們探索了流行的 mashup,包括地圖 mashup。相關(guān)技術(shù) 簡要介紹了與 mashup 的構(gòu)建和操作有關(guān)的技術(shù)前景。技術(shù)挑戰(zhàn)社會挑戰(zhàn) 分別介紹了影響 mashup 的主要技術(shù)挑戰(zhàn)和社會挑戰(zhàn)。

Mashup 類型

在本節(jié)中,我們將簡要介紹對出名的 mashup 類型進行的一些調(diào)查。

地圖 mashup

在這個階段的信息技術(shù)中,人們搜集大量有關(guān)事物和行為的數(shù)據(jù),二者都常常具有位置注釋信息。所有這些包含位置數(shù)據(jù)的不同數(shù)據(jù)集均可利用地圖通過令人驚奇的圖形化方式呈現(xiàn)出來。mashup 蓬勃發(fā)展的一種主要動力就是 Google 公開了自己的 Google Maps API。這仿佛打開了一道大門,讓 Web 開發(fā)人員(包括愛好者、修補程序開發(fā)人員和其他一些人)可以在地圖中包含所有類型的數(shù)據(jù)(從原子彈災(zāi)難到波士頓的 CowParade 奶牛都可以)。為了不落于人后,Microsoft(Virtual Earth)、Yahoo(Yahoo Maps)和 AOL(MapQuest)也很快相繼公開了自己的 API。

視頻和圖像 mashup

圖像主機和社交網(wǎng)絡(luò)站點(例如 Flickr 使用自己的 API 來共享圖像)的興起導(dǎo)致出現(xiàn)了很多有趣的 mashup。由于內(nèi)容提供者擁有與其保存的圖像相關(guān)的元數(shù)據(jù)(例如誰拍的照片,照片的內(nèi)容是什么,在何時何地拍攝的等等),mashup 的設(shè)計者可以將這些照片和其他與元數(shù)據(jù)相關(guān)的信息放到一起。例如,mashup 可以對歌曲或詩詞進行分析,從而將相關(guān)照片拼接在一起,或者基于相同的照片元數(shù)據(jù)(標題、時間戳或其他元數(shù)據(jù))顯示社交網(wǎng)絡(luò)圖。另外一個例子可能以一個 Web 站點(例如 CNN 之類的新聞?wù)军c)作為輸入,并在新聞中通過照片匹配而將照片中的內(nèi)容以文字的形式呈現(xiàn)出來。

搜索和購物 mashup

搜索和購物 mashup 在 mashup 這個術(shù)語出現(xiàn)之前就已經(jīng)存在很長時間了。在 Web API 出現(xiàn)之前,有相當多的購物工具,例如 BizRate、PriceGrabber、MySimon 和 Google 的 Froogle,都使用了 B2B 技術(shù)或屏幕抓取的方式來累計相關(guān)的價格數(shù)據(jù)。為了促進 mashup 和其他有趣的 Web 應(yīng)用程序的發(fā)展,諸如 eBay 和 Amazon 之類的消費網(wǎng)站已經(jīng)為通過編程訪問自己的內(nèi)容而發(fā)布了自己的 API。

新聞 mashup

新聞源(例如紐約時報、BBC 或路透社)已從 2002 年起使用 RSS 和 Atom 之類的聯(lián)合技術(shù)來發(fā)布各個主題的新聞提要。以聯(lián)合技術(shù)為基礎(chǔ)的 mashup 可以聚集一名用戶的提要,并將其通過 Web 呈現(xiàn)出來,創(chuàng)建個性化的報紙,從而滿足讀者獨特的興趣。Diggdot.us 正是這樣的一個例子,它合并了 Digg.com、Slashdot.org 和 Del.icio.us 上與技術(shù)有關(guān)的內(nèi)容。





回頁首


相關(guān)技術(shù)

本節(jié)概要介紹了可以促進 mashup 發(fā)展的技術(shù)。有關(guān)這些技術(shù)的更多信息,請參閱本文最后的 參考資料。

架構(gòu)

mashup 程序從架構(gòu)上是由 3 個不同的部分組成的,它們在邏輯上和物理上都是相互脫離的(可能由網(wǎng)絡(luò)和組織邊界分隔):API/內(nèi)容提供者、mashup 站點和客戶機的 Web 瀏覽器。

  • API/內(nèi)容提供者。它們是(有時是未知的)正在進行融合的內(nèi)容的提供者。在 ChicagoCrime.org mashup 的例子中,提供者是 Google 和芝加哥警察局。為了方便數(shù)據(jù)的檢索,提供者通常會將自己的內(nèi)容通過 Web 協(xié)議對外提供(例如 REST、Web 服務(wù)和 RSS/Atom,稍后將加以介紹)。然而,很多有趣的潛在數(shù)據(jù)源可能并沒有方便地對外提供 API。從諸如 Wikipedia、TV Guide 和所有政府和公共領(lǐng)域的 Web 站點上提取內(nèi)容的 mashup 都是通過一種稱為屏幕抓?。╯creen scraping) 的技術(shù)實現(xiàn)的。 在這種情況中,屏幕抓取就意味著使用一種工具從內(nèi)容提供者那里提取信息的過程,這個工具會嘗試對提供者的專為閱讀而設(shè)計的頁面進行分析。
  • mashup 站點。即 mashup 所在的地方。非常有趣的是,這不過是因為這里是 mashup 邏輯所在的地方,而不是執(zhí)行這些邏輯的地方。從一方面來說,mashup 可以直接使用服務(wù)器端動態(tài)內(nèi)容生成技術(shù)(例如 Java servlets、CGI、PHP 或 ASP)實現(xiàn)為類似傳統(tǒng) Web 應(yīng)用程序。

    另外,合并內(nèi)容可以直接在客戶機的瀏覽器中通過客戶機端腳本(即 JavaScript)或 applet 生成。這種客戶機端的邏輯通常都是直接在 mashup 的 Web 頁面中嵌入的代碼與這些 Web 頁面引用的腳本 API 庫或 applet(由內(nèi)容提供者提供)的組合。mashup 使用的這種方法可以稱為胖 Internet 應(yīng)用程序(RIA),這意味著它們是以交互式用戶體驗為導(dǎo)向的。(胖 Internet 應(yīng)用程序具有 “Web 2.0” 的一個特點,Web 2.0 是 WWW 的新一代服務(wù)。)客戶機端進行數(shù)據(jù)集成的優(yōu)點包括:對 mashup 服務(wù)器的所產(chǎn)生的負載較輕(數(shù)據(jù)可以直接從內(nèi)容提供者那里傳送過來)、具有更好無縫用戶體驗(頁面可以請求對內(nèi)容的一部分進行更新,而不用刷新整個頁面)。Google Maps API 的設(shè)計就是為了通過瀏覽器端的 JavaScript 進行訪問,這是客戶機端技術(shù)的一個例子。

    通常,mashup 都使用服務(wù)器和客戶機端邏輯的組合來實現(xiàn)自己的數(shù)據(jù)集成。很多 mashup 應(yīng)用程序都使用了直接由用戶提供的數(shù)據(jù),(至少)使一個數(shù)據(jù)集是本地的。另外,對多數(shù)據(jù)源的數(shù)據(jù)執(zhí)行復(fù)雜查詢(例如 “請顯示在 Kevin Bacon 的電影中出演角色的男演員所購買的房產(chǎn)的平均價格”)所需要的計算是不可能在客戶機的 Web 瀏覽器中執(zhí)行的。

  • 客戶機的 Web 瀏覽器。這是以圖形化的方式呈現(xiàn)應(yīng)用程序的地方,也是用戶交互發(fā)生的地方。正如上面介紹的一樣,mashup 通常都使用客戶機端的邏輯來構(gòu)建合成內(nèi)容。

Ajax

關(guān)于 Ajax 究竟是否是一個縮寫詞(有人認為它表示 “Asynchronous JavaScript + XML”)還存在爭論。不論如何,Ajax 都是一個 Web 應(yīng)用模型,而不是一種特定的技術(shù)。它包括幾種關(guān)注內(nèi)容的異步加載和呈現(xiàn)的技術(shù):

  • XHTML 和用于確定呈現(xiàn)風(fēng)格的 CSS
  • 瀏覽器為動態(tài)顯示和交互所提供的文檔對象模型(DOM)API
  • 異步數(shù)據(jù)交換,通常是 XML 數(shù)據(jù)
  • 瀏覽器端的腳本,主要是 JavaScript

將這些技術(shù)結(jié)合在一起使用時,它們的目標是通過與內(nèi)容服務(wù)器交換少量的數(shù)據(jù)為用戶創(chuàng)造平滑、良好的 Web 體驗,而不用在用戶執(zhí)行某些操作之后重新加載并重新呈現(xiàn)整個頁面。我們可以使用各種 Ajax 工具包和庫(例如 Sajax 或 Zimbra)為 mashup 構(gòu)建 Ajax 引擎,這通常是使用 JavaScript 實現(xiàn)的。Google Maps API 包括一個專用的 Ajax 引擎,它對用戶體驗的影響著實強大:它的工作方式類似于一個真正的本地應(yīng)用程序,其中沒有滾動條可以操作,也沒有移動按鈕強制頁面重新加載。

Web 協(xié)議:SOAP 和 REST

SOAP 和 REST 都是與遠程服務(wù)進行通信所使用的與平臺無關(guān)的協(xié)議。作為面向服務(wù)的架構(gòu)范式的一部分,客戶機使用 SOAP 和 REST 與遠程服務(wù)進行交互,而不用了解它們底層的平臺實現(xiàn):服務(wù)的功能完全是由它請求和收到的顯影消息描述來實現(xiàn)的。

SOAP 是 Web 服務(wù)范式中的一種基本技術(shù)。最初它是 Simple Object Access Protocol 的縮寫,現(xiàn)在代表 Services-Oriented Access Protocol(或直接縮寫為 SOAP),這是因為它的重點已經(jīng)從基于對象的系統(tǒng)轉(zhuǎn)向消息交換的交互操作。SOAP 規(guī)范中有兩個關(guān)鍵組件。第一個組件是使用 XML 消息格式進行平臺無關(guān)的編碼,第二個組件消息結(jié)構(gòu),包括消息頭和消息體。消息頭用來交換非特定于應(yīng)用負載(消息體)的相關(guān)信息,例如認證信息。SOAP 消息體封裝了應(yīng)用程序特有的負載。Web 服務(wù)的 SOAP API 是由 WSDL 文檔來描述的,它們本身都描述了一個服務(wù)對外提供哪些操作,它可以接受的消息格式(使用 XML Schema),以及如何對其進行尋址。SOAP 消息通常都是通過 HTTP 協(xié)議傳送的,不過也可以通過其他方式傳送(例如 JMS 或 e-mail)。

REST 是 Representational State Transfer 的縮寫,這是一種只使用 HTTP 和 XML 進行基于 Web 通信的技術(shù)。它的簡單性和缺少嚴格配置文件的特性使它與 SOAP 很好地隔離開來,并且吸引了大家廣泛的興趣。與我們在現(xiàn)代變成語言中可以找到的典型基于動詞的接口不同(它們構(gòu)成了各種方法,例如 getEmployee()、addEmployee()、listEmployees() 等)不同,REST 從根本上來說只支持幾個操作(即 POST、GET、PUT、DELETE),這些操作適用于所有的消息。REST 強調(diào)信息本身,稱為資源。例如,一個員工的資源記錄是由 URI 標識的,這可以通過一個 GET 方法獲得,并使用一個 PUT 操作進行更新,等等。使用這種方法,REST 就與文檔文本風(fēng)格的 SOAP 服務(wù)非常類似。

屏幕抓取

正如前面介紹的一樣,缺乏內(nèi)容提供者提供的 API 通常會強制要求 mashup 開發(fā)人員采取屏幕抓取的方式來提取自己希望集成的信息。抓?。⊿craping) 是使用軟件工具處理并分析最初為人們閱讀而編寫的內(nèi)容,從而從中提取出可以通過編程進行使用和操作的信息的語義數(shù)據(jù)結(jié)構(gòu)表示。有些 mashup 使用屏幕抓取技術(shù)來獲取數(shù)據(jù),特別是從公用領(lǐng)域提取數(shù)據(jù)。例如,房地產(chǎn)地圖 mashup 就可以在制圖供應(yīng)商提供的地圖上顯示售價和租價,這些數(shù)據(jù)可能是從當?shù)氐挠涗涋k公室抓取來的 “comp” 數(shù)據(jù)。另外一個抓取數(shù)據(jù)的 mashup 項目是 XMLTV,這是一組匯聚了各地電視節(jié)目清單的工具集。

屏幕抓取通常被認為是一個不雅的解決方案,這是有一定的原因的。它有兩個主要的固有缺點。第一個缺點在于,與使用接口的 API 不同,抓取在內(nèi)容提供者和內(nèi)容消費者之間沒有明確的聯(lián)系。抓取者必須圍繞一個源內(nèi)容模型設(shè)計自己的工具,并且希望提供者一直采用這種模型來呈現(xiàn)內(nèi)容。Web 站點傾向于周期性地更新外觀,以保持新穎和時髦,對于抓取者來說,這是一項非常頭痛的維護任務(wù),因為工具很可能會失效。

第二個問題是缺少成熟的可重用屏幕抓取工具包軟件,通俗地說就稱為 scrAPI。此類 API 和工具包的消亡很大程度上是由于每種抓取工具都有極為特定于應(yīng)用程序的需求。這為開發(fā)人員帶來了過多的開發(fā)工作,他們必須對內(nèi)容進行反向工程處理、開發(fā)數(shù)據(jù)模型、分析并從提供者站點上匯集原始數(shù)據(jù)。

語義 Web 和 RDF

屏幕抓取不好的一面直接源自于一個事實:為閱讀而創(chuàng)建的內(nèi)容并不太適合機器自動處理。這促進了語義 Web 的誕生,它是現(xiàn)有 Web 的增強版本,在為人們設(shè)計的內(nèi)容中增加了足夠多的可供機器閱讀的信息。在語義 Web 環(huán)境中,信息這個術(shù)語與數(shù)據(jù)有所差異;數(shù)據(jù)只有在傳達了自己的含義(即數(shù)據(jù)可被理解)之后才會變成信息。語義 Web 的目標是創(chuàng)建 Web 基礎(chǔ)設(shè)施,使用元數(shù)據(jù)對數(shù)據(jù)進行增強,從而使數(shù)據(jù)變得有意義,最終使數(shù)據(jù)變得適合進行自動化、集成、推理和重用。

被稱為資源描述框架(RDF)的 W3C 系列規(guī)范就是服務(wù)于這個目的的技術(shù),它用來建立描述數(shù)據(jù)的語義結(jié)構(gòu)。XML 本身并不足以實現(xiàn)這種功能;它太過隨意,我們可以使用很多方法進行編碼來對相同的數(shù)據(jù)進行描述。RDF-Schema 補充了 RDF 的能力,提供了以機器可讀的方式編碼概念的功能。一旦可通過一種數(shù)據(jù)模型描述數(shù)據(jù)對象,RDF 就提供了通過主語-謂語-對象三元組(主語 S 與對象 O 具有關(guān)系 R)在數(shù)據(jù)對象之間構(gòu)建關(guān)系的能力。數(shù)據(jù)模型與關(guān)系圖之間的區(qū)別讓我們可以進行存在式的構(gòu)建,這是可以進行搜索和形式化推理的知識的層次化結(jié)構(gòu)。例如,我們可以定義這樣一個模型:“肉食動物” 是 “動物” 的一個子類,條件是它 “吃” 其他 “動物”;并創(chuàng)建兩個實例:一個實例是印度豹和北極熊,并提供它們的生存環(huán)境;另外一個是瞪羚和企鵝,并提供它們的生存環(huán)境。假設(shè)我們將這些單獨的模型實例集成在一起,就可以推論說印度豹可能會以瞪羚為食,但卻不會吃企鵝。

RDF 數(shù)據(jù)在很多領(lǐng)域中都迅速得到了應(yīng)用,包括社交網(wǎng)絡(luò)應(yīng)用程序(例如 FOAF —— Friend of a Friend)和聯(lián)合(例如 RSS,接下來就會介紹)。另外,RDF 軟件技術(shù)和組件都正在成熟到一定規(guī)模,尤其是在 RDF 查詢語言(例如 RDQL 和 SPARQL)、編程框架和推理引擎(例如 Jena 和 Redland)領(lǐng)域。

RSS 和 ATOM

RSS 是一系列基于 XML 的聯(lián)合格式。在這種情況中,聯(lián)合(syndication)是指一個發(fā)布內(nèi)容的 Web 站點可以創(chuàng)建 RSS 文檔并在 RSS 發(fā)布系統(tǒng)中注冊自己的文檔。支持 RSS 的客戶機可以查看新內(nèi)容,并通過適當?shù)姆绞竭B接到這些內(nèi)容上。RSS 已經(jīng)被用來聯(lián)合廣泛的內(nèi)容,從新聞到頭條、CVS 或 WIKI 頁面的修改日志、項目更新甚至諸如無線電節(jié)目之類的視聽數(shù)據(jù)。版本 1.0 基于 RDF,但最新的 2.0 版本不以 RDF 為基礎(chǔ)。

Atom 是一種更新但非常類似的聯(lián)合協(xié)議。它是 Internet Engineering Task Force(IETF)提出的一項草案標準,人們希望通過 Atom 提供比 RSS 更好的元數(shù)據(jù)維護;提供更好、更為全面的文檔,并結(jié)合構(gòu)建通用數(shù)據(jù)表示的概念。

這些聯(lián)合技術(shù)對于集成基于事件或更新驅(qū)動內(nèi)容的 mashup 來說都非常有用,例如新聞和 weblog 聚集程序。





回頁首


技術(shù)挑戰(zhàn)

與其他數(shù)據(jù)集成領(lǐng)域一樣,mashup 開發(fā)也充斥著許多亟待解決的技術(shù)挑戰(zhàn),隨著 mashup 應(yīng)用程序特性和功能的進一步豐富,這種挑戰(zhàn)也變得更加嚴峻。本節(jié)簡單介紹了一些挑戰(zhàn),其中有些挑戰(zhàn)目前已經(jīng)能夠解決或緩解,而其他問題依然沒有解決。

數(shù)據(jù)集成挑戰(zhàn):語義和數(shù)據(jù)的品質(zhì)

品質(zhì)調(diào)查顯示,當今的企業(yè) IT 首要關(guān)注的問題就是是企業(yè)虛擬組織中的數(shù)據(jù)集成。(在這種情況中,我們使用了 虛擬組織(virtual organization) 這個術(shù)語表示很多聯(lián)合業(yè)務(wù)單元的組合,每個業(yè)務(wù)單元都包含在自己的管理域中。)與很多發(fā)現(xiàn)自己忙于集成傳統(tǒng)數(shù)據(jù)源的企業(yè) IT 管理人員一樣(例如,創(chuàng)建可以反映當前業(yè)務(wù)狀況的企業(yè)儀表板),mashup 開發(fā)人員需要面對類似源自于在異構(gòu)數(shù)據(jù)集之間共享語義的挑戰(zhàn)。因此,要了解 mashup 開發(fā)人員是如何為此作出準備,只需了解企業(yè) IT 所面臨的集成挑戰(zhàn)。

例如,我們必須設(shè)計數(shù)據(jù)模型之間的轉(zhuǎn)換系統(tǒng)。在將數(shù)據(jù)轉(zhuǎn)換成通用的格式時、在映射不完整時(例如,一個數(shù)據(jù)源可能有一個模型,其中一個地址類型包含了一個國家字段,而另外一個模型中沒有這個字段),我們必須進行一些合理的假設(shè)。盡管已經(jīng)面臨這些挑戰(zhàn),但是 mashup 開發(fā)人員可能并不是源數(shù)據(jù)模型領(lǐng)域的專家,因為這些模型可能是第三方的產(chǎn)品,這些合理的假設(shè)可能并不直觀清晰,這更加劇了挑戰(zhàn)的嚴峻性。

除了缺少數(shù)據(jù)和映射不完整之外,mashup 設(shè)計者可能會發(fā)現(xiàn)他們希望集成的數(shù)據(jù)并不適合進行機器自動化處理;這將帶來很多凈化工作。例如,執(zhí)法逮捕記錄可能不一致:記錄中可能為名字使用了常用的縮寫形式(例如,一條記錄中使用的是“mkt sqr”,另外一條記錄中使用的是“Market Square”),這使得關(guān)于等同性的自動推理變得非常困難,即使采用很好的啟發(fā)式規(guī)則也很難實現(xiàn)。語義建模技術(shù),例如 RDF,可以幫助簡化對不同數(shù)據(jù)集之間自動進行推理所面臨的問題,這些數(shù)據(jù)集是內(nèi)嵌在數(shù)據(jù)存儲介質(zhì)中的。對于傳統(tǒng)的數(shù)據(jù)源來說,通常需要投入大量人力物力,進行分析和數(shù)據(jù)凈化工作,然后才能將其用于語義建模技術(shù)。

mashup 開發(fā)人員可能還必須面對 IT 集成管理人員不需要面對的一些問題,其中一個問題是數(shù)據(jù)污染。作為應(yīng)用程序設(shè)計的一部分,很多 mashup 都要求公共用戶提供輸入。wiki 應(yīng)用程序領(lǐng)域的研究表明,這是一把雙刃劍:它可能非常強大,因為可以提供開放的貢獻和最佳的數(shù)據(jù)革新,但這又會導(dǎo)致不一致、不正確或容易產(chǎn)生誤導(dǎo)的數(shù)據(jù)項。后者可能會危及數(shù)據(jù)的可信度,最終降低 mashup 帶來的價值。

mashup 開發(fā)人員需要面對的另外一種集成問題是由于獲取數(shù)據(jù)必須采用屏幕抓取技術(shù)而引起的。正如上一節(jié)所討論的一樣,分析和獲取工具以及數(shù)據(jù)模型都需要大量與反向工程相關(guān)的工作。在最理想的情況下,可以創(chuàng)建這些工具和模型,但依然存在一個問題:源站點如何呈現(xiàn)自己的內(nèi)容,這可能會破壞集成過程,并導(dǎo)致 mashup 應(yīng)用程序出錯。

組件挑戰(zhàn)

盡管 Web 開發(fā)的 Ajax 模型可以比傳統(tǒng)的整個頁面刷新技術(shù)提供更為豐富而且更加無縫的用戶體驗,但是也帶來了一些難題。作為基礎(chǔ)來說,Ajax 要求將瀏覽器的客戶端腳本功能與自己的 DOM 配合使用,實現(xiàn)一種內(nèi)容交付方法,這完全是由瀏覽器設(shè)計者所設(shè)想的。(可能 Ajax 類似于黑客的特性增加了它的吸引力。)然而,這使基于 Ajax 的應(yīng)用程序具有相同的瀏覽器兼容問題,這些問題從微軟開發(fā) Internet Explorer 以來就一直困擾著 Web 開發(fā)人員。例如,Ajax 引擎利用了一個 XMLHttpRequst 對象來與遠程服務(wù)器異步交換數(shù)據(jù)。在 Internet Explorer 6 中,這個對象是使用 ActiveX 實現(xiàn)的,而不是使用本地 JavaScript 實現(xiàn)的,這要求必須啟用 ActiveX。

更加基本的一個需求是 Ajax 要求必須在用戶的瀏覽器上啟用 JavaScript。這對于大部分人來說可能是一個合理的假設(shè),但是對于某些特定的用戶,他們的瀏覽器或自動化工具可能不支持 JavaScript,也可能沒有啟用對 JavaScript 的支持。這種工具有 robot、spider 和 為 Internet 和 Intranet 搜索引擎搜集信息的 Web 爬行榜。如果沒有功能方面的讓步,基于 Ajax 的 mashup 應(yīng)用程序也可能會發(fā)現(xiàn)自己失去了部分用戶群,搜索引擎的吸引力也會降低。

使用 JavaScript 來異步更新頁面中的內(nèi)容還會產(chǎn)生用戶界面的問題。由于內(nèi)容不再需要鏈接到瀏覽器地址欄中的 URL 上,用戶可能無法體驗到正常使用瀏覽器的 BACK 按鈕或書簽時的功能。另外,盡管 Ajax 可以通過請求增量內(nèi)容更新來減少延時,但不好的設(shè)計可能會對用戶體驗造成負面影響,例如當更新粒度非常小時,所更新的數(shù)量和負載會占據(jù)所有的可用資源。另外,在加載界面或更新內(nèi)容時,我們還需要關(guān)心如何為用戶提供支持(例如,使用諸如進度條之類的可視化反饋技術(shù))。

與任何分布式交叉領(lǐng)域的應(yīng)用程序一樣,mashup 開發(fā)人員和內(nèi)容提供者同樣也需要解決一些安全性問題。身份的概念可能會成為一個棘手的主題,傳統(tǒng) Web 主要是為匿名訪問而構(gòu)建的。單點登錄是一種令人滿意的特性,但在這方面存在多種彼此競爭的技術(shù)(從 Microsoft Passport 到 Liberty Alliance),因此可能會導(dǎo)致產(chǎn)生雜亂的身份命名空間,我們必須對之進行集成。內(nèi)容供應(yīng)商可能會在自己的 API 中采用身份驗證和授權(quán)模式(這需要安全身份或安全確認屬性的概念)來強制采用涉及付費訂閱或敏感數(shù)據(jù)的業(yè)務(wù)模型。敏感數(shù)據(jù)也可能要求一定的機密性(即加密),我們必須要清楚何時將它們與其他資源集成在一起,而不會帶來風(fēng)險。身份對于審計和法規(guī)遵從性來說也非常重要。另外,由于數(shù)據(jù)集成是在服務(wù)器和客戶端同時發(fā)生的,因此從用戶到 mashup 服務(wù)進行的身份和證書委托也可能會成為一個需求。





回頁首


社會挑戰(zhàn)

除了上一節(jié)介紹的技術(shù)挑戰(zhàn)之外,隨著 mashup 的進一步普及,也出現(xiàn)了(或即將出現(xiàn))一些社會問題。

mashup 開發(fā)人員需要面對的一個最嚴重的社會問題就是:在知識產(chǎn)權(quán)的保護和消費者的私密性與公用化以及信息的自由流動之間達成一種平衡。不知情的內(nèi)容提供者(屏幕抓取的目標)、提供 API 來幫助數(shù)據(jù)檢索的內(nèi)容提供者都可能需要確定其內(nèi)容是否正在被他人以未獲得自己批準的方式使用。有關(guān) Web 聚合和規(guī)則的介紹,請參見 參考資料。

mashup Web 應(yīng)用程序仍然處于萌芽階段,只是有一些開發(fā)愛好者在業(yè)余時間編寫 mashup。這些開發(fā)人員可能并沒有意識到(或不關(guān)心)安全性之類的問題。另外,內(nèi)容供應(yīng)者也只是剛剛開始看到為基于機器的內(nèi)容訪問提供 API 的價值所在,而且還有很多人不認為這是一個核心業(yè)務(wù)關(guān)注點。這一切結(jié)合在一起,導(dǎo)致目前的軟件質(zhì)量低下,因為諸如測試和品質(zhì)保證等工作的優(yōu)先級都要低于概念驗證和創(chuàng)新的優(yōu)先級。為促進軟件開發(fā)過程的成熟,社區(qū)必須作為一個整體協(xié)同工作,制定開放標準和可重用的工具包。

在 mashups 可以從一種炫酷的玩具變成程序的應(yīng)用程序之前,還需要做大量的工作,形成高度健壯的標準、協(xié)議、模型和工具包。為此,主要的軟件開發(fā)業(yè)界先驅(qū)、內(nèi)容提供者和企業(yè)家必須認識到 mashup 的價值,它意味著可行的商業(yè)模型。API 提供者需要確定是否對自己的內(nèi)容收取費用,如果需要收取費用,應(yīng)該怎樣收費(例如,通過訂閱還是按使用次數(shù)收費)。或許他們將提供不同級別的服務(wù)品質(zhì)。有些市場提供者,例如 eBay 或 Amazon,可能會發(fā)現(xiàn)免費 API 將提高產(chǎn)品周轉(zhuǎn)。mashup 開發(fā)人員可能要尋求一種基于廣告的創(chuàng)收模型,或者構(gòu)建有趣的 mashup 應(yīng)用程序贏得人們的認同。





回頁首


結(jié)束語

mashup 的確是一種相當新穎的 Web 應(yīng)用程序。源于語義 Web 領(lǐng)域的數(shù)據(jù)建模技術(shù)和松耦合、面向服務(wù)、與平臺無關(guān)的通信協(xié)議相結(jié)合,最終將提供一種開發(fā)可充分利用并整合大量 Web 信息的應(yīng)用程序所必需的基礎(chǔ)設(shè)施。隨著 mashup 應(yīng)用程序越來越多地被人們所關(guān)注,了解它將對某些社會問題(例如公共使用和知識產(chǎn)權(quán)保護之間的問題)和其他應(yīng)用程序領(lǐng)域(跨組織邊界集成數(shù)據(jù),例如網(wǎng)格計算和 B2B 的工作流管理)產(chǎn)生怎樣影響,這一點非常有趣。

要深入了解 mashup 的開發(fā),請關(guān)注 developerWorks 的系列新教程,它將教您構(gòu)建自己的 mashup。實際上,這個系列的文章還會向您介紹語義 Web 技術(shù)和使其他人創(chuàng)建自己的 mashup 的現(xiàn)有技術(shù)。



參考資料

學(xué)習(xí)

獲得產(chǎn)品和技術(shù)

討論


關(guān)于作者

 

Duane Merrill 從事網(wǎng)格計算和分布式數(shù)據(jù)集成平臺的開發(fā)已經(jīng)有 5 年多的時間了。他是 University of Virginia 的 Legion Project 項目的貢獻者之一,并且是 Avaki Corporation 的分布式企業(yè)信息集成產(chǎn)品 Avaki 的核心開發(fā)人員之一。目前,他正在 University of Virginia 攻讀計算機科學(xué)博士學(xué)位。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Mashup和Meshup
研究SOA中信息管理的不同方法
Google 發(fā)布交互式Web 應(yīng)用程序編輯器
分享一個銀行數(shù)據(jù)集成架構(gòu)的啟示【荷蘭銀行】
O‘Reilly:What Is Web 2.0 (3/5)
Web2.0的信息組織需要引入語義的新思路
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服