移动数据库SQL Server CE

移动服务系统分析与设计
  移动服务是应用比较广泛的移动解决方案,其核心是利用移动计算和无线通信技术为企业现场服务人员提供全面、便捷、实时的信息服务。我们现在就为某电器制造商设计一套用于售后维修服务的移动解决方案。

  该电器制造商目前售后维修服务的基本工作流程是:客户打电话报修,呼叫中心记录用户的基本信息(如姓名、地址和电话等等)和客户对故障的描述信息,生成维修单,维修服务人员领取维修单,维修服务人员上门为客户服务,填写维修记录单(如实际故障,维修所用零部件,维修所用时间等),客户签字认可,维修服务人员交回维修记录单,呼叫中心电话回访客户。

  采用移动服务系统改造后的工作流程是:客户打电话报修,呼叫中心记录用户的基本信息和客户对故障的描述信息,生成维修单,维修单通过无线网络直接发送到维修服务人员的手持设备上,维修服务人员上门为客户服务,在移动设备上填写维修记录单,客户在移动设备上签字认可,维修服务人员把维修记录单通过无线网络发回至呼叫中心,呼叫中心电话回访客户。

  通过上述新旧流程的对比,可以发现采用移动服务系统之后将显著的提升维修服务人员的工作效率,大大缩短客户报修之后的响应时间,对于提升售后服务的质量和客户满意度都有极大的益处。

移动服务系统设计
移动数据库SQL Server CE
  因为移动服务系统需要下载维修单到移动设备上,并在移动设备上临时保存维修单,所以在移动设备上需要有一个数据库系统。我们选择的移动数据库系统是SQL Server CE。

  Microsoft SQL 2000 Windows CE Edition(又称为SQL Server CE)是用于移动设备上的小型关系数据库。SQL Server CE的发展历程从1.0开始,当时.NET的技术框架还不能应用到移动设备上,这个时候大家在开发基于数据库的移动应用时,采用的是Embedded Visual Tools 3.0中的VB或VC++,使用OLE DB for SQL Server CE或ADOCE访问SQL Server CE数据库。随着.NET Compact Framework的推出,SQL Server CE也推出了2.0,2.0加入了更多的新功能,并在很多性能参数都有较大的提高,但更重要的是从此可以在Visual Studio .NET中通过ADO.NET访问SQL Server CE的数据库了。

  SQL Server CE与我们熟悉的其他关系数据库相比,有以下的特点:

  1) 打开SQL Server CE数据库时,是通过指定其数据库文件所在的完整路径来打开的。例如,当在EVB中使用ADOCE打开数据库时,可以用下面的形式:

Dim cn As ADOCE.Connection
Set cn = CreateObject("ADOCE.Connection.3.1")
cn.ConnectionString = "Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0; data source=\Northwind.sdf"
cn.Open

  2) SQL Server CE支持数据库密码和数据库文件加密

  例如,当使用.NET Compact Framework中的SqlCeConnection.Open方法打开数据库时,可以使用如下的连接字符串:

"data source=\NorthWind.sdf; password=<myPassword>"

  当使用ADOCE时,则在连接字符串中必须指定SSCE:Database Password连接属性。

"Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0; data source=\NorthWind.sdf; SSCE:Database Password=<myPassword>"

  3) SQL Server CE同样支持大量的内部函数,这些函数包括数学函数、字符串函数和内部函数等。

  4) SQL Server CE 2.0 通过 ADO.NET 增加了对参数化查询的支持。

  例如,我们在构造SQL语句时,可以构造以下的语句,然后再利用ADO.NET的机制替换“?”所代表的参数。对参数化查询的支持是 SQL Server CE 2.0的新功能。

  "INSERT INTO TableA (col1, col2) VALUES (?, ?)"

  5) 与先前版本的SQL Server CE相比,新版本的另一个改进是加入了更加可靠的错误处理功能。SQL Server CE增加了一个名为SqlCeException的新类,这个类允许您捕捉本机SQL Server CE错误并适当地处理它们。

  6) SQL Server CE 2.0提供了两种基本方法来连接后端SQL Server数据库:RDA和合并复制。RDA访问功能支持与SQL Server 7.0(和更高版本)数据库的连接,合并复制要求后端必须是SQL Server 2000。

