【IT168 技术文档】目前很多软件厂商针对移动设备的数据库同步解决方案,这些方案主要分为两种:第一种,是针对某种特定数据库提供的数据同步方案,比如SQL Sever的RDA和Replication、Oracle Lite和Sybase SQL Anywhere等;第二种是ISV开发的针对不同数据库的数据同步方案。
SQL Mobile支持两种数据同步的方法:Remote data access(RDA)和Replication。这两种方法都支持从远程的SQL Server服务器中下载数据到设备端的SQL Mobile数据库中,在本地对数据进行浏览和修改,再将修改结果更新到SQL Server服务器中。
RDA和Replication都需要配置SQL Mobile Server Tools,也就是说,必须要有一个运行IIS的Web Server。Server Tools的主要作用是将移动设备通过网络发送的数据库访问请求,转发给SQL Server数据库,并将结果集发送回移动设备中。
移动设备使用RDA和Replication时,SQL Mobile只需要连接IIS上的Server Tools。而数据同步需要HTTP或HTTPS的网络连接支持。网络连接可以是无线局域网(Wi-Fi)、无线网或通过AtiveSync连接的PC网络。
1 RDA架构
RDA使用了SQL Mobile中的三个组件:SQL Mobile Database Engine、SQL Mobile Client Agent和SQL Mobile Server Agent。RDA的运行过程如下图:
SQL Mobile Database Engine用于管理存储于SQL Mobile数据库中的数据。如果这些数据来自于远程SQL Server数据库,并且在调用Pull操作时设置了跟踪改变的选项,Database Engine还将跟踪整个程序运行过程中数据表的变化情况,比如insert、update和delete等操作。Database Engine将为每条记录维护更新记录。如果SQL Server数据表建有索引,那么RDA也支持在SQL Mobile数据表中建立索引。
SQL Mobile Client Agent是运行于Windows Mobile上的一个组件,主要负责与Server Agent的通讯。Client Agent实现了RDA对象的API,应用程序通过API来操作RDA。
RDA的Pull方法被调用时,Client Agent会通过HTTP向SQL Mobile Server Agent发送请求。当接收到从SQL Server返回的结果集后,Client Agent将结果集保存到SQL Mobile数据库中。
Push方法被调用时,Client Agent从SQL Mobile数据库中取出所有插入、更新和删除的记录,将它们发送给Server Agent。
SubmitSQL方法,将SQL语句通过HTTP发送给Server Agent。
RDA使用运行于IIS上的Server Agent作为SQL Server数据库与SQL Mobile数据之间的通信代理。Server Agent负责监听来自SQL Mobile Client Agent的HTTP请求。Server Agent使用临时消息文件(*.in和*.out)来管理SQL Server与SQL Mobile的交换数据。
当Client Agent调用Pull方法时,Server Agent会收到请求,然后通过OLE DB连接SQL Server数据库,调用SQL语句。Server Agent会将返回的结果集通过HTTP发送给Client Agent。
Push方法,Server Agent会收到所有被客户端修改的记录,通过OLE DB连接SQL Server数据库,然后对SQL Server中相应记录进行insert、update和delete操作。如果发生错误,Server Agent会向Client Agent报告这个错误。
SubmitSQL方法,接受指定的SQL语句,通过OLE DB连接SQL Server数据库,然后调用SQL语句。