SaaS中的离线应用研究
网友 网络
  离线指的是用户能够在没有网络的环境下也可以进行工作,并且当网络环境恢复后,之前的操作能够自动地同步到服务器上。随着SaaS(Software as a Service)和云计算技术的成熟和不断实践,越来越多的软件将从桌面平台移植到互联网这个广大的平台。对于SaaS应用系统而言,无论是否连接到Internet,它们都可以正常工作。因此。客户端系统对于离线的需求与日俱增。为此本文在参考大量文献的基础上对SaaS中离线应用研究作了一下综述。

1 离线应用的架构

    离线应用的架构如图1所示,离线应用系统包括两个主要的部分:本地离线引擎子系统和服务器端子系统。本地离线引擎子系统包括本地存储本地服务器、同步模块、传输模块、状态检测模块;服务器端子系统包括服务器数据层、同步模块、传输模块。

 

图1 离线应用架构图

    在开发支持离线的web应用程序时。开发者通常需要使用以下3个方面的功能:①离线资源缓存:需要一种方式来指明应用程序离线工作时所需的资源文件。这样,浏览器才能在在线状态时,把这些文件缓存到本地。此后,当用户离线访问应用程序时,这些资源文件会自动加载,从而让用户正常使用;②在线状态检测:开发者需要知道浏览器是否在线,这样才能够针对在线或离线的状态,做出对应的处理;③本地数据存储:离线时,需要能够把数据存储到本地,以便在线时同步到服务器上。

2 几种离线应用开发技术

    2.1 Cookies与ADO.NET技术在离线中的应用

    2.1.1 Cookies技术在离线中的应用

    Cookies是网站安放在电脑硬盘上用于存储记录的小的信息或文件组。Cookies技术使电脑“记住”网站上的信息以备将来之用。利用该技术的这个特性,可以帮助使用者存储考试中的临时数据,并且在需要时恢复这些数据。当前浏览器支持的cookie虽然也可以用来存储数据,但是cookie长度非常小(通常几k),而且功能有限。

    2.1.2 ADO.NET技术在离线中的应用

    ADO.NET是DOT NET Framework用于访问数据库的组件。通过ADO.NET可以连接方式或非连接(离线)方式访问数据源,从而提高应用程序的性能,减轻远程服务器的压力。ADO.NET提供5个主要的类的对象来实现数据的连接访问与离线访问。这5个类分别是:Connection,Command,Data Reader,Data Adapter和Data Set。如图2所示。Data Set(数据集类)相当于离线数据库,通过离线方式从数据源中筛选出的数据,就存放在Data Set对象中。它包括多个Data Table,Data Table就象一个普通的数据库中的表一样,也有行和列,Data Set主要用于管理存储在内存中的数据以及对数据的断开操作。

 

