写点什么

Silverlight 之轻

  • 2010-12-29
  • 本文字数:3474 字

    阅读完需:约 11 分钟

【编者按】在企业应用的前端开发中,Ajax、Flash 和 Silverlight 争奇斗艳,各有千秋。这次 InfoQ 中文站有幸邀请到来自中国人寿的 Silverlight 专家吴磊先生,为读者分享他的 Silverlight 在企业应用开发中的丰富经验。

就在笔者写下本文的当天,第二届 Silverlight Firestarter 发布会在美国召开,微软企业副总裁 Scott Guthrie 发布了 Silverlight 5 的一系列新特性,并宣布 Silverlight 5 将注重丰富的媒体体验与企业应用开发两大方面的改进。其中针对媒体方面的改进包括 GPU 硬解码、H.264 等 5 项功能,而针对企业应用方面的改进包括 64 位操作系统支持、IE 9 硬件加速、向量打印、文本清晰度、调用非托管代码等 30 多项功能,可以看出 Silverlight 已经逐渐将其未来重心转向企业级应用方面(一直以来,笔者都认为 Silverlight 的强项应该是企业应用)。

Silverlight 作为微软“三屏一云”战略中展现层的重要技术,越来越引起企业开发者的注意。新浪财经、腾讯、淘宝、口碑网等互联网企业已经尝试使用 Silverlight 开发交互性较强的商业应用,而一贯谨慎保守的大型金融公司陆续开始使用 Silverlight 来提高企业应用的用户体验,比如中国人寿(网上服务应用)、中国人保(商务智能应用)已经有相关应用,而像花旗银行、工商银行这样的大型银行也在尝试使用 Silverlight 来实现未来网上银行一些功能。

为什么 Silverlight 在推出短短三年左右时间内就能触动企业开发者呢?原因很简单,Silverlight 具有良好的后台语言框架支持,这就是基于.Net 高级语言的精简运行环境。具体而言原因有三:

  1. Silverlight 之轻,即较之 WPF、Java Swing、Delphi 等 C\S 架构有更加轻量的运行环境与零维护的特点:使用轻量的 CLR Core 运行时环境,不依赖于客户端环境(无须安装体积庞大的.Net Framework,这一点太棒了)。
  2. Silverlight 之重,即较之 Html+JavaScript 等 B/S 架构有更优越的客户端弹性:使用 C#高级语言代替 JavaScript 来实现强大的客户端计算能力、支持多线程,继承了 WPF 丰富的样式、控件、特效与动画,更可控的浏览器适应性,更安全的沙箱模式,客户端嵌入式数据库等。
  3. Silverlight 之美,即较之传统应用有更友好的交互性,更酷的效果。支持完全面向用户体验的开发过程,其快速原型工具使需求与交付物更为明确,用户体验驱动开发,设计与编码分离。

在本文中,笔者要着重强调的是“Silverlight 之轻!”, Silverlight 是企业应用展现层的轻量级解决方案,从本文开始,笔者将采用连载的方式与大家一起探讨 Silverlight 在企业级应用解决方案与特性。

现在越来越多的企业已经开始考虑将原有“竖井状”的 C/S 与 B/S 架构通过 SOA 等理念进行重构与集成,譬如建立以客户、产品、合同为中心的主数据管理平台(MDM),采用数据即服务的方式对逻辑层提供服务,使用企业服务总线(ESB)对这些服务进行消息路由、转换、监控及生命期管理,通过业务流程管理平台(BPM)混编服务实现业务流程自动化,通过业务规则管理平台(BRM)实现对业务逻辑自动化,最后这些应用层服务形成了企业应用的服务器端处理逻辑。而展现层就是企业应用中实现人机交互的最后一步,即信息的输入与展现。现在的企业应用解决方案中基于窗体的 C/S 与基于浏览器的 B/S 架构几乎构成了企业应用的全部,但两者都有其优缺点,C/S 架构在客户端的处理能力与交互性较强,但维护性极差;相反,B/S 架构在客户端的维护性极高,但对信息的处理能力、交互性、跨浏览器一致性方面都有不足。正是如此,相对 C/S 架构更为轻型的 Silverlight 技术就成为了未来高度集成化的企业应用中理想的展现层的候选方案。传统的 C/S 架构,无论是 VC++、Delphi、Java 的 Swing、还是.Net 的 WinForm、WPF 都需要安装体积笨重的运行时环境,即使客户端程序永远不会使用运行环境中的特殊组件,但使用者也只能被动接受这些组件占用计算机资源。而 Silverlight 有着更为轻便的运行式环境(Silverlight3 的运行时环境 4.3M,Silverlight4 为 6M),在如此小的运行环境下面有着 B/S 无法比拟的高级语言支持,也就是说 Silverlight 具有一颗.Net 的心脏—CoreCLR。

