离线数据访问渐渐开始流行,由于Microsoft 的数据访问技术正趋向于广泛使用离线数据,因此了解如何使用离线数据对您未来的开发工作是至关重要的.本文没有具体摘录实现的方法,只是记录下了一些基本理论.
一 离线用户需求与技术挑战
1.用户需求
当连接到网络或者断开网络连接时,不影响用户使用
只能同步特定用户的数据
初始化数据的部署要与应用程序的部署类似
只同步发生了变化的数据
2.技术挑战
离线数据可能存在冲突
数据大纲可能发生变化
不可靠或者速度较慢的网络连接
同步时的数据集中问题
为离线用户流水号的分发
3.结构图
离线数据保存在客户端的数据缓存中
二 数据通讯策略
1.数据传输策略
1.1面向对象:例如DataSet
–通过方法调用或者属性来传递数据对象 -数据集或者自定义业务实体
1.2面向服务:例如WebService
–Invoke操作,传递或者接收参数 –传递包含数据的消息
1.3面向数据:
–执行查询/复制/队列
2.ADO.NET
2.1采用偶尔连接策略:只有在获取和更新数据时才连接到数据库
2.2数据装载到数据集中
2.3可以将数据集保存在本地客户端:隔离存储空间
2.4支持冲突检测
3.Enterprise Services (COM+) & (MSMQ)Microsoft Message Queuing Services
3.1企业级应用,实现客户端与服务器异步调用
3.2MSMQ采用队列保存调用过程,支持自动重试
3.3采用COM组件技术
4.数据库合并复制
SQL Server 2005
4.1 支持冲突检测的双向数据同步
4.2 支持数据过滤以便于每个用户都能够获得自己的数据
4.3 支持通过Internet同步数据的能力
4.4 在第一次同步时能够自动部署每位用户的数据子集
4.5 创建订阅和同步控制以及监视的新的API
4.6 支持数据库大纲的变化
4.7 性能和可扩展性都较Microsoft SQL Server(TM) 2000有了很大的改观
三 连接管理
1.识别与控制在线 vs 离线操作
–修改 界面 / 功能
2.识别技术
–尝试连接操作 – 错误处理:效率比较低
–WinInet API:非托管,实现起来比较复杂
–Offline Block Connection Management
–NetworkChange/NetworkInterface类:可以通过委托方式实时监控连接状态
四 客户端数据缓存
1. 内存
2. 保存数据传输对象
– 文件系统 – 隔离存储区
3. 数据库
– Microsoft SQL Server(TM) 2000 Desktop Engine (MSDE)
– SQL Server(TM) 2005 Express Edition
– SQL Server(TM) 2005 Mobile Edition
4. 消息队列
– MSMQ
– 数据库
Custom, SQL Service Broker
– Enterprise Services
五 客户端数据同步
1. 引用数据 vs. 可操作数据
2. 面向数据
–合并复制
3. 面向服务
–远程方法调用
–消息传递
4. 确认返回消息
5. 轮询
并发性问题
6. 解决并发冲突
–乐观锁于悲观锁
7. ADO.NET检测 / 异常传播
–采用乐观锁:通过ADO.NET事务的方式解决
–多数据库同步:分布式事务– Enterprise Services– "Indigo"
六 Offline Application Block
1.连接状态检测 / 控制
2.下载/上传 数据
3.队列数据请求
4.引用数据缓存
5.异步请求处理
6.加密/存储数据签名
7.提供连接检测模型,数据请求队列,数据缓存,服务代理
总结:
离线数据访问渐渐开始流行,由于Microsoft 的数据访问技术正趋向于广泛使用离线数据,因此了解如何使用离线数据对您未来的开发工作是至关重要的.