有人認(rèn)為由于HTML5持續(xù)增長(zhǎng)的勢(shì)頭,微軟將會(huì)放棄Silverlight。但這似乎不太可能。盡管微軟對(duì)于Silverlight的戰(zhàn)略已經(jīng)轉(zhuǎn)變,不再吹捧將Silverlight作為提供跨平臺(tái)運(yùn)行時(shí)的承載工具,但是微軟在繼續(xù)推動(dòng)Silverlight成為Windows Phone以及一些媒體和業(yè)務(wù)線(line-of-business)應(yīng)用程序的開(kāi)發(fā)平臺(tái)。Silverlight并未消失。事實(shí)上,最終形式的Silverlight 5將于今年推出,而且那些用于維持微軟傳奇的工具也將證實(shí)這個(gè)觀點(diǎn)。
雖然HTML5標(biāo)準(zhǔn)仍處于草案階段,但是它在將來(lái)肯定會(huì)成為主導(dǎo)的跨平臺(tái)解決方案,甚至連微軟也承認(rèn),稱HTML是“唯一適用于所有應(yīng)用的、真正的跨平臺(tái)解決方案!
基本上,Silverlight和HTML5都有各自的位置和用途,我們可以對(duì)兩種工具之間的相似性和差異進(jìn)行仔細(xì)觀察,這樣就會(huì)找到答案。
表面的相似性
乍看上去,在許多方面HTML5和Silverlight都很相似。此類相似性與易于部署、豐富的用戶界面、以及交互模型等聯(lián)系在一起。
桌面程序擔(dān)憂的問(wèn)題之一是部署,特別是那些工作在Windows環(huán)境下的Windows開(kāi)發(fā)者尤為關(guān)注。部署對(duì)于那些工作在中大型企業(yè)的人們來(lái)說(shuō)也是一個(gè)問(wèn)題。桌面應(yīng)用程序的部署足跡對(duì)于他們而言是相當(dāng)麻煩的,因?yàn)樗麄儽仨毚_保某個(gè)確定版本的運(yùn)行庫(kù)可以正常工作,而且他們必須將更新安裝到每臺(tái)機(jī)器上。因此部署對(duì)于功能豐富的桌面應(yīng)用程序而言已成為痛點(diǎn)。
在某些情況下,因?yàn)闃I(yè)務(wù)原因,企業(yè)還將堅(jiān)持使用桌面應(yīng)用程序,它們具有更好的性能,并且能夠更好地利用本地硬件——只是以更加簡(jiǎn)單、無(wú)縫的方式來(lái)做事。此外,對(duì)于桌面程序平臺(tái)的開(kāi)發(fā)場(chǎng)景而言,有著杰出程序員的知識(shí)積累。這些原因能夠勝過(guò)對(duì)于簡(jiǎn)單部署的需求。
對(duì)于那些將部署置于核心優(yōu)先級(jí)位置上的客戶而言,完全的Web解決方案可能更可取,盡管所交付的豐富功能相對(duì)于在桌面應(yīng)用程序中等同的功能而言還不能讓所有客戶感到滿意。雖然我們正在尋找替代解決方案,但是必須平衡此類問(wèn)題。
一般情況下,Adobe Air和Silverlight都是不錯(cuò)的解決方案。在微軟的工具庫(kù)中,Silverlight是非常好的解決方案,因?yàn)楸M管存在運(yùn)行庫(kù),但是在構(gòu)造之初就考慮到無(wú)縫部署,而且便于用戶更新。基本上,微軟很注重更新體驗(yàn)。你不必為將應(yīng)用程序下載到最終用戶的機(jī)器上而擔(dān)心。
HTML5提供了類似的部署方案;然而由于它依賴瀏覽器,因此存在一些隱藏的陷阱。使用HTML5解決方案的團(tuán)隊(duì)必須可以相當(dāng)肯定,他們的客戶可以訪問(wèn)并安裝最新版本的瀏覽器。此外,HTML5有著廣泛的瀏覽器支持:IE9、Chrome以及Firefox;在IE10上HTML 5會(huì)更有效地工作。未來(lái)所有的移動(dòng)客戶端都會(huì)支持HTML5,盡管現(xiàn)在它們還不支持。
簡(jiǎn)而言之,雖然Silverlight和HTML5之間存在細(xì)微的部署差異,但是二者的部署模型基本上是無(wú)縫的。
就用戶界面(UI)的豐富程度而言,Silverlight則具備一些優(yōu)勢(shì)。如果是為了更快地完成豐富的用戶界面,那么Silverlight可能是更好的解決方案。不過(guò),HTML5在這方面正迎頭趕上Silverlight。用不了不久,HTML5就將擁有更多預(yù)先封裝的內(nèi)容,從而使我們可以更便捷地構(gòu)建豐富的用戶界面環(huán)境。
這兩款工具在交互模型方面也是類似的。二者都不要求用戶等待頁(yè)面刷新,而且二者的使用方式都與桌面應(yīng)用程序類似。
更仔細(xì)地研究
更仔細(xì)地研究一下,我們就會(huì)發(fā)現(xiàn),HTML5和Silverlight之間強(qiáng)烈的功能相似性正在趨于消退。首先,與真正基于Web的部署比較而言,Silverlight更適合于擁有部署環(huán)境相對(duì)控制權(quán)的企業(yè)內(nèi)部網(wǎng)應(yīng)用程序。
如果你更深入地了解Silverlight的部署方案,那么你會(huì)發(fā)現(xiàn)Silverlight還不是真正的最終用戶解決方案。因此,如果開(kāi)發(fā)者的目的是讓應(yīng)用程序的用戶下載Silverlight并在用戶的機(jī)器上運(yùn)行Silverlight的話,那么開(kāi)發(fā)者需要知道對(duì)于客戶的清晰描述?蛻羰欠駥碛锌梢赃\(yùn)行Silverlight的系統(tǒng)?某些操作是否被允許?
例如,如果用戶訪問(wèn)Amazon.com的時(shí)候,彈出了下載Silverlight客戶端程序的提示,這可能并不是良好的體驗(yàn)。對(duì)于網(wǎng)站使用者而言,無(wú)縫體驗(yàn)越多越好。
然而,對(duì)于企業(yè)內(nèi)部網(wǎng)解決方案的情況——開(kāi)發(fā)者對(duì)于機(jī)器擁有更多控制權(quán),并且知道都是裝有Windows操作系統(tǒng)的機(jī)器——盡管開(kāi)發(fā)者可能并不需要對(duì)桌面應(yīng)用程序擁有相當(dāng)程度的控制權(quán),但是他們知道那些機(jī)器有能力運(yùn)行Silverlight。這就為開(kāi)發(fā)者提供了極大的靈活性。
現(xiàn)在我們可以選擇追隨Silverlight;當(dāng)與HTML5比較時(shí),Silverlight無(wú)疑是一種更富生產(chǎn)力的開(kāi)發(fā)體驗(yàn)。
微軟有些能夠讓創(chuàng)建和部署Silverlight應(yīng)用程序更輕松的優(yōu)秀工具。雖然Silverlight更有條理——相關(guān)工具位于他們自己的分類之下,而HTML5還需要多做一些工作。如果你確信你對(duì)自己的部署環(huán)境比較熟悉的話,或許你可以對(duì)那些關(guān)系親密的客戶這樣說(shuō),“這些是最低要求!;那么Silverlight則更適合。而且將進(jìn)一步得到高質(zhì)量Silverlight工具的支持,那些工具使開(kāi)發(fā)者能以一種快速拖拽的方式來(lái)創(chuàng)建Silverlight應(yīng)用程序。通過(guò)使用內(nèi)建的控制抽象模型以及微軟已經(jīng)提供的本地控件,Silverlight還使用戶界面開(kāi)發(fā)和大多數(shù)其他開(kāi)發(fā)具有更高的生產(chǎn)力。
HTML5另一方面需要得到你當(dāng)前使用的Web應(yīng)用程序開(kāi)發(fā)工具的支持。如果你正在ASP.NET環(huán)境下開(kāi)發(fā),那么工具就是Visual Studio .NET,而VS并未提供任何對(duì)HTML5的工具支持,目前許多開(kāi)發(fā)平臺(tái)可能也存在著類似情況。
選擇通用語(yǔ)言還是盡力理解?
編程語(yǔ)言是另一個(gè)考慮因素。C#(Silverlight)比JavaScript(HTML5)更易于使用和調(diào)試。回歸到工具和語(yǔ)言的本質(zhì)。JavaScript使用起來(lái)真的是很不一樣;即便是經(jīng)驗(yàn)豐富的JavaScript程序員也知道,由于JavaScript生來(lái)就是過(guò)程式的、類型不安全的語(yǔ)言,因此JavaScript理解起來(lái)確實(shí)有點(diǎn)兒困難,然而C#則是一種面向?qū)ο、類型安全的語(yǔ)言。這基本上是說(shuō),與JavaScript相比,使用C#可以更好地編寫和維護(hù)大量代碼。
Silverlight的局限性和其他考慮因素
如果需要移動(dòng)部署,那么Silverlight是有限制的。目前,只有Windows Phone支持Silverlight。其他平臺(tái)未來(lái)可能支持Silverlight,但是這還不一定。而且在短期內(nèi)不可能發(fā)生任何改變。目前,要想開(kāi)發(fā)移動(dòng)客戶端可使用的Silverlight應(yīng)用程序,那么相應(yīng)Windows Phone設(shè)備必須先獲得授權(quán)才行。
如果開(kāi)發(fā)者無(wú)法控制移動(dòng)客戶端,而又希望支持那些設(shè)備,那么HTML5就是個(gè)切實(shí)可行的選擇。由于iOS、Android 3已經(jīng)支持HTML5,并且Windows承諾在IE10下支持HTML5,因此HTML5現(xiàn)已成為明確之選。
然而,Silverlight可以提供比HTML5更好的性能。在過(guò)去的幾個(gè)月里,微軟實(shí)現(xiàn)了針對(duì)Silverlight 5的硬件解決方案,因此在一些新型號(hào)的機(jī)器上Silverlight 5相對(duì)HTML5具有輕微的性能優(yōu)勢(shì)。但是HTML5肯定會(huì)在將來(lái)趕上來(lái)。例如,IE9對(duì)于HTML5做了許多改進(jìn),因此這個(gè)性能差異只是暫時(shí)性的,而非決定性的。這算不上多大的差別。
很顯然,HTML5是一種基于標(biāo)準(zhǔn)的環(huán)境,這是一些開(kāi)發(fā)者極為關(guān)注的事情,而其他人卻不大關(guān)注。如果是使用微軟工具庫(kù)的開(kāi)發(fā)者,那么他就會(huì)理解并欣賞那些標(biāo)準(zhǔn);然而,通過(guò)理解微軟將在一段時(shí)間后也會(huì)遵循這一標(biāo)準(zhǔn),這種態(tài)度會(huì)有所緩解,因此他們并不是不愿采用微軟的專利技術(shù)。
在許多情況下都存在遵循標(biāo)準(zhǔn)的推動(dòng)力,所以如果情況發(fā)生改變,那么遷移路徑也很容易。HTML5是基于標(biāo)準(zhǔn)的,并且隨著HTML5的到來(lái),它正在被傳播到全世界。使用HTML5的前途是很光明的——使用Silverlight卻并非如此。
相對(duì)于HTML5,Silverlight有一個(gè)相當(dāng)大的優(yōu)勢(shì),即Silverlight程序中90%至95%的代碼可以與桌面應(yīng)用程序共享。如果你擁有一款成熟的桌面應(yīng)用程序以及相應(yīng)的Web移植解決方案,那么使用Silverlight模型則會(huì)更容易實(shí)現(xiàn)。
使用HTML5,開(kāi)發(fā)者可以保持用戶界面的獨(dú)立,并且擁有一個(gè)業(yè)務(wù)層;然而,必須在兩個(gè)平臺(tái)上編寫大量的用戶界面代碼,這么做會(huì)付出更多精力而且?guī)缀鯚o(wú)法共享任何代碼。
想個(gè)有根據(jù)的目的
最后,在選擇工具時(shí)心中必須有著明確的目的,從而避免愛(ài)因斯坦所發(fā)現(xiàn)的混亂。選擇正確道路是基于人們希望盡可能減小發(fā)生重大錯(cuò)誤的可能性。例如,開(kāi)發(fā)者可能熟悉WPF和Silverlight,并因此選擇了這條道路。但是在對(duì)想做的應(yīng)用程序進(jìn)行探索后,他們發(fā)現(xiàn)可能希望在六個(gè)月到一年內(nèi)推出某種移動(dòng)客戶端。更重要的是,他們想讓人們能通過(guò)多種設(shè)備進(jìn)行訪問(wèn)。
此時(shí),只要他們準(zhǔn)備最終轉(zhuǎn)到HTML5或者為每個(gè)移動(dòng)平臺(tái)編寫本地應(yīng)用程序,即使之前選定了Silverlight解決方案也沒(méi)有關(guān)系。如果并非如此,那么這將是一個(gè)非常昂貴的選擇。
從另一方面來(lái)說(shuō):由于每個(gè)人都在說(shuō),“這是未來(lái)的趨勢(shì)!,那么這可能成為一種追隨HTML5的推動(dòng)力;因此,即使客戶的所有開(kāi)發(fā)者都擁有Visual Studio,而且被授權(quán)可使用那些最新和最好的微軟工具,只要做出了決定,就要堅(jiān)持朝著確定的方向走下去。
如果他們可以很好地控制部署環(huán)境,并且在接來(lái)下的六個(gè)月內(nèi)他們將不引入任何Linux或Mac設(shè)備,那么他們也許正在犯下昂貴的錯(cuò)誤。當(dāng)然他們可以追隨Silverlight,這將使他們能夠更快地進(jìn)入市場(chǎng),也可以更有效地利用他們當(dāng)前的技能和工具集。
歸根結(jié)底:只要開(kāi)發(fā)者能做出明智的選擇,無(wú)論Silverlight還是HTML5都不錯(cuò)。
應(yīng)用最佳選擇
既然微軟必須強(qiáng)烈支持HTML5,那么現(xiàn)在微軟已經(jīng)無(wú)法控制移動(dòng)市場(chǎng)。他們不再發(fā)號(hào)施令,而值得懷疑的是如果他們能做到的話,是否會(huì)那么做呢。微軟的策略是盡可能地應(yīng)用最好的工具和平臺(tái),無(wú)論它是否是專有的。
根據(jù)微軟的聲明,“在網(wǎng)絡(luò)上,Silverlight的用途從來(lái)都不是要替代HTML;它做的是一些HTML(以及其他技術(shù))不能以方便開(kāi)發(fā)者的方式去深入了解的事情。微軟仍然致力于使用Silverlight通過(guò)使HTML尚未涉及的解決方案成為可能來(lái)擴(kuò)展Web。從HTML頁(yè)面中簡(jiǎn)單豐富的數(shù)據(jù)孤島,到瀏覽器中完全類似于桌面程序的應(yīng)用程序,甚至更強(qiáng)大,Silverlight使得應(yīng)用程序可以提供各種用戶所需的豐富體驗(yàn)!
顯而易見(jiàn),在可預(yù)見(jiàn)的未來(lái)Silverlight和HTML5將共同繁榮。