首页 使用Silverlight构建企业级RIA经验分享

使用Silverlight构建企业级RIA经验分享

举报
开通vip

使用Silverlight构建企业级RIA经验分享 使用Silverlight构建企业级RIA经验分享 信息技术部 高级主管 吴磊 演讲内容 最佳实践 • 案例演示 Silverlight优势 • 为什么选择Silverlight Silverlight 企业级开发方法论 • 快速原型 中国人寿 打造国际顶级保险集团 • 全球市值最大的保险企业 • 连续7年入选全球500强,2009年度排名133位 • 中国最大的商业保险集团 • 中国唯一一家资产过万亿的保险集团 • 中国资本市场最大的机构投资者之一 首个全部基于Silver...

使用Silverlight构建企业级RIA经验分享
使用Silverlight构建企业级RIA经验分享 信息技术部 高级主管 吴磊 演讲内容 最佳实践 • 案例演示 Silverlight优势 • 为什么选择Silverlight Silverlight 企业级开发方法论 • 快速原型 中国人寿 打造国际顶级保险集团 • 全球市值最大的保险企业 • 连续7年入选全球500强,2009年度排名133位 • 中国最大的商业保险集团 • 中国唯一一家资产过万亿的保险集团 • 中国资本市场最大的机构投资者之一 首个全部基于Silverlight的企业级应用 •国内首个专业化的养老金咨询平台 •首个全部基于Silverlight 的企业级应用 •RIA富应用技术在互联网应用中的成功尝试 Silverlight 3发布会 与Teched09 成功案例 2008年9月 -2009年10月 系统演示 http://pacs.clpc.com.cn/pacs/ Next Web App=RIA? 2003年-2010年 RIA经历七年之痒,是否能在未来互联网应用中绽放出美丽的花朵? 带宽限制 RIA   规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 性能问题 安全性 HTML 5 RIA特性 RIA面临的挑战 B/S  &  C/S 浏览器无关 摆脱 与
用户体验 为什么选择Silverlight? 企业应用特性 Silverlight 优势 数据访问能力  前端.Net Framework 精简类库支持  支持TCP\UDP\Socket通讯 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,支持WCF RIA services的直通访问方式,支持Web service、 HttpHandler方式  支持传输任意传输对象 性能  CoreCLR支持,运行编译的本地代码  多线程支持、客户端缓存  支持硬件加速 安全性  通讯安全:支持数据与通讯的加密  访问安全:基于透明安全模型,使得程序和数据都 在“沙箱”中运行,实现高安全性 跨平台  浏览器:IE, Safari, Opera, Firefox⋯  OS:Windows, MAC, Linux,Windows Phone, Symbian 运行时特性  无需部署.Net平台就可以执行.Net代码 Silverlight直接解释XAML语言供搜索引擎索引 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 时特性  前后端语言的无缝集成  丰富的控件与类库支持  设计与编码分离  前后端一体化调试  原生快速原型工具 Silverlight 的心脏-CoreCLR CoreCLR CLR Silverlight引擎.Net 引擎 精简文件大小 去除无用类库 提高性能 简化CAS安全机制 大于 50M 4.3M Silverlight 跨浏览器、跨平台、跨设备 跨浏览器 跨平台 跨设备 CoreCLR 基类库与其他平台程序集 平台适配层 (PAL) Mac OS X (Intel)Windows Silverlight 性能实测 前端界面性能测试 前端运算性能测试 500+ NPC 100万内素数计 算,仅需0.4秒 高FPS Silverlight 网络通信与数据访问能力 System.N WebClien HttpWeb Sockets Socket TcpClient ⋯⋯ ⋯⋯ TCP\UDP\Socket WCF:WebServices \H:pHandler \RIAServise 异步调用 字符串与数据流 监控上下行进度 Silverlight 与生俱来的安全性 简单严格的“透明安全模型”:  Silverlight application is running in a “sandbox” Silverlight像是在“沙箱”中运行,所有用户代码都是透明代码,不能直接访问客户端资源,只能通 过“IsolatedStorage”内以域名彼此隔离的独立存储。 跨域访问许可:Cross-­‐Domain  Policy  Files(名为clientaccesspolicy.xml) h:p  、h:ps、socket-­‐resource 兼容支持 Adobe  Flash  跨域策略文件(名为 crossdomain.xml) Transpar ent • 写入文 SafeCriti cal • 文件流 编写器 Critical • WinAPI CreateFil e Silverlight用 户代码都是 透明代码 Or Silverlight 实现RIA真正的端到端 花:XAML表现层,丰富的原生控件 (System.Windows.Controls  超过100种控件类)与 自定义控件库(  System.Windows.Controls.   UserControl),支持全局样式修改与资源管理 (System.Resources),支持动画 (System.Windows.Media.AnimaUon)、效果 (System.Windows.Media.Effects) 叶:客户端控制逻辑层,.Net  Framework多种基本 类库支持,包括多线程类库(System.Threading), 安全类库(System.Security),反射类库 (System.ReflecUon),Linq类库(System.Linq),数 据流操作类库(System.IO),XML操作类库 (System.Xml),JS  API类库 (System.Windows.Interop  )等等 茎:通讯层,包括ADO.Net交互类库 (System.Data.Services),WCF交互类库 (System.ServiceModel),网络类库 (System.Net  )等等 根:服务器端,高度融合的.Net  Framework平台 支持,同样也可使用Java等语言。 Silverlight 前端.Net原生类库支持 Silverlight 商业应用 淘宝闪光店铺 Web QQ CRM 企业管控系统 野村证券 h:p://msdn.microso_.com/zh-­‐cn/silverlight/ff431226.aspx h:p://www.silverlight.net/showcase/ Silverlight 商业应用 航线查询预订 Bing Map 增强现 实 网络游戏 保险与银行开源示例 Silverlight企业级项目开发方法论 需求分 析-­‐快速原 型工具 组件与界 面开发 • 样式与 架构设计 参考模型 • 持久化 WBS分解 与编码实 现 Silverlight 开发团队组成 业务分析师 用户体验专家 架构师 程序员 需求/测试 员 3 1 2 4 2 设计师 1 需求 分析 使用 Blend开 发原型 系统 架构设 计 公用控件 开发 前端逻辑 实现 原型 检查 UAT用例 编写 需求 分析 界面 设计 使用Blend 设计控件 内部架 构培训 需求 分析 数据架 构设计 持久化层 开发 后端逻辑 实现 集成测试 用例 需求 分析 集成 测试 单元 测试 UAT 测试 使用TFS  2008进 行软件生命周期 管理 业务需求流程描述的复杂度 UML?需求规格 说明书 房屋状态说明书下载罗氏说明书下载焊机说明书下载罗氏说明书下载GGD说明书下载 ? 使用SketchFlow实现快速原型 需求分析的同时 使用Expression   Blend的Sketch   Flow功能完成快 速原型开发,使 得业务需求与最 终交互物完全一 致 使用SketchFlow实现快速原型 组件与界面开发 Silverlight 资源与视觉样式模板的全局控制 App.xaml Resource ControlTe BuleButto GreenButt ⋯⋯ Color SolidColo Resource Style Storyboar 组件与界面开发 Silverlight 资源与视觉样式模板的全局控制 控件在设计时可以快 速的在不同的视觉模 板间切换。 Style="{StaUcResourc e  BlueBu:onStyle}"   组件与界面开发 Silverlight 快速开发用户控件 UserControl Control Framework Element UIElement Visibility,Effect,  MouseWheelEvent,  Drag,  KeyDown,   MouseEvent  (CaptureMouse,  ReleaseMouseCapture),   AddHandler,  RemoveHandler,  UpdateLayout,  CacheMode,… LoadedEvent,  Height,  Width,  ActualHeight,  ActualWidth,   DataContext  ,  Style,  Tag,  Align,  SetBinding,… Background,  Border,  Font,  IsEnabled,  Padding,  TabIndex,… 一切皆为用户控件的思想,使得 Silverlight程序复用性大大增强,在任何用户控件XAML 中使用名称空间就可引用其他用户控件;而利用强大的 依赖项属性,可以实现控件的数据绑定。 组件与界面开发 Silverlight 快速开发用户控件 组件与界面开发 Silverlight 快速开发用户控件 在分段设置控件中引用命名空间: xmlns:ux="clr-­‐namespace:PACSSLAPP.View.CommonControls“ 实现对其他控件的简单引用如: 设置数轴长度依赖项属性: public  double  AxisLength                {                        get  {  return  (double)GetValue(AxisLengthProperty);  }                        set  {  SetValue(AxisLengthProperty,  value);  }                }                public  staUc  readonly  DependencyProperty  AxisLengthProperty  =                        DependencyProperty.Register("AxisLength",  typeof(double),  typeof(XparameterAxis),                            new  PropertyMetadata(OnAxisLengthChanged)); 组件与界面开发 Silverlight 快速开发用户控件 使用Path中贝塞尔曲线实现列名映射控件: this.Line.SetValue(Path.DataProperty,  pathData); 使用MouseLe_Bu:onDown\MouseMove\MouseLe_Bu:onUp实现控件拖拽: UserControl.CaptureMouse(); UserControl.ReleaseMouseCapture(); 架构设计参考模型 IDALDALFactory Model SQLServer DAL Oracle DAL BLL UI BLLStrategy Data Access Layer Business Logic Layer Presentation Layer BLLServices public  class  DAL:  IDAL {          … } SQLServerDAL和OracleDAL模块均实现IDAL模块的接口,其中包含的逻辑就是对数据库的 Select,Insert,Update和Delete操作 服务端架构 架构设计参考模型 IDALDALFactory Model SQLServer DAL Oracle DAL BLL UI BLLStrategy Data Access Layer Business Logic Layer Presentation Layer BLLServices public  staUc  IDAL  CreateDAL() {          …          return  (IDAL  )objType; } 在数据访问层中,完全采用了“面向接口编程”思想,抽象出来的IDAL模块,脱离了与具体数据 库的依赖,从而使得整个数据访问层利于数据库迁移 服务端架构 架构设计参考模型 IDALDALFactory Model SQLServer DAL Oracle DAL BLL UI BLLStrategy Data Access Layer Business Logic Layer Presentation Layer BLLServices private  IDAL  dal; dal  =  DataAccess.CreateDAL(); return  dal.get(ID); 在业务逻辑层中,不能直接访问数据库,而必须通过数据访问层。与具体的数据访问逻辑无关, 则层与层之间的关系就是松散耦合的 服务端架构 架构设计参考模型 Controller Model Silverlight Server Command Silverlight Client Server View (Xaml+Codebehind) 客户端界面由View视图组成: 1、View通过使用Silverlight中的双向数据绑定Binding与Model中的数据进行绑定并显示。 2、View根据用户的一些操作抛出自定义的事件Event。 3、事件被Controller监听并将其映射到与之相对应的Command命令上进行业务逻辑等处理并 更新Model中的数据。 客户端架构BLLServices WCF (Httphandler,WebService…) Dispatch EventMapping BindingUpdate 23 4 1 简称: “前三层后三层”架构 高度融合的前后端程序设计 Model Model Browser Server 持久化实体只需要在Server端工程中开发,Silverlight工程可以通过外部链接或者DLL引用的方 式共享Server端工程实体,不仅减少了开发量,更重要的是保证了前后端实体的一致性 前后端共享实体 Link or DLL Silverlight前端单例模式的优势 Model View (Xaml+Codebehind) Data UI 单例绑定优势: 1.不用操作界面元素,只需要直接操作数据,界面就会收到 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 随之改变 2.单例使得切换界面(用户控件)时数据不丢失,并且可以保证业务数据一致性 3.单例减少客户端类的实例数量,减少内存开销 4.一次性将常用数据加载到客户端单例中,可以减少网络开销与服务器端压力 界面元素使用实体单例进行绑定 Binding (One Way\Two Way\...) Silverlight 多线程任务分派 Silverlight支持多种后台线程方式,避界面阻塞: Thread,  DispatchTimer,  BackgroundWorker,  ThreadPool 线程之间通信可以使用EventHandler Dictionary _httpServices 客户端通信线程队列与UI线程彼此 分离,避免界面阻塞 Silverlight Server.Core Silverlight Client.CoreBrowser Server Command GetDataAsync 异步通信 sender.Dispatcher.BeginInvoke (() =>{//界面响应}); Requester Responser Task Task CallBack Silverlight 通信内容加密 Silverlight内置多种数据加密算法:  System.Security  下有常用的散列加密算法,如AES\X. 509\ASH1\ASH256等 当然也可以自行扩展加密算法使得数据更加安全 AesManaged aes = new AesManaged(); try { using (MemoryStream mStream = new MemoryStream()) { using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bIV), CryptoStreamMode.Write)) { cStream.Write(byteArray, 0, byteArray.Length); cStream.FlushFinalBlock(); encrypt = Convert.ToBase64String(mStream.ToArray()); } } } 使用AES加密通信内容 Silverlight Server Silverlight ClientBrowser Server Requester .Encrypt Responser .Decrypt 架构总结 Silverlight  Client  MVC  Architecture 原有分层架构虽然实现了模块间松耦合, 但“前三层,后三层”分层仍然略显繁琐, 以致在开发过程中效率不高。 XAP无法实现动态加载,功能增加后XAP包 大小将急剧增加 在Silverlight4中内建MVVM开发架构,结 合RIA可以实现快速开发要求 XAP包大小可以通过MEF动态加载来缓 解,但如果要实现负载均衡与直接加载 XAML,就需要通过WebClient按需下载服 务器端控件 Model Controller& Command View (Xaml+Codebehind) View (Xaml+Codebehind) Model Silverlight  Client    MVVM  Architecture View  Model Domain Context View (Xaml+Codebehind) View (Xaml+Codebehind) View  Model Data Binding Data Binding Model 如何减小Silverlight XAP 大小 尽量使Silverlight XAP只包含文本 能使用Path、Border就不要使用图片 即便使用图片也不要直接放在客户端,而要连接到服务端 使用MEF动态加载XAP Silverlight XAP伪装与DLL混淆器 使用JS加密伪装XAP名称 JScript.Encode加密方式将Html源代码中的XAP明文加密: Document.Write(Unescape(密文名称)) XAP中的DLL使用混淆器加密 为防止XAP包中的DLL有反编译的风险,在发布前应使用混淆器混淆生成的DLL文件: 1、使用VS自带的Donfuscator Community Edition 2、使用第三方混淆器如:DeepSea Obfuscation Silverlight快速开发演示 Welcome To Next Web – RIA!
本文档为【使用Silverlight构建企业级RIA经验分享】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_800542
暂无简介~
格式:pdf
大小:4MB
软件:PDF阅读器
页数:40
分类:互联网
上传时间:2010-09-11
浏览量:20