CoreCLR 简单来说就是 CLR for Silverlight,是专门为 Silverlight 量身打造的轻型 CLR,用来执行 Silverlight 代码。Silverlight 基于 C#高级语言,使用同样的托管机制与 MSIL 中间语言,CoreCLR 自备编译环境、内存管理器,不依赖于外部环境。打造这个轻型“心脏”的过程并不容易,对于轻型的 RIA 框架来说 Silverlight 运行时环境要考虑两大问题:大小与兼容性。

大小就是运行时环境的大小,从用户的角度来看,下载必须非常小。这就要求将功能集减至最少,目前 Silverlight4 运行时环境大小为 6M,CoreCLR 中的 DLL 文件在 CLR 和 WPF 的类库中几乎都能找到,只不过大大裁剪了尺寸。这其中就包括对基类库(BCL)的消减,.Net BCL 中的很多功能在 Web 客户端上都没有任何意义,例如:由于 Silverlight 不支持 CAS,因此大部分 System.Security 都不是必要的,System.Console 等许多桌面类在 Web 中也没有任何意义。因此,CoreCLR 删减了大量服务器端类库(如 ADO.NET),去除非泛型集合类(如 ArrayList,完全可以通过泛型集合类代替),同时将复杂的桌面类也一并去除(如 PLINQ 和一些动态类),但保留了.NET Compact Framework 和 Silverlight 间的兼容性。

对于兼容性而言,从编程人员的角度来看,针对 CLR 的编码应该始终相同。因此,Silverlight 堆栈底部的各个组件使用了与桌面 CLR 相同的代码,执行引擎和虚拟机都必须相同,这部件包括类型系统、元数据、垃圾回收器 (GC)、JIT 编译器、线程池以及运行时引擎的其他核心部件。但为了适应 Web 应用程序,CoreCLR 进行了一些更改,如富 Internet 应用程序通常简单且运行时间短,JIT 编译器主要侧重于减少启动时间,而非执行更复杂的优化操作,同样,服务器垃圾回收模式可以对使用相似分配模式的多个工作线程进行优化,而对 Web 托管应用程序则行不通,因此,Silverlight 只包含针对交互式应用程序进行优化的标准工作站 GC。

现在的.NET Framework 里有一万个类,十万个方法,但 CoreCLR 中减少到了 46 个命名空间下不超过一千个类。

C#之父(同时也是 Turbo Pascal 与 Delphi 之父)Anders Hejlsberg 认为未来编程语言的发展趋势及未来方向应该朝着框架与工具发展。笔者认为未来的语言发展方向不是朝着大而全的运行时框架方向发展,而是朝着“轻框架、重工具组件”的方向发展。当我们使用 Visual Studio 开发应用程序时,我们首先选择的是“语言”,然后是“运行时框架”,再引入我们需要的“工具组件”。而精干的“运行时框架”与丰富的可选“工具组件”将为企业应用提供更大的弹性、减轻程序大小、优化响应性能。

事实上,目前很多金融企业的核心应用已经在朝着“去客户化”、“去产品化”的小核心方向发展,“小核心”+“大外围”使企业内部核心具有更加持久的生命力、更加灵活的扩展性和更快的反应能力。而企业应用展现层也越来越青睐于使用小而灵活的运行时环境,开发者完全可以根据实际需求挑选合适的工具组件,提供更富弹性的展现层应用。Silverlight 的未来应该更加关注适用性,而不应该过度考虑基本功能的强大,否则将发展成为另一个 WPF,而失去自己的方向。Silverlight4 将 Silverlight3 的身躯加大了 1.7M,加入了一些诸如集合接口 ISet、延迟初始化类 Lazy、元组对象工厂类 Tuple 等复杂类型,加重了 Silverlight 内核。因此,在 Silverlight5 的 Wish List 中,笔者强烈要求 Silverlight5 关注解决跨设备的问题,而不要过度考虑加重基础类库的强大功能,加重 Silverlight 的包袱,使原本轻便的 Silverlight CoreCLR 变得更加臃肿,无法起飞。

