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的企业数据解决方案中更有其商业优势,也将是以后信息管理和网络开发的新方向。

相关文档推荐

企业海量大数据离线计算业务实现.PDF

2208474728  4.61MB 26页 积分6

基于离线强化学习的用户满意度建模.PDF

22321151975 高崇铭 3.09MB 40页 积分6

B站离线架构演进之路.PDF

2208474311 陈昱康 2.35MB 31页 积分6

云原生离线在线资源混部实践.PDF

2203411485 周昕毅 1.44MB 16页 积分5

字节跳动云原生机器学习离线训练实践.PDF

2232971174 单既喜 1.12MB 30页 积分5

网易严选离线数仓治理实践.PDF

2208472334 冯楚 3.88MB 14页 积分4

Caelus全场景在离线混部解决方案.PDF

422764652 陈凌鹏 0.9MB 19页 积分5

相关文章推荐