数据同步设计
  移动服务系统需要下载呼叫中心产生的维修单,也需要把维修服务人员填写的维修记录单上传到呼叫中心,因此移动服务系统需要与呼叫中心进行双向的数据同步。

  SQL Server CE与SQL Server之间可以通过RDA和Replication(合并复制)两种方式进行数据同步。RDA适用于简单的、不需要全功能的合并复制功能(例如数据冲突处理)的数据同步,而Replication则基于Windows Server 2000的合并复制功能,可以完成更多更复杂的功能。

  RDA全称是Remote data access,其主要由三部分组成:SQL Server CE数据库引擎、SQL Server CE客户端代理和SQL Server CE服务器端代理。SQL Server CE数据库引擎负责写入和读取SQL Server CE数据库中的数据;SQL Server CE客户端代理是RDA在移动设备上的主要组件,它实现了RDA的主要功能,我们可以通过程序调用它提供的接口以控制RDA;SQL Server CE服务器端代理位于服务器端,它与SQL Server CE客户端代理通过HTTP协议进行通信,接收并处理SQL Server CE客户端代理的命令。

  RDA支持三个主要的方法,他们分别是:

Pull
将SQL Server 2000数据库中的表“拉”到SQL Server CE中。在调用此方法时,可以设置数据跟踪选项,如果设置数据跟踪,则SQL Server CE数据库引擎会自动跟踪对数据的插入、修改和删除操作。
Push
如果在Pull时设置了数据跟踪选项,可以将SQL Server CE中的数据“推”回到SQL Server 2000中。在SQL Server CE中对数据的任何修改都会反映到SQL Server 2000中。
SubmitSQL
直接向SQL Server 2000数据库提交一个命令。

图1 SQL Server CE与SQL Server数据同步示意图

  合并复制是RDA的一种替代方案,只能与SQL Server 2000配合使用。合并复制的工作组成与RDA基本类似,但是在服务器端多了一个SQL Server CE复制提供程序,也就是说SQL Server CE服务器端代理通过调用SQL Server CE复制提供程序,从SQL Server数据库中选取一个“快照”返回给SQL Server CE客户端代理,客户端代理在设备上建立SQL Server CE的数据库(订阅数据库)。对订阅数据库的任何修改都会被SQL Server CE数据库引擎记录下来,在调用同步方法时,可以把这些修改作用到后台SQL Server数据库中。

  移动服务系统在下载维修单时,要满足两个基本的条件:一是用户只能下载分配给自己的维修单;二是只能下载尚没有完成的维修单。在上传维修记录单时,也要满足两个基本条件:一是只能上传客户已经签名确认的维修记录单;二是只能上传维修服务人员选定的维修记录单。由此可见,移动服务系统在数据同步时,需要实现一定的义务逻辑规则,如果用RDA或合并复制实现这些业务逻辑规则,会比较麻烦一些,所以我们设计如下的数据同步规则:

数据同步包括两个部分:移动端和服务器端
服务器端采用IIS+ASP.NET构建应用服务器
移动端与服务器端采用HTTP协议传输数据
移动端采用类似http://host/do.aspx?action=GetJobList&user=&date=的URL访问服务器端
服务器端返回数据时,以SUCCESS表示成功,FAILED表示失败,记录之间以“^”为分隔符,字段之间以“|”为分隔符
移动端解析服务器端返回数据,如果需要的话更新SQL Server CE数据库

posted on 2006-07-25 10:27  欧阳  阅读(723)  评论(0编辑  收藏  举报