一年多以前微软的Silverlight粉墨登场被业界人士称为Flash杀手其竞争对手包括Adobe的Flash和Flex以及其它几种富互联网应用和AJAX框架 Silverlight 的多媒体功能和WPF用户界面给人留下深刻印象随后微软推出了Silverlight 测试版增加了对编译Net语言的支持以及增加了对更多Net API的支持 当Silverlight 推出时人们发现对微软来说Silverlight 是一个如此重要的更新版本正如我们现在所看到的Silverlight 支持所有Net语言其中包括诸如IronPython和IronRuby之类的动态语言它还包含大量的Net基类包括诸如LINQ(集成语言查询)之类的新功能 除了的一系列丰富的管理功能之外它还通过API实现了全面的网络功能支持其中包括对RESTSOAPRSS和HTTP等的支持它还包含了本地数据缓存和存储支持以及开始支持高清视频H视频和AAC(高级音频编码)音频支持将在Silverlight 中实现 在今年月份的北京奥运会上Silverlight无疑是最出风头的技术得到了很好的检验并受到了不错的评价当然也有很多人声称它对某些硬件和操作系统不够兼容但是这并不令人意外在微软看来至少Silverlight互联网视频流技术已经被美国国家广播公司(NBC)中国中央电视台和其它个国家的电视传媒机构所采用这本身就是一个巨大的成功最近Blockbusterye也正在他们的MovieLink应用中把Flash换成Silverlight 功能和控件 鑒于Silverlight 的强大语言支持和类库以及非常高的运行时(runtime)性能它最终可以被人们应用于各个领域的RIA开发而不仅仅局限于视频流应用 目前它可能还缺少某些应用所需要的一些用户界面控件功能在标准的Silverlight控件工具箱中只有个控件另外在Silverlight工具箱中还有个不过在未来数月中微软计划将控件的数量增加到个以上另外制作新的Silverlight控件并不困难许多第三方独立软件厂商已经制作出自己的控件不过如果你不多点耐心的话你会发现微软最终会提供你所需要的任何控件 在进行跨域访问时会面临安全问题这是任何基于浏览器的应用都存在的一个潜在难题不管它是使用的Silverlight插件还是使用的Flash插件Silverlight有自己的跨域安全机制通过一个清晰明了的文件设置进行控制默认设置下就具有最安全的设置 尽管有这种安全机制的保护我依然在网上看到很多批评的声音认为Silverlight本地数据存储非常容易受到跨域攻击我没有去对此进行考证不过我想指出的一点是批评者们也同样指出Flash的本地对象同样无法防御类似的攻击因此这并非Silverlight自身所独有的问题 开发和设计 我使用了Visual Studio SP和Expression Blend SP尝试了Silverlight 开发开发工具很易上手使用其开发也非常简单当然这或许是因为我已经非常熟悉Visual StudioC#NET框架和XAML因此我相信其它熟悉Net语言和XML开发的朋友也应该可以很轻松的学习和开发Silverlight应用 XAML编程的基本方法就是赋予对象一个x:Name标签例如 <TextBlock x:Name=message Text=Message: ></TextBlock> 一旦设定了x:Name属性程序可以操作这个元素的属性这一点与JavaScript在DHTML中操作HTML元素在原理上是相同的 messageText = Hello + nameText; 在程序和XAML元素之间通过名称建立起来的这种联系对于开发团队和设计团队开发Silverlight和WPF应用来说是非常关键的只要这个名称没有改变程序员就可以修改其后端代码文件设计者也可以修改XAML文件而不会破坏两者之间的通讯接口他们甚至可以使用相同的工具 不过我发现了一个美中不足的地方虽然我是一个程序员但也偶尔自己做一些设计工作我失望的发现在Visual Studio XAML设计器中我无法拖拽控件到图形面板上它的图形面板只能具有预览作用因此我智能拖拽空间到XAML文本内容中不过从另一方面来说在Visual Studio中的XAML编辑功能具有很好的智能感知支持这个即时预览面板可以让你非常及时的看到页面的外观效果 Expression Blend为XAML页面提供了一个图形化设计界面不过它没有提供太多编程功能支持它肯定会成为多数设计者选择的Silverlight工具我所希望的更完美情况是能有一个工具可以同时满足设计者和开发者的需要不过Visual Studio和Express Blend两者的集成性也非常好只是它们可能更加专注于提供自身用户对象所需功能 对比Silverlight和FlashAJAX 除了Silverlight之外还有一些其它RIA技术其中最为大家所熟悉的有AJAXAdobe Flash和Adobe Flex等它们之间的区别是非常明显的AJAX的优势之一是无需安装任何插件另外目前已经拥有大量的AJAX工具和控件不过它也有自己的缺点例如AJAX应用一般依赖于浏览器类型和版本而且AJAX页面设计工具相对比较简单同时还有性能问题多数浏览器的JavaScript解释器运行速度相对较慢 Flash更专注于设计者而非开发者而Flex则相反当然人们可以组合使用这两个工具尽管多数Flash设计者一般会忠于自己所选择的技术但是他们可能会发现Expression Blend可以更好的满足他们的Silverlight开发需要Flex程序员则会发现在Visual Studio中编写Silverlight XAML代码文件与在Flex Builder中使用ActionScript编写MXML具有异曲同工之妙当然除非他们在开发Net应用否则不会选择更换自己的工具程序员在很多时候是非常保守的 根据我个人的对比来看Silverlight 要比本文中提到的任何其它RIA技术都强大具有更强大的功能更高的计算性能和更快的显示速度不过我也曾经看到过与我的结论完全相悖的测试这可能与测试的内容和方法有关系在某些硬件上Silverlight应用的运行速度可能比较慢另外XAML支持许多复杂的图形特效它们需要一个好的图形处理芯片来获得足够的渲染速度 Flash插件已经被普遍安装在多数计算机上这一直是其支持者们看好它的一个重要原因不过这并不是什么不可改变的事情现在网络速度已经越来越快下载并安装Silverlight插件并不是什么麻烦的事情据有关媒体调查数据显示尽管Flash的安装率依然在%以上但Silverlight在很短时间的安装率也达到了%以上 当Silverlight问世之际很多人称它为Flash杀手我认为并非如此原因有二一是许多单位已经在Flash视频服务器上进行了大量的投资二是Flash和Flex设计者和开发者们已习惯于使用自己熟悉的工具因此会继续忠于Adobe他们不会关心微软是否可以为他们提供一个更好的技术或工具因为他们不会放弃已经熟悉的工具而去花更多的时间来熟悉另一个新工具 尽管如此Silverlight的确具有强大的技术优势和相对更好的性能它是一个非常值得选择使用的RIA技术尤其对那些具有Net开发经验的程序员和XAML使用经验的设计者来说更是如此 |