现在的位置: 首页 > 综合 > 正文

统一的UI编程:Silverlight (RIA) 和 WPF (Windows UI)

2013年09月17日 ⁄ 综合 ⁄ 共 1677字 ⁄ 字号 评论关闭

 

我当年(大概2001年)在微软听Anders Hejlsberg (http://en.wikipedia.org/wiki/Anders_Hejlsberg)讲述他设计C#的时候,很是为他的远见折服。C#最重要的一个特点是将VB的易用性,C++的系统编程能力集成一体。其远一点的目标是给开发人员一个统一的语言平台来开发Windows界面软件与Web客户软件。后一点由于受到HTML和浏览器的限制,ASP.NET技术和Windows Form 软件开发还是相差甚远。直到都是基于XAML的WPF与Silverlight的出现统一编程才成为可能。现在是2009年三月了,C#和Silverlight 都进入3.0了,这个目标有似乎有实现的可能了。实际情况呢?

这是一篇早期讨论WPF和Silverlight 代码重用的文章 http://msdn.microsoft.com/en-us/magazine/cc895632.aspx。Silverlight是WPF的一个子集,包含了布局(Layout)管理,数据绑定(data binding),样式(style),媒体(media),动画(animation),图像(graphics),和模板(templates)。但是Silverlight 2 只是大约5兆的浏览器插件,因此只包含了核心CLR,一个微软 .NET Framework 3.5的特殊版本包括WPF,WCF客户端子集,XAML解析器(parser),以及一系列定制的Silverlight控件。但是在Silverlight里也有一些WPF所没有的API。比如WebClient以及Visual State Manager (VSM)。这二篇文章 http://msdn.microsoft.com/en-us/library/cc903925(VS.96).aspx  http://www.devx.com/RIA/Article/41097/7184给出了兼容性列表。
微软一直在向二者的兼容性努力。本来在基础上都用兼容的 .NET Framework和XAML。现在又增加了对UI控件的兼容。对Silverlight 2.0,微软发布toolkit (http://www.codeplex.com/Silverlight/)。这个Toolkit会包含在Silverlight 3.0 的SDK里。相应的兼容控件会出现在WPF SDK中。
这是一个相关的视频链接:Jeff Wilcox on Sharing Skills and Code with Silverlight and WPF。按Jeff的建议,程序员应该先开发Silverlight应用,再补充WPF的功能。WPF主要用在控制外设,与其他软件比如Office软件的交换上。感觉上Silverlight 3.0 和 .Net Framework 4.0 会使兼容性更好。
这篇最近的文章(http://elegantcode.com/2009/03/26/ria-the-death-of-server-page-development/
分析了WPF和Silverlight的差异以及作者自己共享WPF 和Silverlight代码的经验。总结下来
1. Silverlight的性能不如WPF。但是Web程序的数量可能是WPF的二十倍。
2. 由于Silverlight的功能(比如安全性)很受限制,所以有些功能像本地需要大量数据访问,同步或缓存的应用,只有WPF才能承担。
3. 通过采用Prism (http://www.codeplex.com/CompositeWPF) 和 CSLA.NET http://www.lhotka.net/Default.aspx技术可以消除许多底层差异,从而使代码重用率达到85% 到90% !
Java走到这一步大概至少需要五年。JAVA程序员的唯一选择是Adobe的Flex和AIR。但是要重新学习新的语言与类库,还有其IDE不知道会不会有VisualStudio那么好用。
不过可以肯定的是ASP.NET应该不会用了。

 

抱歉!评论已关闭.