但I(xiàn)T專家們有足夠理由對(duì)此不放心。
混搭仍然是由消費(fèi)者而非商業(yè)主導(dǎo)的創(chuàng)新。Google Gadgets、Yahoo Pipes和眾多網(wǎng)站已經(jīng)把互聯(lián)網(wǎng)變成一個(gè)開放的平臺(tái)。無數(shù)的非職業(yè)開發(fā)人員正把各種網(wǎng)絡(luò)服務(wù)組合成無數(shù)新應(yīng)用,速度遠(yuǎn)比在基于SOA架構(gòu)的開發(fā)來得迅猛,而SOA可算是企業(yè)架構(gòu)里最接近混搭的模式了。
但混搭與曾在企業(yè)里流行過的消費(fèi)者應(yīng)用熱潮不同,混搭并不等同于安全漏洞、員工滿意度的提升途徑、廉價(jià)的技術(shù)手段。對(duì)企業(yè)創(chuàng)新來說,那些積極接受混搭站點(diǎn)和工具的員工就是個(gè)未開發(fā)的豐富寶庫(kù)。
當(dāng)然并不是每個(gè)IT部門都想讓自己的員工強(qiáng)大至此。在我們?yōu)檫@篇報(bào)道所做的在線調(diào)查里,只有少于一半的受訪者表示考慮讓非IT員工創(chuàng)建自己的混搭應(yīng)用。但也別因此立即否定這項(xiàng)技術(shù):因?yàn)榧词乖谧烂鏅C(jī)的軟件安裝受到嚴(yán)格管制的工作環(huán)境里,混搭仍然能夠發(fā)揮效果。它能通過單一的前端整合不同的應(yīng)用和數(shù)據(jù)源,籍此提升生產(chǎn)效率,簡(jiǎn)化工作流程,讓企業(yè)應(yīng)用得以從公眾互聯(lián)網(wǎng)上的Web服務(wù)獲益。
對(duì)于誰會(huì)去創(chuàng)建混搭應(yīng)用,可以拿IM(即時(shí)通訊軟件)做參考例子,IM軟件在工作場(chǎng)合得到廣泛應(yīng)用,全賴一群極度依賴互聯(lián)網(wǎng),認(rèn)為電子郵件太落伍,寧可選擇RSS或widgets而不是網(wǎng)頁(yè)的熱情用戶。目前來說,會(huì)構(gòu)建復(fù)雜混搭應(yīng)用的員工仍屬有限。API(應(yīng)用編程接口)的使用需要具備一定的JavaScript 知識(shí),甚至由軟件廠商提供的無需編程技巧的開發(fā)工具也并不適合所有人。
要?jiǎng)?chuàng)建真正有用的混搭,用戶必須理解底層的業(yè)務(wù)流程;例如Serena Software軟件的目標(biāo)用戶就是使用業(yè)務(wù)流程管理軟件或?qū)慐xcel宏的人。
第一批用Google Maps(谷歌地圖)和Google Ajax API做出來的Web 混搭應(yīng)用到現(xiàn)在仍然廣受歡迎。如今微軟和雅虎也有類似的服務(wù),而Yahoo還有Flash的版本可供選擇。
在企業(yè)里,網(wǎng)絡(luò)管理軟件已經(jīng)能為IT部門提供地圖上疊加數(shù)據(jù)的功能--例如無線網(wǎng)狀網(wǎng)(wireless mesh)開發(fā)商Tropos Networks就把Google Maps的數(shù)據(jù)加入到自己基于瀏覽器的控制臺(tái)里,為網(wǎng)絡(luò)管理員實(shí)時(shí)顯示每個(gè)無線節(jié)點(diǎn)的覆蓋范圍和活動(dòng)狀況。跟蹤單個(gè)用戶和客戶端設(shè)備將是未來版本的功能。它的競(jìng)爭(zhēng)對(duì)手SkyPilot和 Strix System則使用Google Earth在非瀏覽器環(huán)境里實(shí)現(xiàn)類似的功能。
而在企業(yè)內(nèi)部,常規(guī)性的搜索非常實(shí)用:超過一半的調(diào)查受訪者搭建的混搭都整合了Google的搜索結(jié)果。難道這就是谷歌大受歡迎的原因?它相對(duì)簡(jiǎn)單的API能讓開發(fā)人員僅用幾行代碼就能包含搜索結(jié)果。例如瀏覽或點(diǎn)擊顯示銷售預(yù)期目標(biāo)列表的網(wǎng)頁(yè)或應(yīng)用時(shí),可以自動(dòng)根據(jù)人員或公司名稱,到網(wǎng)絡(luò)上去搜索更多的信息。當(dāng)然通過手工方式實(shí)現(xiàn)該功能也不難,但混搭避免了剪切、粘帖和在多個(gè)瀏覽器窗口里切換等動(dòng)作,而這些操作會(huì)大大降低效率。
與業(yè)務(wù)伙伴的系統(tǒng)整合則還沒有那么成熟,但包裹貨運(yùn)業(yè)肯定是可混搭A(yù)PI的先鋒行業(yè)。
超過四分之一的受訪者使用了FedEx的服務(wù)創(chuàng)建混搭應(yīng)用,比這數(shù)字稍少的人選擇了UPS的混搭A(yù)PI。兩家貨運(yùn)商都為內(nèi)部賬單查詢和包裹跟蹤提供了Web服務(wù)訪問。
來自電子商務(wù)站點(diǎn)如Amazon.com和eBay的服務(wù)很受小公司的歡迎,它們盡管規(guī)模不大但也占企業(yè)應(yīng)用里的一席之地。有的企業(yè)混搭與AOL整合,通過該公司的XML API,獲得AOL實(shí)時(shí)通訊軟件里用戶的在線狀態(tài)。
但混搭來自公眾互聯(lián)網(wǎng)的應(yīng)用只是企業(yè)混搭目標(biāo)的一半--在混搭的應(yīng)用上,企業(yè)通常都落后于本就在根植在互聯(lián)網(wǎng)上的公眾站點(diǎn)。
SOA的"最后一英里"
對(duì)大公司來說最大價(jià)值往往來自內(nèi)部企業(yè)應(yīng)用的整合,但這是一個(gè)讓人望而生畏的任務(wù)。大多數(shù)公眾網(wǎng)站能提供通過XML或JavaScript方式訪問的API接口,而在企業(yè)里卻要挨個(gè)改造自己的應(yīng)用,以使它們能對(duì)外提供服務(wù)。即使只在企業(yè)內(nèi)部使用,要開放內(nèi)部應(yīng)用使數(shù)據(jù)更容易被訪問到,也要面臨安全和管理控制等問題。
這就是SOA的切入點(diǎn)了。越來越多的大SOA軟件商搖身變?yōu)闉槠髽I(yè)定制混搭服務(wù)的軟件商,他們中的大多數(shù)人都認(rèn)為混搭是SOA的"最后一英里",它架通了最終用戶與SOA架構(gòu)服務(wù)的訪問。不同的是SOA里的Web服務(wù)往往只用于不同服務(wù)器之間的通訊,而混搭通常還涉及到客戶端。
但顯然這些新事物會(huì)帶來一些成長(zhǎng)的煩惱。大多數(shù)SOA套件都是基于使用SOAP協(xié)議而設(shè)計(jì)的,但大多數(shù)瀏覽器和客戶端實(shí)時(shí)程序如Java和Flash內(nèi)置都不支持SOAP協(xié)議。所以在公眾互聯(lián)網(wǎng)上的混搭一般都采用RSS 做為數(shù)據(jù)格式,而對(duì)復(fù)雜的API則提供自定義的數(shù)據(jù)格式,這通常由網(wǎng)絡(luò)服務(wù)提供商根據(jù)實(shí)際情況而定。
SOA主要關(guān)注在服務(wù)器端,它往往忽略存儲(chǔ)在客戶端的文件,很大原因是因?yàn)镮T部門創(chuàng)建SOA應(yīng)用時(shí),并未著重于對(duì)財(cái)務(wù)報(bào)表里的數(shù)據(jù)或銷售材料的理解或解析。而許多混搭開發(fā)商則剛好相反,把這些文件看成可混搭數(shù)據(jù)的豐富來源--最終用戶會(huì)更愿意選擇對(duì)重要文件能提供服務(wù)訪問的方式(好像有點(diǎn)不通順),使用Ajax 或XML API,數(shù)據(jù)就可以通過網(wǎng)絡(luò)服務(wù)進(jìn)行訪問。現(xiàn)在新式的服務(wù)訪問方式使用戶可以更容易地和其他人共享文件,這樣企業(yè)電子郵件服務(wù)器就不會(huì)被體積龐大的附件堵塞住,又不用轉(zhuǎn)而使用類似SharePoint風(fēng)格的合作型軟件。
要使文件訪問能支持服務(wù)方式,還要能管理這些服務(wù),就需要一個(gè)與SOA類似,但卻不使用SOAP協(xié)議而使用RSS格式的系統(tǒng)。Attensa、 Serendipity Software和/n Software都提供大致相當(dāng)于SOA里的企業(yè)服務(wù)總線(ESB)的產(chǎn)品,其目的是創(chuàng)建、路由和管理后臺(tái)的RSS輸出,而不是設(shè)計(jì)前端的混搭應(yīng)用。把文件轉(zhuǎn)化為RSS輸出的功能也包含在某些混搭套裝軟件中,較為人知的是IBM和Kapow Technologies,而Denodo Technologies的數(shù)據(jù)混搭套裝軟件則通過為數(shù)據(jù)庫(kù)和老式服務(wù)器提供支持服務(wù)的方式和ESB競(jìng)爭(zhēng)。
大多數(shù)支持RSS的工具還可以通過解析屏幕輸出內(nèi)容的方式獲取RSS輸出,使原本不提供RSS輸出或網(wǎng)絡(luò)服務(wù)API的站點(diǎn)數(shù)據(jù),也能被加進(jìn)混搭里(這個(gè)screen scraping有的地方譯成屏幕抓取,我覺得字面上也許稍微難以理解,其實(shí)就是把任何普通的網(wǎng)頁(yè)內(nèi)容,整理成RSS輸出)。這對(duì)支持服務(wù)的內(nèi)部網(wǎng)來說是很方便的做法,但請(qǐng)留意第三方站點(diǎn)的版權(quán)問題。另外這也揭示出一個(gè)常見的混搭風(fēng)險(xiǎn):就是站點(diǎn)布局的格式改變會(huì)影響RSS輸出并可能使基于它的應(yīng)用無法正常工作。
即使對(duì)內(nèi)部網(wǎng)站點(diǎn)或內(nèi)部應(yīng)用而言,內(nèi)容變更也是個(gè)問題,因?yàn)榛齑钔静皇怯糜诨齑畹姆?wù)或應(yīng)用。這點(diǎn)基本上可算好事--因?yàn)檫@正是創(chuàng)新的意義--但這也意味著升級(jí)可能會(huì)導(dǎo)致不兼容。
要避免這種后果的唯一途徑就是傳統(tǒng)可靠的軟件質(zhì)量保證體系。確保服務(wù)都由經(jīng)過認(rèn)真設(shè)計(jì)和嚴(yán)格測(cè)試的API提供;這其實(shí)也是SOAP和WS-* stack(各種Web Service 框架)的理念。不幸的是,測(cè)試會(huì)拖慢開發(fā)進(jìn)度,這也是為什么SOA系統(tǒng)的開發(fā)往往步履為艱和充滿官僚主義味道的原因,相比之下混搭方式和Web 2.0的效率則快得多。所以事情總有利弊兩面。
自助式 IT
共有3種類型的混搭:表現(xiàn)型、數(shù)據(jù)型和邏輯型。表現(xiàn)型的混搭是最簡(jiǎn)單的;網(wǎng)絡(luò)門戶就是最好的例子。數(shù)據(jù)型混搭收集來自多個(gè)數(shù)據(jù)源的信息,為方便對(duì)比而把它們都聚合在一起,而邏輯性混搭通常是最復(fù)雜的,它往往包含與2個(gè)或以上應(yīng)用交互的編程。
低門檻意味著不需要使用定制的企業(yè)混搭產(chǎn)品?;齑羁梢苑旁谌魏尉W(wǎng)頁(yè)服務(wù)器上,和其他眾多基于網(wǎng)頁(yè)的應(yīng)用使用相同的工具進(jìn)行開發(fā)。大多數(shù)的受訪者也是這么做的。最受歡迎的平臺(tái)是微軟的ASP.Net、Adobe的Flex,Google的免費(fèi)網(wǎng)頁(yè)開發(fā)工具套裝(Web toolkit)還有開源Ajax框架Ruby on Rails 的排名也很高。其他的選擇包括Curl和 Nexaweb公司組合了Java、 Flash和Ajax功能的開發(fā)框架。
然而,專用的混搭平臺(tái)也有它的優(yōu)勢(shì),特別是在普通用戶即開發(fā)人員的企業(yè)里。它們的主要價(jià)值體現(xiàn)在易用性和安全性上:由非IT人員使用的平臺(tái)與常見的網(wǎng)站設(shè)計(jì)和Office應(yīng)用非常相似,而IT部門則可以監(jiān)控這些混搭和它們的Web服務(wù)組件以避免數(shù)據(jù)泄漏。集中式的管理也有助于對(duì)組件的重用。
企業(yè)級(jí)混搭軟件商Coghead, JackBe和 Kapow都提供了針對(duì)企業(yè)用戶的拖放式開發(fā)環(huán)境。Coghead 和JackBe針對(duì)從最簡(jiǎn)單的表象層門戶到全面的應(yīng)用包括業(yè)務(wù)邏輯的全部3種混搭類型。Kapow是數(shù)據(jù)混搭網(wǎng)站Dapper的企業(yè)版,在它的OpenKapow網(wǎng)站上提供了大量開放源代碼的內(nèi)置混搭應(yīng)用。
大公司如BEA、IBM和Oracle進(jìn)入這個(gè)市場(chǎng)比較晚,而BEA的AquaLogic Pages和Ensemble工具是目前為止這3家唯一正式發(fā)布的產(chǎn)品。IBM的Mashup Hub和Oracle的 WebCenter Composer都預(yù)計(jì)在今年年底發(fā)布。它們都強(qiáng)調(diào)集中化管理以及與其他SOA工具的整合,此外IB