图2 ADO.NET技术离线数据处理

    2.2 Google Gears与Dojo Offline

    2.2.1 Google Gears

    Google Gears允许网络应用程序Java Script API提供离线功能:在本地存储及操作应用程序的资源;将数据存储在本地的完全可搜索的关系数据库里;运行异步Java Script以提高应用程序的响应速度。Google Gears的应用几乎是无限的,Google Gears通过以浏览器扩展的方式添加Java Script API,使得浏览器的脚本能够访问本地的缓存数据库。Google Gears有几个主要的组件:①一个本地服务器,用来存储和读取离线程序资源(包括HTML文件,Java Script文件,图片等);②一个小型数据库(基于SQLite轻量数据库),用来储存本地数据;③一个工作池,用来让开发者将本地数据与服务器端后台同步;④一个桌面模型,可使网络程序的操作贴近桌面程序;⑤一个地理定位模型,能够让网络程序侦测到目前用户的地理位置。

    2.2.2 Dojo离线原理

    Dojo Offline构建于Google Gear之上,它使得在Google Gear上开发离线应用变得更加简单。Dojo Offline对Google Gears的API进行了封装,能够更方便地以Java Script的方式访问数据。此外Dojo Offline还提供了Offline Widget功能,开发人员只要添加几行代码,就能够将这个离线的widget嵌入自己的应用中,之后,就能够自动获得网络反馈,同步消息以及离线操作配置说明等。下面从如下几个方面简要介绍Dojo Offline的离线应用:

    (1)保存离线资源。Doio提供了一个功能非常强大的函数slurp来实现保存离线资源。slurp函数在页面加载之后会自动分析页面所引用的资源,并得到一个资源文件的url列表,然后抓取url的内容,保存到Google Gears中。对于使用内联方式指定的CSS图片以及用Java Script动态产生的引用slurp则无法进行缓存。这种情况可以通过调用dojox.off.files.cache()方法来手动添加要缓存的资源。

 (2)保存和使用离线数据。Doio对Google Gears的访问接口进行了封装,提供了Dojo Storage和Dojo SQL两种方式操作离线数据。Dojo Storage提供了一种类似哈希表的方式(dojox.storage.put(key,value/dojox.storage.get(key))对数据进行操作,数据以键值对的方式存取,key是字符串类型,value可以是字符串和可序列化的Java Script对象,但是浏览器对象(如DOM节点和XML Http Request对象)是不能够保存的。Dojo SQL通过Dojo SQL对Google Gears关系存储层的封装,能够以更适合Java Script对象的访问方式对关系表进行操作。

    (3)与服务器同步数据。离线操作所产生的新数据,在与服务器连接可用时需要上传到服务器,在该用户离线期间,其他用户也可能已经更改过数据,因此重新连接服务器时需要下载最新的数据。Dojo的同步操作发生的时机有两个,一是在页面首次加载并且在线的时候,或是离线后又检测到连接恢复的时候。具体包括3个步骤:①下载并缓存最新的页面资源,包括由slurp函数以及用户手动缓存的资源。Dojo Offline Widget会自动更新相应的状态;②上传用户在离线期间所创建的数据;③下载服务器最新数据进行展示。

    2.3 使用HTMLS开发离线应用

    HTML5代表了现在Web领域的最新发展方向。HTML5标准中一个新特性就是对离线应用开发的支持。HTML5通过cache manifest文件指明需要缓存的资源,并支持自动和手动两种缓存更新方式。提供了两种检测当前网络是否在线的方式。下面简要介绍HTML5的离线应用:

    (1)离线资源缓存。为了能够让用户在离线状态下继续访问Web应用,开发者需要提供一个cache manifest文件。这个文件中列出了所有需要在离线状态下使用的资源,浏览器会把这些资源缓存到本地。app.manifest代码如下:

    CACHE MANlFEST

    #列出所有需要在离线状态下使用的资源

    ...

    添加了cache manifest文件后,还需要在应用文件中把

标签的manifest属性设置为“clock.manifest”,即。

    (2)更新缓存。应用程序可以等待浏览器自动更新缓存,也可以使用Java Script接口手动触发更新。自动更新:浏览器除了在第一次访问Web应用时缓存资源外,只会在cache manifest文件本身发生变化时更新缓存,而cache manifest中的资源文件发生变化并不会触发更新。

    手动更新:开发者也可以使用window.application Cache的接口更新缓存。方法是检测window.application Cache.status的值,如果是UPDATEREADY,那么可以调用window.application Cache.update()更新缓存。示范代码如下:

    if(window.application Cache.status==window.application Cache.UPDATEREADY){window.application Cache.update();}

    (3)在线状态检测。如果Web应用程序仅仅是一些静态页面的组合,那么通过cache manifest缓存资源文件以后,就可以支持离线访问了。但在开发支持离线的web应用时,就不能仅仅满足于静态页面的展现,还必需考虑如何让用户在离线状态下也可以操作数据。即离线状态时,把数据存储在本地;在线以后,再把数据同步到服务器上。为了做到这一点,HTML5提供了两种检测是否在线的方式:navigator.online和online/offline事件。nayigator.online属性表示当前是否在线。如果为true,表示在线;如果为false,表示离线。开发者可以通过读取它的值获取网络状态。此外HTML5还提供了online/offline事件。当在线/离线状态切换时,online/offline事件将触发在body元素上,并且沿着document.body、document和window的顺序冒泡。因此,开发者可以通过监听它们的online/offline事件来获悉网络状态。

    (4)本地数据存储。HTML5提供了D()M Storage和Web SQL Database两种存储机制。

    DOM Storage:HTML5中引入了DOM Storage机制,用于存储key/value对,它的设计目标是提供大规模、安全且易用的存储功能。DOM Storage分为两类:sessionStorage和localStorage。sessionStorage用于存储与当前浏览器窗口关联的数据。窗口关闭后,sessionStorage中存储的数据将无法使用。localStorage用于长期存储数据。窗口关闭后,localStorage中的数据仍然可以被访问,保证了浏览器窗口可以共享localStorage的数据。

    Web SQL Database:它提供了基本的关系数据库功能,支持页面上的复杂的、交互式的数据存储。它既可以用来存储用户产生的数据,也可以作为从服务器获取数据的本地高速缓存。例如可以把电子邮件、日程等数据存储到数据库中。Web SQL Database支持数据库事务的概念,从而保证了即使多个浏览器窗口操作同一数据,也不会产生冲突。

3 结束语

    本文介绍了支持离线应用程序开发的几种技术。通过阅读本文,读者能够了解到当前离线应用技术的基本理念和用法,从而掌握利用相关技术开发Web离线应用的方法。作为一个新技术,离线应用在SaaS的企业数据解决方案中更有其商业优势,也将是以后信息管理和网络开发的新方向。

CIO之家 www.ciozj.com 公众号:imciow
关联的文档
也许您喜欢