我熱愛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來進行圖片格式轉換。ide
3. 若是用戶沒有安裝Silverlight 4插件,下圖中×××高亮代碼(在ASPX或者HTML文件中)會提示用戶下載。工具
若是你改變連接以下:佈局
- <a href="http://go.microsoft.com/fwlink/?LinkID=149156" 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中全部的數據操做都是異步的,下面的代碼實際上是不能工做的:學習
- MyOldWebService srv = new MyOldWebService();
- string strReturn = srv.GetSomeValue();
- txtValue.Text = strReturn;
咱們能夠經過調用WCF服務來解決這個問題(好比在Page的InitializeComponent方法以後來調用):測試
- public MainPage()
- {
- 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