天天看点

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

准备工作

Funambol提供的同步客户端工具有两个, 一个是Funambol Windows Sync Client, 正式的客户端, 支持outlook的联系人同步; 另一个是Java Demo Client, 模拟客户端, 主要用于测试.在funambol官网上可以下载, 安装包funambol-10.0.3主要提供服务端功能, 并且包含了Java Demo Client客户端用于验证测试, 如果没有搭建服务端环境,  可直接使用该安装包提供的服务端; 另一个安装包funambol-windows-sync-client-10.0.1提供的是一个正式客户端Funambol Windows Sync Client, 可以同步联系人, 日历, 行程, 笔记, 文件等数据. 两个文件都须安装, 不分先后. 安装完成后, 把服务先启动好. 为方便理解, 就以安装包提供的服务端作为依据, 进行配置测试.

Funambol Data Synchronization Server使用

服务端提供Administration Tool, 可用于管理配置服务端. 主要包含用户管理, 日志配置, 设备管理等功能.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图1

这里的配置按照默认值就可以, 不用进行其他更改设置. 这里是看不到数据库的数据信息的, 在实际测试中, 我们需要去数据库里面查询数据来比对验证. 服务端默认使用hsqldb作为数据库, 支持MYSQL, oracle等多种数据库. Hsqldb是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口. 我们使用MyEclipse的DB Browser作为GUI管理工具, 指向hsqldb.jar路径(安装路径下的hypersonic包内),  默认用户sa, 密码为空.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图2

连接成功后, 可以看到有许多数据表, 简要说明重要的几张表, FNBL_CLIENT_MAPPING是数据映射表, FNBL_LAST_SYNC是同步时间标记记录表, FNBL_PIM_CONTACT是联系人数据信息表, FNBL_USER是用户信息表.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图3

数据库是随着服务一起启动的, 成功启动服务后, 右下角任务图标将会显示为绿色, 打开IE浏览器, 输入http://localhost:8080/funambol/ds 若看到以下信息,  代表正常:

Funambol Data Synchronization Server v.10.0.0

Man=Funambol

Mod=DS Server

SwV=10.0.0

HwV=-

FwV=-

OEM=-

DevID=funambol

DevTyp=server

VerDTD=1.2

UTC=true

SupportLargeObjs=true

SupportNumberOfChanges=true

Ext=X-funambol-smartslow

Java Demo Client使用

1. 配置

Java Demo Client是服务端附带的一个用于同步测试的工具, 只提供通讯录和日历的同步,

操作相对简单直观些. 打开工具, 点击新增按钮, 增加几个联系人, 如下图所示.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图4

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图5

接下来就是把这些数据同步到服务端, 在同步之前, 先把配置修改下, 按照下图配置:

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图6

Server URL是同步服务接口地址 : http://localhost:8080/funambol/ds

UserName 和Password 是用户名和密码, 每个设备的同步都要求提供账号信息, 可以在Administration Tool 里面的users 管理, 也可以在fnbl_user表里面查看修改, 这里账号和密码使用的都是guest

Remote address book是远程通讯录格式, scard代表的是sifc格式.

Remote calendar 是远程日历格式, 这里我们只作通讯录同步测试.

Synchronizing address book 此项需要勾选, 代表需要同步通讯录数据.

Synchronizing calendar 这项可以不用勾选, 避免日志信息干扰.

Device Id 代表的是设备ID

Message type 是消息类型, 如果测试, 建议选择XML

Log Level 指的就是日志级别了.

2. 第一次全同步

配置完成后, 点击Synchronize按钮, 执行同步, 将会出现相应的日志信息, 这些都非常有用, 从信息里面可以看到同步了多少数据, 有多少条是新增或修改, 同步是否成功, 是否有异常, 异常的错误信息, 都会显示得很清楚, 下面是第一次同步的日志信息:

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图7

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图8

