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