谈到微软专门为Silverlight包装的Core CLR运行时环境,就不得不说到整个.NET框架的优势,很多人将.NET CLR与 JRE做比较,两者都具有相当强大的基础类库支持,可以说为企业开发提供了基础,而Silverlight享受到了这样的基础类库,但为了减小运行时文件大小,提高用户下载安装体验,微软去除了无用的服务器端基类,保留了主要的客户端类库,下面我将结合Core CLR来说明Silverlight在企业级开发中的优劣势。
下表是笔者总结的在企业级应用开发方面Silverlight的优势:
其中最为重要的一点就是前端Core CLR的支持,大家可以参见MSDN来获得Silverlight 4基础类库的全部资料。
本文不会对CoreCLR做过多介绍,结合客户端架构将Silverlight主要基础类库总结如下:
层次
基类库支持程度
XAML表现层
丰富的原生控件(System.Windows.Controls 超过100种控件类)与自定义控件库( System.Windows.Controls. UserControl),支持全局样式修改与资源管理(System.Resources),支持动画(System.Windows.Media.Animation),效果(System.Windows.Media.Effects)
客户端控制逻辑层
.Net Framework多种基本类库支持,包括多线程类库(System.Threading),安全类库(System.Security),反射类库(System.Reflection),Linq类库(System.Linq),数据流操作类库(System.IO),XML操作类库
通讯层
包括ADO.Net交互类库(System.Data.Services),WCF交互类库(System.ServiceModel),网络类库(System.Net )等等
而使我们选择Silverlight的另外一点是,结合.NET服务器端技术,可以在一个技术体系下构建端到端的RIA应用,在开发上由于语言的一致性可以共享类库,而同样的IDE环境能够提供方便的前后端一体化调试功能等功能。
通过Silverlight如何加强数据展现能力
要构建企业级应用,就必须要使得数据的展现和编辑更加方便直观,传统基于HTML标签语言的web应用,可以通过input和Table等来实现数据编辑与展现,但无法超出其能力之外,很多第三方的Web应用控件都是利用JS脚本来实现排序,拖拽等效果,但脚本语言毕竟是低效的,并且具有许多外部原因(如浏览器环境等)使得其稳定性不高,而Silverlight原生的控件在数据展现与编辑上面具有良好的表现。以PACS系统中的数据列表为例,使用Silverlight的DataGrid控件,原生支持列排序,列拖拽,也可以通过代码实现过滤,分页。由于我们在一些应用场景中需要对每一条记录都有对应的处理流程和功能按钮,因此使用DataGrid控件中定义行模板(DataGrid.RowDetailsTemplate)就可以实现自定义行样式的效果。而在< DataTemplate />中你可以加入任何XAML元素,使得Silverlight应用可以简单快速的实现以前难于实现的效果。
当然除了数据列表的展现方式,Silverlight提供更多的图形化展现方式,比如原生的各种统计图表,以下是Silverlight的Chart控件应用,在拖动各种参数时,图表将以动画形式变换,而不需要写任何代码。
Silverlight Do It in Naturally
除数据展示以外,在传统WEB应用中,可能会遇到更多的数据录入上的限制,比如一种分段设置参数的应用场景,当我们要输入任意年龄段的对应参数时,传统Web应用没有好的解决方案,可能只会通过下面的方式来进行数据录入:
但如果使用Silverlight自定义控件就可以实现如下更加人性化的设计:
通过点击就可以简单实现在分段的中间插入分段,拖拽就能删除分段,这样的设计符合"do it naturally"用户体验设计原则。而且Silverlight"一切皆为用户控件"的思路,使得开发者可以很简单的开发一个用户控件,而且这些用户控件可以被整个项目充分复用。
"体验先行"的开发流程
Silverlight基于"体验先行"的设计,颠覆了传统业务需求模式,改变传统开发流程,是开发团队可以选择以界面而非功能为起点的开发模式。在PACS项目需求分析中,我们没有采用需求规格说明书面向功能的阐述方法,因为业务与IT的认识隔阂往往会导致项目失败。在Silverlight设计工具Blend中包含了原型开发工具SketchFlow,通过简单的原型控件拖拽就可以快速开发系统原型,使得业务部门迅速理解界面与逻辑关系,避免了业务与IT在最终交付物认识上的差异。以下是PACS在需求分析过程中的原型与最终系统截图对比:
Silverlight在PACS开发中带来了开发过程的革命,经过最终评估,采用快速原型的方式大大减少了需求变更,确保了业务满意度。
展望未来
展望Silverlight技术未来发展,在刚刚结束MIX10大会上,微软已经将Silverlight定位为未来Windows Mobile的主要开发技术,加之以前在跨浏览器,跨平台的策略,实际上已经实现"手机、PC、电视"三屏合一,可以很清晰地看到微软有使用Silverlight实现客户端应用大统一,从而全面收复Web应用失地的趋势。因此,未来微软肯定还会不断加大此项技术的认知度,而Adobe公司不会放弃通过占有率全面反击的机会。这也是我们作为企业开发者希望看到的竞争态势,那么RIA在经历7年之痒后,春天是否真的要来了,我们拭目以待!