从上面的结果来看, 这次同步结果是正常的, 由于是第一次同步, 客户端会把所有数据发送给服务端. 可以看到日志中Detected 3 items, 已经检测到刚才新增的这三条数据. 为验证结果, 可以在数据库里查看FNBL_PIM_CONTACT表, 已经成功新增了三条数据.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图9

3. 差异同步

第一次同步之后, 服务端会用时间记录作为标记, 下次同步时, 就是差异同步了, 我们这时做一次新/增/改操作, 先删除[2, test],  修改[1, test]为[11,test], 再新增[4, test], 这时候我们再进行同步, 看下结果:

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图10

这是修改后的数据

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图11

可以看到, 客户端已经检测到增/删/改三条数据, 日志显示同步成功.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图12

最后再去数据库里面查询验证下,  STATUS字段表示的是数据状态, U代表更新, N代表新增, D代表删除, 可以看到, 数据同步结果是正确的.

4. 反向服务端同步

以上, 都是客户端的数据同步到云端, 怎么才能看到云端的数据同步到客户端呢? 有两种方法:

1) 开启两个同步客户端, 可以先把第一个客户端的修改数据同步到云端, 再同步第二个客户端, 这样就等于是从云端的数据同步到客户端. 但是Java Demo Client不能模拟多个客户端, 因为数据是保存在同一个地方. 那怎么办? 上面不是安装了两个包吗, 再打开Funambol Windows Sync Client客户端, 就可以验证测试了.

2) 直接从数据库里面作修改, 这需要对数据同步有个深入的了解, 我把操作直接写下来, 按照这个方式进行修改即可. 先去FNBL_LAST_SYNC表里面查询获取同步开始时间(START_SYNC字段), 然后再修改FNBL_PIM_CONTACT表中的LAST_UPDATE字段, 两个字段的时间都是以时间戳作为记录, 把START_SYNC字段值的时间加大, 但是注意不要超过当前的系统时间, 累加1就行,  然后拷贝到你所要要修改的数据的LAST_UPDATE字段内. 再次同步, 就能看到从服务端返回的信息了.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图13

Funambol Windows Sync Client 使用

下面简要介绍该客户端的使用,  这是一个正式的数据同步客户端, 支持outlook里面的联系人同步, 而且可以支持多种类型的数据同步. 不同于上面的测试客户端, 这里使用的是1.2版本的DS同步协议, 通讯录数据格式采用的是vcard2.1版本. 安装完成后, 在outlook菜单里面会增加funambol操作按钮, 我们先打开这个同步工具

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图14

同步之前, 先要进行配置, 打开tools菜单的options选项, 如图所示:

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图15

这里我们只测试通讯录同步, 勾选contacts, 其余可以都关闭.

点击左侧Acount图标, 如下图16所示

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图16

把接口地址, 用户名和密码配置上去即可. 如果要结合上面的测试工具模拟多客户端的测试, 两边填写的账号信息要保持一致.

配置完成后, 返回主界面, 点击第一栏[Contact]图标, 执行同步, 如果没有弹出任何错误提示, 右侧显示绿色小勾, 代表同步成功. 我把账号信息改成和Java Demo Client工具一致, 来模拟多客户端的测试, 看能不能把数据带到outlook的联系人里面.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图17

和Java Demo Client一致, 都使用guest账号.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图18

可以看到, 同步执行成功.

去outlook联系人里面查看下数据.

基于funambol ds 的云同步服务研究(五)-结合Sync Client的测试使用

图19

可以看到, 已经成功把数据同步过来了.

多客户端测试可以有多种场景的组合, 单边修改, 同时修改, 结果会是怎样? 大家可以结合我第二节讲到的同步原理中的16种同步业务场景来测试看下.  不用去看场景所描述的结果, 这是是我改造源码后, 以客户端数据为依据作为同步规则执行的结果, 和funambol所提供的服务端是会有所差别.

在CSDN写了没几天, 就发现有人转载了,  呵呵,  提倡开源分享精神, 不过烦请各位朋友转载时注明出处, 谢谢!  

这方面的资料较少, 希望对大家有所帮助,  如需相关资料或有疑问, 欢迎入群19310171交流.