“对于未来,希望 Silverlight 仍能轻舞飞扬!”

注:部分内容取材于笔者即将发布的新书《- 企业级 RIA 应用与 Silverlight 开发全流程实战》,敬请关注。

关于作者

吴磊,中国人寿 IT 高级技术主管、高级工程师,拥有 7 年企业级应用开发经验,负责过多个业务系统的开发工作。曾获得系统分析师、 PMP 等认证,2003 年开始接触 RIA 技术,并不遗余力的在企业应用中推广 RIA 技术, 2008 年带领团队成功研发了国内首个 Silverlight 企业级应用—中国人寿养老金咨询系统 (PACS),该项目先后在 Silverlight3 发布会、Teched09 技术大会、QCON2010 全球企业开发大会上作为成功案例进行展示。


感谢张凯峰对本文的策划及审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-12-29 00:004156

评论

发布
暂无评论
发现更多内容

Linux网卡与公网IP地址:一个不可随意配置的世界🌐

GousterCloud

IP Linux Kenel

探索Linux的挂载操作🌈

GousterCloud

Linux Kenel 磁盘挂载

阿里巴巴中国站按图搜索1688商品(拍立淘) API:如何通过图片快速获取商品的标题、价格、图片、链接,提高了更加智能化、个性化的商品搜索体验

技术冰糖葫芦

api 网关 API 文档 API 类型

Doris 与 ClickHouse深度对比和选型建议

智慧源点

Clickhouse Doris

WorkPlus AI助理 | 提供企业AI私有化部署解决方案

WorkPlus

remote desktop mac破解版下载 微软远程连接工具中文版

Rose

Proxifier:网络代理神器,轻松突破访问限制

Rose

WorkPlus:企业级私有化即时通讯软件

WorkPlus

PIRF393

EchoZhou

English

VMware ESXi 7.0 U3p macOS Unlocker & OEM BIOS 标准版和厂商定制版

sysin

esxi OEM unlocker dell hpe

小红书笔记详情API接口:高效获取与分析内容数据的利器

技术冰糖葫芦

api 网关 API 文档 API 类型

WorkPlus Meet视频会议:打破时空障碍,助力企业安全高效协作

WorkPlus

在单交换机局域网中,不同网段的主机通信探秘🌐

GousterCloud

IP Linux Kenel

mnova14怎么安装?核磁数据处理MestReNova 14详细图文下载安装教程 Mac/win

Rose

AnyGo for mac中文破解版,轻松修改手机定位,畅游应用无界限

Rose

为何一个网卡需要配置多个IP地址?🌐

GousterCloud

Linux Kenel 网卡 多网卡

事业-最佳实践-编码-编码规范

南山

数据库设计 代码规范 接口设计 检查清单 编码规范

mac ppt破解版下载 PowerPoint 2019 mac中文永久版

Rose

anytoiso pro mac中文破解版 专业级ISO镜像文件制作工具

Rose

考古:IT架构演进之IOE架构

乐只

系统架构 基础架构 IOE架构

PR 2024破解版下载 Premiere Pro 2024v24.3.0中文直装版 Mac/win

Rose

如何注册midjourney账号

蓉蓉

MidJourney

产品设计案例

执于业务

2024-04-06:用go语言,给你两个非负整数数组 rowSum 和 colSum, 其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和,换言之你

福大大架构师每日一题

福大大架构师每日一题

CAD快速看图 VIP激活版 CAD快速看图破解版 mac/win

Rose

Paste Mac破解版下载 苹果电脑首选剪切板历史管理工具

Rose

一读就懂!B端响应式设计的新手扫盲

执于业务

Linux网卡IP地址配置错误的影响🐧🔧

GousterCloud

IP Linux Kenel

VMware ESXi 7.0 U3p macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)

sysin

macos esxi 驱动 OEM unlocker

“业务架构”

执于业务

IP地址:是给主机配置的,还是给网卡配置的?🤔

GousterCloud

IP Linux Kenel

Silverlight 之轻_Java_吴磊_InfoQ精选文章