你應該知道的15個Silverlight訣竅
我熱愛Silverlight,并且身體力行寫了很多Silverlight程序,也討論了很多關于Silverlight的技術。對于剛剛接觸Silverlight的開發人員來說,這篇文章是最適合你的。這篇文章列出了我使用Silverlight進行開發后,發現的15條小訣竅。如果你是一個全職的Silverlight開發的話,我希望你能了解并掌握它們。
我不會談論MVVM,Prism或者MEF這些復雜的以至于嚇跑讀者的東西。
- 1. 下圖中黃色的高亮文字代表了Silverlight 對象的MIME類型,而不是運行時版本信息。許多開發人員第一次看到這段代碼的時候都會認為這個地方是引用了Silverlight的版本信息,例如Silverlight 4.
一個Silverlight宿主應用程序的HTML/ASPX代碼:
- 2. Silverlight只支持PNG格式的圖片,不能直接使用GIF格式的圖片。如果你一定要使用GIF圖片的話,可以考慮使用基于Silverlight開發的 .NET Image Tools Library。很多人已經構建了將GIF轉換為PNG的Web服務,可以直接使用。我推薦你使用Paint.NET來進行圖片格式轉換。
- 3. 如果用戶沒有安裝Silverlight 4插件,下圖中黃色高亮代碼(在ASPX或者HTML文件中)會提示用戶下載。
style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkID=161376"
alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
結果會一直要求用戶下載最新的Silverlight運行時,新版本的運行時會默認向后兼容。
- 4. Silverlight中所有的數據操作都是異步的,下面的代碼其實是不能工作的:
string strReturn = srv.GetSomeValue();
txtValue.Text = strReturn;
我們可以通過調用WCF服務來解決這個問題(比如在Page的InitializeComponent方法之后來調用):
{
InitializeComponent();
Service1Client client = new Service1Client();
client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>
(client_DoWorkCompleted);
client.DoWorkAsync();
}
void client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e)
{
MessageBox.Show(e.Result);
}
- 5. 優先使用Silverlight模板和主題,微軟默認為應用程序提供了4種主題供用戶選擇。在VS2010中還可以使用內置的導航應用程序模板,Blend4中還有一些關于MVVM的模板。一句話,除非有特別需要,否則不要開始從零開始你的應用程序。
- 6. 花時間學習Blend4。我們沒必要手工寫出全部的XAML代碼,Blend4可以幫助我們創建Silverlight、WPF 以及Windows Phone7應用程序。無法想象如何直接寫出創建故事板或者動畫的代碼,但是在Blend中卻很簡單。Blend的學習曲線有一些陡峭,但是是完全值得的。
- 7. 優先使用Silverlight Toolkit。
Silverlight Toolkit是由微軟提供的一系列的Silverlight控件、組件和工具的集合。Silverlight Toolkit獨立于Silverlight自身的發布周期,由微軟Silverlight開發團隊負責。通過積極向社區發布產品信息,得到用戶反饋,然后為開發者和設計者快速添加新功能。Silverlight Toolkit完全開源,整個集合包含了所有開源代碼、單元測試、示例代碼以及文檔,提供了超過26個新的控件涵蓋圖形繪制、樣式布局以及用戶輸入等多個方面。
- 8. 需要注意的是,任何人都可以通過Silverlight Spy或者.NET Reflector來查看已發布的Silverlight應用程序的代碼。如果你的應用程序是基于互聯網的,最好進行代碼混淆。再輔以一些安全限制,或者采用你在其他Silverlight應用程序中看到的方式。
- 9. Silverlight的XAP文件其實是更換了后綴名的Zip文件。你可以使用一些外部工具例如7zip,將文件進一步壓縮。這些工具還可以打開XAP文件檢查項目的內容。
- 10. 如果并不是所有用戶都需要某個文件,該文件不應該打包在XAP文件中。每一個反對這個說法的人都會說:“帶寬是廉價的”,但是如果你有50到100個圖片或者別的二進制文件,那么代價會是高昂的。總之我只會把所有用戶都必須的文件打包在XAP中。
- 11. 你可以將Silverlight部署在IIS之外的其他服務器上。在服務器上注冊XAP文件處理后,只要客戶機上安裝了Silverlight插件,就可以訪問Silverlight應用程序了。
- 12. 參加Silverlight技術社區,可以從中學到很多東西。我一般從Silverlight官方網站開始,再到Silverlight論壇。每天我都會訪問Silverlight Cream 和 Alvin’s Ashcraft’s Morning Dew,最后看一集John Papa’s Silverlight TV。
- 13. 如果你掌握了XMAL,這些技術可以同時運用到Silverlight(廢話),WPF,Windows Phone7, Lightswitch以及微軟Surface。
- 14. Silverlight可以在當前所有的主流瀏覽器包括Google的Chrome 6,IE, Firefox和Safari上工作,操作系統支持Windows和Mac OS。通過Moonlight可以實現Linux的支持。
- 15. Silverlight可以確保用戶在不同的瀏覽器上得到相同的體驗。對于HTML頁面來說,在Firefox上可以正常工作的,那么在IE 6.0上不知道會發生什么。但是Silverlight是基于插件的,每個瀏覽器上都可以確保得到相同的體驗。
英文鏈接:http://www.codeproject.com/Articles/129554/15-Things-Ive-discovered-about-Silverlight.aspx