首先申明:我不是adobe雇傭的槍手,我也從不認(rèn)識(shí)adobe的人。我只是一名被C/S和B/S長期困擾希望尋找一套解決方案的人。
昨天去參加了adobe AIR 發(fā)布會(huì)
adobe是業(yè)界著名的客戶端展現(xiàn)工具和展現(xiàn)設(shè)計(jì)工具 提供商。
展現(xiàn)工具:PDF、FLASH。展現(xiàn)設(shè)計(jì)工具:photoshop、Dreamwaver、FLASH。
很多人都疑問AIR有什么用。昨天在會(huì)場也有同學(xué)提出了這個(gè)問題。既然有了AJAX 純的JS的客戶端表現(xiàn)組件包,如最近剛獲得金牛獎(jiǎng)的ZK組件包,那為何要有AIR?
我給大家解釋解釋。大家都能看到現(xiàn)在的趨勢:互聯(lián)網(wǎng)軟件在向客戶端融合,客戶端在向互聯(lián)網(wǎng)融合。
互聯(lián)網(wǎng)企業(yè)發(fā)源于WEB世界,那么它要延伸互聯(lián)網(wǎng),必須要基于現(xiàn)在自己的優(yōu)勢和根。JS技術(shù),這種根植于網(wǎng)絡(luò)世界的技術(shù)就是最理想的選擇。使用慣了WEB應(yīng)用軟件的用戶,對(duì)于本地安裝一個(gè)軟件,本地軟件那樣的操作習(xí)慣就感到很奇怪。
而對(duì)于習(xí)慣了使用本地軟件的用戶,現(xiàn)在開始有了互聯(lián)網(wǎng)跨出局域網(wǎng)的業(yè)務(wù)需求了,怎么辦?一種辦法當(dāng)然是給他們另外開發(fā)一套B/S企業(yè)管理軟件,但他們?cè)趺词褂枚疾豁樖帧?/font>
于是AIR產(chǎn)生。讓他們能滿足互聯(lián)網(wǎng)處理,又能像本地軟件一樣操作。
又有客官問了,聽過微軟也推出了一種客戶端跨互聯(lián)網(wǎng)處理的技術(shù),叫WPF和WCF。微軟是客戶端的霸主,而且微軟的
開發(fā)工具也是一流的,adobe既不熟悉開發(fā)工具這行當(dāng),也沒有客戶端優(yōu)勢,微軟在OS層面做點(diǎn)手腳,就像當(dāng)年給netscape下點(diǎn)藥做點(diǎn)限制一
樣,AIR就沒前途了。
但是,但是。這個(gè)世界總有但是。
要知道,做企業(yè)管理軟件應(yīng)用,很重要的就是數(shù)據(jù)安全。要把自己的數(shù)據(jù)和業(yè)務(wù)處理放到公網(wǎng)上,就有擔(dān)憂。但是企業(yè)發(fā)展
必須跨互聯(lián)網(wǎng),有需求啊。那怎么辦?用微軟的?太不安全了。于是挑選了JAVA。但JAVA一直雄霸于服務(wù)器端,客戶端JAVA也沒有經(jīng)驗(yàn)啊。從早期的
Applet,到Swing,都以失敗告終。不能讓JAVA的服務(wù)器端配合WPF的客戶端吧?于是AIR出場了。
adobe也很聰明,知道微軟這個(gè)長年想擴(kuò)展到互聯(lián)網(wǎng)卻屢屢受挫的困獸,必然拼了老命也要推自己的WPF和WCF技術(shù),這是微軟未來的命啊。想在這個(gè)霸主的肩膀上吃肉,是比登天難。于是祭出微軟最害怕的一招:開源、免費(fèi)、基于開放技術(shù)標(biāo)準(zhǔn)、跨平臺(tái)。
adobe不擅長開發(fā)工具的開發(fā),那就不開發(fā)。況且這個(gè)世界上除了微軟世界的visual
studio工具外,微軟的對(duì)立陣營就有最開放的eclipse。eclipse已經(jīng)不僅僅是一個(gè)JAVA的開發(fā)IDE,現(xiàn)在Ruby、PHP、C++、
Python都在它上面有插件。于是adobe也把自己插在上面。跟著程序員大潮走,讓程序員使用自己最熟悉的IDE開發(fā)AIR。
adobe一直擅長客戶端表現(xiàn),所以adobe也沒有必要提供一個(gè)從服務(wù)器到客戶端一整套技術(shù)方案。說白了,AIR
就是一個(gè)和AJAX組件包一個(gè)層次的解決方案。主要用于客戶端表現(xiàn)。這點(diǎn)非常重要。許多同學(xué)沒有看清這一點(diǎn),和DELPHI比,和JAVA比,和.net
比。其實(shí)AIR就專注客戶端表現(xiàn)。你的業(yè)務(wù)層完全可以用PHP、JAVA、C#來寫。再說了,AIR技術(shù),內(nèi)在其實(shí)就是HTML+JAVAScript,
只不過改進(jìn)了一些,換了個(gè)名字,叫MXML和ActionScript。微軟的WPF技術(shù),也是這兩個(gè)技術(shù)組成。大家都是一路子。
PDF抓住了PC時(shí)代,F(xiàn)LASH抓住了瀏覽器時(shí)代,AIR是要抓住瀏覽器和PC融合的時(shí)代。這也是adobe的命
根,所以兩家公司都拼了命。微軟有其強(qiáng)大的現(xiàn)實(shí)客戶和研究開發(fā)中心和營銷手段,adobe則采用了最開放最聯(lián)盟來對(duì)抗,讓微軟一家公司之力來對(duì)抗全球開放
的程序員。
WPF僅限于微軟平臺(tái),雖然sliverlight號(hào)稱以后也要垮MAC和LINUX平臺(tái)。但我說的比較是AIR和WPF,而非FLEX和Sliverlight這兩種技術(shù)。
我對(duì)FLEX和Sliverlight這兩種技術(shù)一直心存懷疑。他們到底是給什么用戶用的呢?習(xí)慣于瀏覽器的用戶?人家有AJAX組件包啊,優(yōu)秀開源的N多,商業(yè)的也N多。習(xí)慣于本地運(yùn)行軟件的用戶?人家有AIR和WPF這兩種技術(shù)啊。
FLEX和Sliverlight這兩種技術(shù)產(chǎn)生,我來解釋一下我自己的觀點(diǎn)。
adobe的AIR還沒有煉成。FLASH是adobe現(xiàn)在的優(yōu)勢。要想走到目的地,F(xiàn)LASH必須是自己的跳板,于是FLEX必須作為過渡。
而微軟呢?VISTA本來就是微軟最寄予希望的操作系統(tǒng),原生的.net framework
3.0,而且全部用.net重寫,一流的面向service的操作系統(tǒng),圓了當(dāng)年微軟COM之夢(mèng)。而且.net framework
3.0最主要的技術(shù)WPF、WCF,還有一個(gè)夫死胎中的WF,其實(shí)都是很有未來前瞻的技術(shù),但由于技術(shù)難度太大,當(dāng)然也由于太多人看透了微軟在互聯(lián)網(wǎng)戰(zhàn)略
的陌生和遲疑和舊有EXE技術(shù)思想,所以都跑到了純正的互聯(lián)網(wǎng)公司,給VISTA形成了難產(chǎn)。微軟希望能無縫且毫無體驗(yàn)差異的整合互聯(lián)網(wǎng)和本地。但是這個(gè)
過程太漫長了。眼看著adobe利用FLASH做跳板,以占領(lǐng)自己未來想占領(lǐng)的位置,自己能不能到達(dá)目的地還不好說,于是在急匆匆中推出了
sliverlight。其實(shí)微軟本來沒有sliverlight研究計(jì)劃,希望借助VISTA一舉掀開未來大幕,但VISTA不爭氣,沒掀好,于是必須
應(yīng)急。
所以,奉勸開發(fā)慣了網(wǎng)站的程序員,繼續(xù)拿起你們的AJAX,因?yàn)槟銈儾焕斫馊藗優(yōu)槭裁匆肁IR。
對(duì)于開發(fā)慣了EXE的程序員,繼續(xù)使用AIR或WPF來開發(fā)你們的下一代產(chǎn)品,別想著用FLEX。習(xí)慣用微軟技術(shù)的就用WPF,習(xí)慣用非微軟技術(shù)的,就選擇AIR。就這么簡單。
我給大家列了一個(gè)對(duì)比列表,大家可以理解這個(gè)新技術(shù)和過去技術(shù)的相似和關(guān)聯(lián)。
AIR runtime=.net framework=JVM
AIR=WPF=JAVA Application
FLEX=Sliverlight=JAVA Applet
至于Google
Gears,是互聯(lián)網(wǎng)向桌面融合的產(chǎn)物,而我們今天討論的是桌面向互聯(lián)網(wǎng)融合。雖然Google Gears、JAVA JSF、Adobe
AIR/FLEX、微軟WPF/Sliverlight都是RIA的解決方案。但都是各自從各自的優(yōu)勢出發(fā)發(fā)展的技術(shù)方案
最后結(jié)尾總結(jié)關(guān)鍵幾句:
1 AIR是給習(xí)慣開發(fā)EXE程序員準(zhǔn)備的非微軟技術(shù)的互聯(lián)網(wǎng)解決方案。習(xí)慣微軟技術(shù)的請(qǐng)離開,習(xí)慣網(wǎng)站的請(qǐng)離開
2
AIR工作在表現(xiàn)層。AIR只是一個(gè)客戶端表現(xiàn),和AJAX是一樣的。都是HTML+JAVASCIRPT。不要奢望它能做各種業(yè)務(wù)處理和運(yùn)算。你的業(yè)務(wù)
可以包裝成webservice,也可以是PHP或JSP或asp.net頁面,調(diào)用方式可以是webservice,可以是httpservice,可
以是remoting。這樣你的業(yè)務(wù)層就可以和表現(xiàn)層AIR交流數(shù)據(jù)了
3 AIR IDE只是HTML+AVACRIPT設(shè)計(jì)和調(diào)試工具,所以你也別奢望AIR IDE能象JAVA和C#的IDE環(huán)境那樣強(qiáng)大。你過去怎么設(shè)計(jì)和調(diào)試HTML+JAVASCRIPT,那么你現(xiàn)在仍然保持那種心態(tài)。
4
AIR不是FLASH。他們是兩種不同的應(yīng)用目的和技術(shù)發(fā)展方向。不要用FLASH開發(fā)企業(yè)管理軟件,也不要用AIR開發(fā)多媒體。雖然能,但不擅長(就如
你拿C來開發(fā)WEB)。AIR不需要運(yùn)行在瀏覽器中,不需要使用FLASH容器。AIR有自己的容器和運(yùn)行環(huán)境。AIR和你的EXE是一樣的安裝和執(zhí)行。
5AIR和WPF都處于不成熟期,可以作項(xiàng)目,但不要把寶押在他們上面做下一代產(chǎn)品線(預(yù)計(jì)下下版應(yīng)該可以進(jìn)行企業(yè)
下一代產(chǎn)品線開發(fā),一般都是軟件3個(gè)版本后才強(qiáng)壯穩(wěn)定起來,按照競爭的激烈程度,這個(gè)第三個(gè)正式版本時(shí)間會(huì)在明年的上半年)。不過你也不要等待他們成熟后
再做再研究,這樣的等待就如同2001年等待JAVA成熟一樣。現(xiàn)在JAVA是成熟了,但是你還有機(jī)會(huì)么?
6不要懷疑AIR和WPF是不是未來。業(yè)界早有共識(shí),這就是未來。不要在GOOGLE
WEBOS和客戶端OS之間選擇來選擇去,如果你是網(wǎng)站開發(fā)人員,安心研究你的GOOGLE
RIA技術(shù)。不要懷疑是跟微軟還是跟adobe。如果你一直在微軟的技術(shù)圈子中行走,那么你安心用你的WPF好了,都是未來。
7有許多人問起來了SEO在AIR和FLEX上的缺陷。說slivelight支持SEO和搜索友好。我想說的一句是:開發(fā)企業(yè)管理軟件,怕的就是搜索,怕的就是企業(yè)數(shù)據(jù)被搜索引擎搜索到。不能搜索到才好呢
8AIR為過去的EXE程序員提供了自動(dòng)版本檢測和自動(dòng)升級(jí)的API,這是讓C/S程序員非常興奮的一件事。回想當(dāng)
年,客戶端版本不一致,出了不少怪異的事情。AIR也提供了離線后暫時(shí)保存數(shù)據(jù)到本地內(nèi)嵌在AIR
runtime中的sqlite(操作和平常SQL一樣),繼續(xù)操作軟件,連線后同步數(shù)據(jù)。OK
9
你如果沒有開發(fā)過MVC架構(gòu),沒有用過COM多層開發(fā),那么你不會(huì)明白業(yè)務(wù)層和表現(xiàn)層的分工和通訊的。你會(huì)一直想弄清楚怎么在AIR中寫SQL語句或
JAVA語句。你也一直會(huì)想在servlet中寫JAVASCRIPT和HTML代碼。你還處在漿糊代碼階段,建議給自己的代碼技術(shù)升升級(jí)。
想問我為什么關(guān)注AIR嗎?
因?yàn)槲乙恢睉?zhàn)斗在行業(yè)管理軟件的開發(fā)上。我對(duì)于開發(fā)一套C/S,一套B/S,這樣極耗費(fèi)開發(fā)成本開發(fā)時(shí)間和維護(hù)成本
的開發(fā)方式煩透了,要讓兩者操作習(xí)慣和功能都保持一致,難。如果有了BUG,兩個(gè)產(chǎn)品是兩個(gè)開發(fā)團(tuán)隊(duì),BUG都出在不同的地方,分別修改。讓一個(gè)公司維護(hù)
兩套人馬兩個(gè)產(chǎn)品,在中國大部分都是小軟件作坊的現(xiàn)狀下,哪個(gè)都做不好。不如做一個(gè)既是C/S又是B/S的軟件。
那是多么美好的事情啊。