基于Web Service嵌入式数据库同步更新解决方案
2020-08-26王国飞李质建
王国飞 李质建
摘要:目前嵌入式数据库已在移动终端平台得到广泛使用,但是不同厂商的数据库产品之问还存在不兼容性问题,特别是在嵌入式数据库与服务器数据源同步更新的问题上显得尤为突出。考虑到商业产品的价格以及兼容性问题,本文提出了一种基于Web Service的嵌入式数据库同步更新解决方案,并采用序列化、压缩和附件技术等机制在性能上进行优化,以满足实际商业或科研应用的需要,是一种比较好的可行的解决方案,对系统项目建设具有示范和借鉴意义。
关键词:嵌入式数据库;Web Service;同步更新;序列化;压缩;附件技术
中图分类号:rrP393 文献标识码:A
文章编号:1009-3044(2020)20-0051-02
1国内外的移动应用软件的发展
随着移动应用开发技术的发展和智能移动终端的普及,移动应用软件这个前景宽广的领域已经受到越来越多软件厂商的关注。如何通过一种机制来访问多种数据库实现同步更新,并兼容跨平台之间的互操性,Web Service技术很好地解决了这个问题,在当前的桌面分布式数据库中Web Service已经得到广泛的应用。本文主要探讨通过Web Service实现嵌入式数据库与服务器数据源的同步更新,并以微软的.NET平台实现SOL Server CE与Oracle同步更新为例,得到一种基于Web Ser-vlce的嵌入式数据库同步更新的解决方案,并采用序列化、压缩和附件技术等机制在性能上进行优化,最后得到优化的解决方案。
2基于Web Service的嵌入式数据库同步更新解决方案实现
现在主流的开发平台上都可以开发基于Web Service的应用,如Eclipse,Visual Studio等,而且都对Web Service的发布,查找和生成本地代理等过程进行了简化操作,使得开发人员能更容易的开发基于Web Service的应用。Web Service一旦部署就可以在项目中调用,主要分为静态调用和动态调用。两种方法没用本质的区别,静态调用是只能固定调用某个Web Service(URL固定),而动态调用可以通过配置以达到按跨平台调用的目的。
2.1嵌入式数据库同步更新的解决方案系统架构及实现
Web Service是完全基于XML/XSD的标准的新平台,是个独立的系统软件,它可以进行跨网络的计算机操作,同时作为一种分布式的计算技术,实现了异构系统相互的通信与共享操作。所以在系统集成方案中通常将Web Service作为中间层。在本解决方案中,服务器端数据的更新是在移动设备端来触发,移动设备端查看并操作数据、处理一些或所有的业务规则,同时提供一个丰富的用户界面做出响应,因此Web ServiCe中既包含了各种对服务器端数据库取的操作还包含了各种对服务器端数据库存的操作。具体的系统架构如图1所示。
下面简单介绍利用Visual Studio.NET 2008环境来实现整个流程。
1)建立Web ServiCe
建立好ASP.NET web service 工程后,在文件Service.cs中添加連接和存取服务器数据源(如oracle等)的操作。
2)本地调用Web ServiCe
部署Web Service后,新建一个Smart Device应用程序(移动设备程序)项目,添加Web引用会在本地生成代理文件Ref-erenCe.cs,可修改此文件按需调用不同的Web ServiCe。
在.NET环境中调用Web Service的方法和创建本地类并调用其方法的过程是十分类似的。由于这只是简单介绍使用Web ServiCe的整个流程,所以业务规则并没有真正体现出来,实际的业务复杂的多,需要控制数据重复多、同步失败等问题,但都是建立在最基本的存取数据操作上。另外考虑到网络及安全等因素,在实际的商业软件的开发中还需要加入异常处理等代码。
2.2 Web Service数据压缩传输
XML Web ServiCe是通过SOAP(简单对象访问协议)协议进行交互的,而SOAP消息是利用XML进行描述的。使用XML描述SOAP消息的好处是使得Web Service可以跨平台调用,成就了Web Service的巨大魅力。移动终端的性能,无线或偶尔连接的网络等因素对传输性能提出了更高的要求。基于SOAP协议的Web Services已经成为网络应用发展的主流,其主要机制有基于数据的压缩,基于Web Service附件技术,基于访问模式的优化(异步),基于缓存机制的优化等等。在移动平台的应用中主要也采用前两种机制。下面利用这些机制对我们的解决方案进行优化得到基于Web ServiCe的嵌入式数据库同步更新数据压缩传输解决方案。
2.2.1序列化与反序列化
在数据传输之前要将数据(对象)转换成可保持或传输的格式,这一过程称为序列化,与序列化相对的是反序列化,它将数据流转换为对象。序列化用在WEB应用开发中可以解决数据库调用困难的问题,使用经过序列化的流进行传输效率会得到大大的提升,Web Service基于SOAP协议,SOAP协议也是以对象的可序列化为基础的。XML序列化仅将对象的公共字段和属性值或者方法的参数和返回值转换(序列化)为符合特定XML架构定义语言(XSD)文档的XML流。对Web Service来说,这是最普遍应用的一种浅层序列化。另一种为深层序列化,是将对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。这就更方便、更准确地还原了对象的副本。选择序列化的原因有两个:
(1)将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本;
(2)通过值将对象从一个应用程序域发送到另一个应用程序域中。
在使用经过序列化的流进行传输效率会得到大大的提升,深层序列化可进一步提高网络传输的性能。在主流开发平台和语言下,序列化已经封装成了接口或者开发平台已经把某类型数据进行了序列化(XML序列化),使开发者从底层脱离出来以提高开发效率。序列化过程最后返回字节数组,可以大大压缩数据集对象的体积。
2.2.2压缩与解压缩
数据压缩技术一直以来是人们研究的重点,压缩的效率也越来越高。现在已经有很成熟的算法以及工具包(组件)。经常使用的数据压缩APl有zip、gzip等方式。Web Service中压缩的使用非常简单,就是在发送XML流之前对XML流进行压缩,在接收端对已经压缩的XML流進行解压缩就可以了。针对不同文件格式采用成熟的压缩和解压缩技术,降低I/O器件的存取频率,有助于增强整个系统的性能,尤其当数据量比较大的时候,可以大大提高传输效率。对于纯文本的XML,压缩可以减少其80%以上的体积。压缩和解压缩往往会具有很大的CPU占有率以及内存占有率,虽然可以使得XML的体积大大减少,但是其过程却是十分耗费系统资源的。对于配置不高的客户端甚至是服务器端,都会造成不小的压力。而对于系统响应XML来讲,一般都包含大量的数据,导致其体积庞大,需要进行压缩处理。
2.2.3 Web Service附件技术
Web ServiCe使用SOAP作为其标准的数据交换协议,使用SOAP进行传递的数据首先被序列化(XML序列化),也就是将数据转换成字符串在XML文档中传送。尽管使用Base64编码能够将二进制数据放入SOAP报文中进行传输,然而,其效率非常低下。Web Service附件技术的工作原理是将二进制数据作为SOAP消息的附件,而不作为SOAP消息的内容进行发送。这样可以避免对二进制数据进行XML序列化,因为序列化的只是SOAP消息的内容。
我们在传输二进制文件,如图像、声音和视频等,利用WebService附件技术传输和处理效率会得到进一步提高。在我们的嵌入式数据库同步解决方案中主要利用Web Service附件技术传输压缩后的二进制数据集以提高性能,当然上传下载二进制文件(如图2)可直接使用附件技术。
综上所述,我们将Web Service数据压缩传输技术应用到最初的解决方案中,得到更优化的系统结构图(图2)。
3实验结果
本实验主要是以微软的.NET平台实现SQL Server CE与Oracle同步更新为例,得到一种基于Web Service的嵌入式数据库同步更新的解决方案,并使之最优化,对其他系统的搭建、开发具有借鉴和示范效应。
4结束语
本文针对实际移动应用软件中,对嵌入式数据库与服务器数据源同步更新兼容性问题提出了基于Web Service的一种解决方案,并考虑到移动终端性能和网络性能等对解决方案进行了优化以解决数据传输性能问题。虽然本方案解决了系统兼容性和数据传输性能问题,但是没有对安全问题进行探讨,实际商业或科研应用中可以根据需要加入Web Service访问加密技术、签名技术等安全机制,以便得到更完美的解决方案。
参考文献:
[1]万忠.移动应用开发行业现状分析[J].中国科技纵横,2017(8).
[2]王辉,马维华.基于SQL Server CE数据同步技术的研究与实现[J].计算机技术与发展,2008,18(4):232-235.
[3]刘军.基于Web Service的数据库同步系统的设计与实现研究[J].电子技术与软件工程,2017(2).
[4]刘益.基于Web Service移动数据的同步[J].(数字通信)前沿技术,2011.
【通联编辑:李雅琪】
收稿日期:2020-03-27
作者简介:王国飞(1980-),河南洛阳人,毕业于武汉大学计算机学院,硕士,研究方向:计算机应用技术。