【IT168 专稿】我喜欢Silverlight,我写过很多关于Silverlight的文章,也在不同场合做过关于Silverlight的演讲,但很多人对Silverlight仍然很陌生,或仅仅是将它作为一个玩具,如果你刚好属于这一类人,那么你应该继续往下读,本文列举的内容是我开始用Silverlight做开发以来收集起来的,如果你打算做一名全职的Silverlight开发人员,那更应该将这些内容熟记于心,放心,我不会用MVVM,Prism或MEF来吓你。
1、下图中高亮显示的代码行表示的是MIME类型,而不是Silverlight的运行时版本号,许多开发人员一开始都会很困惑,因为按照惯例,他们认为这应该是Silverlight的版本号,如Silverlight 4。
图 1 一个Silverlight托管应用的HTML/ASPX标记
2、不能在Silverlight中使用.GIF图片,如果你要在Silverlight应用程序中插入图片,最好使用.PNG文件,如果你非要使用.GIF文件,建议你使用.NET图像工具库Silverlight版本,也有很多人构建了Web服务,将.GIF文件转换成.PNG文件,我个人建议你还是使用诸如Paint.NET等工具将图片转换成.PNG格式。
图 2 Silverlight不接受.GIF图片
3、如果用户没有安装Silverlight 4插件,可以在HTML或ASPX文件中使用下图高亮显示的代码提醒用户去下载。
图 3 在HTML或ASPX代码中插入Silverlight下载链接
如果你将链接修改为:
<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;
下面是在Silverlight中调用WCF服务的正确做法:
{
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、必要时使用模板/主题,微软提供了4款主题,你可以定制应用程序外观,你也可以使用Visual Studio 2010内置的导航模板,或Blend 4中的MVVM模板,在你未完全熟悉Silverlight之前,不要试图从零开始一个项目,合理借助模板可以事半功倍。
图 4 Visual Studio 2010中的Silverlight项目模板
图 5 Blend 4中的Silverlight项目模板
6、花点时间学习一下Blend 4,最好达到可以手写所有XAML标记的境界,Blend 4可以用来创建Silverlight,WPF和Windows Phone 7应用程序,虽然有一个学习曲线,但最终你会发现是值得的。
图 6 Blend 4主界面
7、尽情享用Codeplex上的SIlverlight工具包
Silverlight工具包是Silverlight控件、组件和实用程序的集合,你可以将它们打包到你发布的Silverlight应用程序中,Silverlight工具包是微软Silverlight产品团队开发的,因此可以放心使用,它为设计和开发人员提供了许多新功能,并有专门的社区可以交流,你也可以向这个项目贡献自己的代码,或提交BUG,因为它是完全开源的,它提供了26个新控件,涉及图表、样式、布局和用户输入。
图 7 开源的Silverlight工具包
8、确保你的Silverlight代码可以使用Silverlight Spy/.NET Reflector查看,如果你的Silverlight程序要放在互联网上访问,最好将代码打乱。
图 8 使用Silverlight Spy查看Silverlight代码
9、你的Silverlight项目创建的.XAP文件实际上是一个.zip文件,只是用了不同的文件扩展名,你可以使用7zip等压缩/解压工具来打包和解压,也可以用它查看和分析项目包含了哪些文件。
图 9 用WinRAR查看.XAP文件
10、如果某个文件不是每个用户都必需的,那就不要将其打包到.XAP文件中,有人表示不屑,说什么带宽已经很便宜了,但如果包含超过50张图片或其它二进制文件,情况也许就不一样了,我一般只将每个用户都一定会用到的文件打包到.XAP文件中。
11、你可以在其它服务器上托管你的Silverlight程序,不一定非要使用IIS,只需要在你的Web服务器上设置好MIME类型,Silverlight程序就能在你的客户端上运行了,它和安装Silverlight运行时没有区别。
图 10 Silverlight不一定要IIS
12、Silverlight社区活跃,我是从官方的Silverlight站点开始学习起的,然后去了官方了论坛,Silverlight Cream和Alvin的Ashcraft’s Morning Dew,我还听了第9频道上John Papa的Silverlight讲解视频。
13、当你学会了XAML(Silverlight标记语言),就可以创建下面这些平台的应用程序:Silverlight、WPF、Windows Phone 7、Lightswitch和Surface。
图 11 XAML适合多种平台
14、主流浏览器(Google Chrome 6,IE,Firefox和Safari)和操作系统(如Windows和Mac OS X)都支持Silverlight,Linux也可以通过Moonlight项目支持。
图 12 Silverlight具有跨平台特性
15、不管用户使用什么浏览器,用户体验都一样,因为Silverlight是一个插件