用户体验
为什么选择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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。