WPF和Silverlight及ExtJS和JQuery 比较(个人随笔)
一.WPF和Silverlight概念
- WPF和Silverlight 渊源
WPF与上一代的WinForm相比 其优势在于更加容易地创建漂亮的应用程序界面,其它方面倒没多少变化。WinForm是基于GDI+的界面技术,UI最终都是调用GDI+函数绘制而成的,无论是窗体 自定义控件都使用GDI+。而WPF则不再依赖于GDI+,它从GDI+脱离出来,UI的呈现都基于Direct3D,界面的绘制工作都是由D3D完成的。因此,在WPF的类库中,封装了很多Direct3D的操作,通过使用这些类 不仅可以方便的绘制平面图形,也能很方便地绘制3D界面,也容易创建动画效果。最终用户界面将得到很大的改善甚至是变革.
SilverLight作为WPF的一个轻量级的版本,比WPF削减了很多功能, 如,WPF支持直接在XAML中绑定触发来触发动画,而SilverLight就只能通过托管代码或者Javascript来进行。
另外,WPF直接支持3D效果和3D镜头变换,但是SilverLight就不支持这个了。
Silverlight原名WPF/E 就是WPF Everywhere 只是WPF的一个子集。WPF在多媒体编程领域拥有SilverLight所不能的优势。WPF不能读取SilverLight的Xaml文件,但SilverLight可以读取WPF的Xaml可以看出WPF和SilverLight的Xaml不是完全兼容的。
SilverLight是基于浏览器插件的,在浏览器中运行,服务器端不需要部署任何环境,客户端只需要安装Runtime浏览器插件,无须安装.net Framework 3.0。所以,SilverLight的运行环境不受操作系统和浏览器的种类限制(更准确的说,是受到较少的限制)。
WPF可以编写Web程序或者桌面应用程序,可以直接编译为独立运行的.Exe文件。WPF运行时必须安装.net Framework 3.0。这就要求WPF目前运行的操作系统必须是Windows Vista或者Windows XP SP2
- WPF和Silverlight定义
WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。
Silverlight最初称为WPF/E(E来自于Everywhere的首字母),是面向运行在浏览器中的Web应用程序的一个WPF子集。
WPF Silverlight都是新一代的界面呈现技术,他们都统一地使用XAML语言来描述界面 在XAML语言中描述UI元素。
二.WPF和Silverlight的优缺点
- 从业务应用的角度
从公司业务的角度来看,选择WPF或者Silverlight 根本的决定因素是我们系统客户端需要做哪些工作,或者说客户端是否需要承载简单运算或验证之外的一些东西,如果客户端应用程序主要是为了展现后端数据的前端界面的话——选择Silverlight 4已经完全足够。不过,如果你的客户端应用程序需要更紧密地和客户端机器集成,并且其他一些东西(如支持对第三方程序的对接)也要放在客户端的话,使用SL4的信任提升OOB模式也可能胜任,但是这样会给开发带来更多的挑战,也可能需要牺牲开发效率或功能来达成开发目标。这样则需要切切实实地做好前端需求分析,如果应用程序和客户端机器资源有大量的交互的,WPF仍旧是最好的选择,能让你的开发工作事半功倍。
再从公司各个部门的主要职责和目前系统的问题来看,客服相关可能需要提升用户满意度,全面提升系统的易用性并伴随完善各种信息数据的查询,SL4已经可以满足需要,针对财务或后道社保等部门,主要职责就是对大批量数据的集中处理,数据监管,自定义查询,这样来说WPF可能更合适。
- 从技术开发的角度
个人认为从技术应用层面来说,微软应该推动WPF成为富桌面应用程序的“核心”平台。但微软此时正推进Silverlight成为这样的平台。导致某些人则认为WPF就快消亡了,不过从微软内部技术倾向来说,至少在未来几年不会出现这种情况。
以下几个方面强调了WPF和Silverlight之间的一些重要不同点:
一方面,Silverlight是完成面向跨平台RIA的最好方式,基于浏览器的前端展示,。一方面,WPF是编写用于Windows 桌面的托管代码应用程序的最好方式,但WPF相对Silverlight更高的资源消耗和缓慢的开发进度也是我们需要考虑的问题。
另外在系统部署上WPF 需安装.net 3.5的famework,大概200多M,Silverlight则安装浏览器插件即可,大概不超过8M。
Silverlight不支持IO相关的类,不支持Office之类的类,不支持DCOM,对文件读写等处理支持不如WCF。
- 未来的架构趋势角度
从未来的架构趋势角度来看,应用程序的WCF化已经成为主流,WCF作为一个通信架构,不负众望的成为新的主流同性应用,而WPF由于同Silverlight定位冲突,慢慢已经被边缘化,虽然vs2010和office2010都是WPF开发。WPF的应用领域已经缩减到一些对多媒体处理应用要求较高的领域,从微软的产品定位上来看,一是让位Silverlight,二是不排除WPF同Silverlight进行整合的可能。
对于目前WPF和Silverlight的Xaml不兼容等等一系列问题,明显看出就是Framework和Silverlight发展不同步,
Silverlight还在发展时期,版本更新很快,WPF基数成熟,相对比较稳定。
三.WPF和Silverlight 对比总结
总结以上3个大方面,列出WPF同Silverlight的优缺点:
功能对比 |
WPF |
Silverlight |
安装部署 |
Famework3.0以上,200M左右 |
浏览器插件,8M左右 |
资源消耗(内存) |
中 |
低 |
应用方向 |
跨桌面和浏览器多媒体处理,富文本支持,桌面应用可包含复杂逻辑处理,通信、文件处理接口丰富,支持客户端硬件加速 |
跨平台浏览应用(包括手机,苹果等),配合js处理UI应用,相对WPF缺少文件操作(Office)、Windows API、3D控件、视频加速等功能扩展 |
系统要求 |
Win7,winXP |
无要求 |
|
|
|
|
|
|
四.JQuery、Extjs的区别和联系
- JQuery是一个优秀的Javascrīpt框架,轻量级的js库(压缩后只有21k),兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动态效果,方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,开发资源丰富,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,
- ExtJS是一种主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。功能丰富,界面美观以及ext的表格控件都高居榜首,主要思想就是独立于后台技术的前端ajax框架。
- extjs是基于组件级的,而jquery主要是简化Dom操作,extjs可以省下你大量做界面的时间,而且几乎不用怎么写代码,使用ext大部分时间都是学习怎么使用它的api,但是如果你想要修改ext的代码或者实现,基本上比较困难。
jquery则不太相同,它很精巧,核心+插件式的开发应用.你不需要去动核心,你需要的功能,你可以通过插件来完成,如果你没有现成的插件,自己也写一个插件,相对ext简单得多.比较列表如下:
jQuery
设计思想
简洁的思想:几乎所有操作都是以选择DOM元素(有强大的Selector)开始,然后是对其的操作(Chaining等特性)。
优点
小,压缩后代码只有20多k(无压缩代码94k)。
Selector和DOM操作的方便
Chaining:总是返回一个jQuery对象,可以连续操作。
文档的完整,易用性(每个API都有完整的例子,这是其它框架现在不能比的),而且网上还有很多其它的文档,书籍。
应用的广泛,包括google code也使用了jQuery。
缺点
由于设计思想是追求高效和简洁,没有面向对象的扩展。设计思路和Mootools不一样。
CSS Selector的速度稍微有些慢
Ext JS
设计思想
组件化,推进RIA(Rich Internet Application)的应用。
优点
强大的UI,而且性能不错,这是其最大的优点。
速度快,管是UI还是其它模块。
100%面向对象和组件化的思想,一致的语法,全局的命名空间。
文档的完整,规范,方便。
活跃的社区,迅速增加的用户量。
模块化实现,可扩展性强。
所有的组件(widgets)都可直接使用,而无需进行设置(当然,用户可以选择重新配置)。
缺点
稍复杂。
为重量级的框架(包含大量UI),体积大。如果导入ext-all.js,压缩后也有近500k。
ExtJs与jQuery比较
1.EXT体积大,jQuery更专注于简化最基础的开发工作.所以使用起来,也就感觉更像是使用原始的js进行开发一样
2.EXT界面美观,jQuery一般
3.EXT代码复用性强
4.EXT兼容性还是有点小问题,jQuery兼容性良好
5.EXT不易调试,不易修改
6.Ext使页面是只留下body,搜索引擎无法收录。(内部系统无所谓)
7.jQuery的事件绑定更强
结论,Ext简化了很多工作,让开发更简洁,更方便,但也带来了很多麻烦,给我们留下了更小的选择空间,局域网里面我们可以使用EXT,但是在互联网上优先jQuery
五.Silverlight同传统BS系统的对比的优势
- 开发效率
较高,一整套的SDK及控件(不断丰富中),方便实用,开发资源丰富,相对于Jquery等成熟的js框架,调试,优化更方便。目前SL已经有100多个独立控件处理输入输出,排版以及视觉效果。从系统后台数据绑定的角度来说,Silverlight 提供了查询数据元的三种内置LINQ选项(LINQ到对象,LINQ到XML,LINQ到JSON)。把数据和UI绑定时,Silverlight提供了单次(one-time),单向(one-way)和双向(two-way)绑定支持。
注:LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
2. 客户体验
SL的推出就是为了提高客户体验来的,界面展现元素丰富,学习资源多。提供了丰富互动的应用程序(RIA),提升了人机交互易用性水平。
3. 安全性
MD5,HASH,对称加密都已经在SL中实现,故,有了算法上的保证,就是自己创建SSL通道,以及使用数字证书技术,都还算比较容易。
即使是代码级的安全,用传统方式实现也可以。
4. 后期维护性
这点现在也是我存在顾虑的一点,Silverlight发展很快,伴随着版本的不断更新,新的功能和控件不断发布出来,如Silverlight1到2到3也就几个月的时间,这对系统的稳定性带来一定的影响,好在微软在Silverlight的立场上是鉴定和长期的,而且在官方也开放了一些实用的资源例子,在各个方面推动Silverlight的应用,这也多少打消了我的一点顾虑。
结论:
以上通过这次对extjs、JQuery、WPF、Silverlight的调研,分别了解了各个UI框架的优缺点及各自的联系,再结合本公司实际业务系统的应用环境,应用场景来看外网建议选择Silverlight,内部系统,应用WPF。
对于现在即将开发的新系统来说,使用WPF /Silverlight的原因如下:
- 之前有一定的技术积累,上手相对容易。
- 在微软的这个大背景下,发展前景较好,支持资源丰富。
- 最新的前沿技术应用,界面友好,展现方式新颖,接受程度高,支持多媒体、丰富格式的文档、3D、触摸控制等,在短时间内开发出先进的应用程序,尤其是报表展现方面。
- Xaml语法简单,可配合Silverlight工具动态生成,将UI设计同后台编码有机的分离,并且集成vs环境,运行和调试比较方便。
- Silverlight客户端无需安装几百兆的Framework,只需安装客户端插件即可(8M)
- WPF /Silverlight service直通访问,支持多线程、客户端缓存、硬件加速等体现RIA端到端的优势
- Silverlight跨平台和浏览器,支持手机等多媒体应用。
- WPF同Silverlight的界面语言均为XAML,可以很快将WPF的界面设计应用到Silverlight中,二者后台都是调用WCF处理逻辑运算和操作数据库,但两者的开发库不一样,合并使用需考虑2种解决方案。
- WPF的交互性更强,相对于Web的ajax技术,从开发精力、交互性能保持领先,同时WPF支持客户端同网络断开的逻辑处理,同时WPF可以直接操作xml作为数据源。