你应该知道的15个Silverlight诀窍

我热爱Silverlight,而且身体力行写了不少Silverlight程序,也讨论了不少关于Silverlight的技术。对于刚刚接触Silverlight的开发人员来讲,这篇文章是最适合你的。这篇文章列出了我使用Silverlight进行开发后,发现的15条小诀窍。若是你是一个全职的Silverlight开发的话,我但愿你能了解并掌握它们。浏览器

我不会谈论MVVM,Prism或者MEF这些复杂的以致于吓跑读者的东西。安全

1. 下图中×××的高亮文字表明了Silverlight 对象的MIME类型,而不是运行时版本信息。许多开发人员第一次看到这段代码的时候都会认为这个地方是引用了Silverlight的版本信息,例如Silverlight 4.服务器

一个Silverlight宿主应用程序的HTML/ASPX代码:异步

clip_p_w_picpath002

2. Silverlight只支持PNG格式的图片,不能直接使用GIF格式的图片。若是你必定要使用GIF图片的话,能够考虑使用基于Silverlight开发的 .NET Image Tools Library。不少人已经构建了将GIF转换为PNG的Web服务,能够直接使用。我推荐你使用Paint.NET来进行图片格式转换。ide

clip_p_w_picpath004

3. 若是用户没有安装Silverlight 4插件,下图中×××高亮代码(在ASPX或者HTML文件中)会提示用户下载。工具

clip_p_w_picpath006

若是你改变连接以下:布局

 

  
  
           
  
  
  1. <a href="http://go.microsoft.com/fwlink/?LinkID=149156" style="text-decoration: none;">  
  2.     <img src="http://go.microsoft.com/fwlink/?LinkID=161376" alt="Get Microsoft Silverlight" style="border-style: none"/>  
  3. </a> 

结果会一直要求用户下载最新的Silverlight运行时,新版本的运行时会默认向后兼容。单元测试

4. Silverlight中全部的数据操做都是异步的,下面的代码实际上是不能工做的:学习

 

  
  
           
  
  
  1. MyOldWebService srv = new MyOldWebService();  
  2. string strReturn = srv.GetSomeValue();  
  3. txtValue.Text = strReturn; 

咱们能够经过调用WCF服务来解决这个问题(好比在Page的InitializeComponent方法以后来调用):测试

 

  
  
           
  
  
  1. public MainPage() 
  2.     InitializeComponent(); 
  3.     Service1Client client = new Service1Client(); 
  4.     client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs> 
  5.                  (client_DoWorkCompleted); 
  6.     client.DoWorkAsync(); 
  7.  
  8. void client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e) 
  9.     MessageBox.Show(e.Result); 

 

5. 优先使用Silverlight模板和主题,微软默认为应用程序提供了4种主题供用户选择。在VS2010中还可使用内置的导航应用程序模板,Blend4中还有一些关于MVVM的模板。一句话,除非有特别须要,不然不要开始从零开始你的应用程序。

clip_p_w_picpath008

clip_p_w_picpath010

 

6. 花时间学习Blend4。咱们不必手工写出所有的XAML代码,Blend4能够帮助咱们建立Silverlight、WPF 以及Windows Phone7应用程序。没法想象如何直接写出建立故事板或者动画的代码,可是在Blend中却很简单。Blend的学习曲线有一些陡峭,可是是彻底值得的。

clip_p_w_picpath012

 

7. 优先使用Silverlight Toolkit

Silverlight Toolkit是由微软提供的一系列的Silverlight控件、组件和工具的集合。Silverlight Toolkit独立于Silverlight自身的发布周期,由微软Silverlight开发团队负责。经过积极向社区发布产品信息,获得用户反馈,而后为开发者和设计者快速添加新功能。Silverlight Toolkit彻底开源,整个集合包含了全部开源代码、单元测试、示例代码以及文档,提供了超过26个新的控件涵盖图形绘制、样式布局以及用户输入等多个方面。

clip_p_w_picpath014

 

8. 须要注意的是,任何人均可以经过Silverlight Spy或者.NET Reflector来查看已发布的Silverlight应用程序的代码。若是你的应用程序是基于互联网的,最好进行代码混淆。再辅以一些安全限制,或者采用你在其余Silverlight应用程序中看到的方式。

clip_p_w_picpath016

 

9. Silverlight的XAP文件实际上是更换了后缀名的Zip文件。你可使用一些外部工具例如7zip,将文件进一步压缩。这些工具还能够打开XAP文件检查项目的内容。

clip_p_w_picpath018

 

10. 若是并非全部用户都须要某个文件,该文件不该该打包在XAP文件中。每个反对这个说法的人都会说:“带宽是廉价的”,可是若是你有50到100个图片或者别的二进制文件,那么代价会是高昂的。总之我只会把全部用户都必须的文件打包在XAP中。

 

11. 你能够将Silverlight部署在IIS以外的其余服务器上。在服务器上注册XAP文件处理后,只要客户机上安装了Silverlight插件,就能够访问Silverlight应用程序了。

clip_p_w_picpath020

 

12. 参加Silverlight技术社区,能够从中学到不少东西。我通常从Silverlight官方网站开始,再到Silverlight论坛。天天我都会访问Silverlight CreamAlvin’s Ashcraft’s Morning Dew,最后看一集John Papa’s Silverlight TV

clip_p_w_picpath022

 

13. 若是你掌握了XMAL,这些技术能够同时运用到Silverlight(废话),WPF,Windows Phone7, Lightswitch以及微软Surface

clip_p_w_picpath024

 

14. Silverlight能够在当前全部的主流浏览器包括Google的Chrome 6,IE, Firefox和Safari上工做,操做系统支持Windows和Mac OS。经过Moonlight能够实现Linux的支持。

clip_p_w_picpath026

 

15. Silverlight能够确保用户在不一样的浏览器上获得相同的体验。对于HTML页面来讲,在Firefox上能够正常工做的,那么在IE 6.0上不知道会发生什么。可是Silverlight是基于插件的,每一个浏览器上均可以确保获得相同的体验。

英文连接:http://www.codeproject.com/Articles/129554/15-Things-Ive-discovered-about-Silverlight.aspx