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