一旦设定了x:Name属性,程序可以操作这个元素的属性,这一点与JavaScript在DHTML中操作HTML元素在原理上是相同的:
在程序和XAML元素之间通过名称建立起来的这种联系,对于开发团队和设计团队开发Silverlight和WPF应用来说,是非常关键的。只要这个名称没有改变,程序员就可以修改其后端代码文件,设计者也可以修改XAML文件,而不会破坏两者之间的通讯接口。他们甚至可以使用相同的工具。
不过我发现了一个美中不足的地方,虽然我是一个程序员,但也偶尔自己做一些设计工作,我失望的发现,在Visual Studio XAML设计器中,我无法拖拽控件到图形面板上;它的图形面板只能具有预览作用,因此我智能拖拽空间到XAML文本内容中。不过从另一方面来说,在Visual Studio中的XAML编辑功能具有很好的智能感知支持,这个即时预览面板可以让你非常及时的看到页面的外观效果。
Expression Blend为XAML页面提供了一个图形化设计界面,不过它没有提供太多编程功能支持。它肯定会成为多数设计者选择的Silverlight工具。我所希望的更完美情况是,能有一个工具可以同时满足设计者和开发者的需要。不过Visual Studio和Express Blend两者的集成性也非常好,只是它们可能更加专注于提供自身用户对象所需功能。
对比Silverlight和Flash、AJAX
除了Silverlight之外,还有一些其它RIA技术,其中最为大家所熟悉的有AJAX、Adobe 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 2要比本文中提到的任何其它RIA技术都强大,具有更强大的功能、更高的计算性能和更快的显示速度。不过,我也曾经看到过与我的结论完全相悖的测试,这可能与测试的内容和方法有关系。在某些硬件上,Silverlight应用的运行速度可能比较慢。另外,XAML支持许多复杂的图形特效,它们需要一个好的图形处理芯片来获得足够的渲染速度。
Flash插件已经被普遍安装在多数计算机上,这一直是其支持者们看好它的一个重要原因。不过,这并不是什么不可改变的事情,现在网络速度已经越来越快,下载并安装Silverlight插件并不是什么麻烦的事情。据有关媒体调查数据显示,尽管Flash的安装率依然在90%以上,但Silverlight在很短时间的安装率也达到了33%以上。
当Silverlight问世之际,很多人称它为Flash杀手,我认为并非如此,原因有二:一是许多单位已经在Flash视频服务器上进行了大量的投资;二是Flash和Flex设计者和开发者们已习惯于使用自己熟悉的工具,因此会继续忠于Adobe。他们不会关心微软是否可以为他们提供一个更好的技术或工具,因为他们不会放弃已经熟悉的工具而去花更多的时间来熟悉另一个新工具。
尽管如此,Silverlight的确具有强大的技术优势和相对更好的性能。它是一个非常值得选择使用的RIA技术,尤其对那些具有.Net开发经验的程序员和XAML使用经验的设计者来说,更是如此。