JavaScript自动对象持久化外文翻译资料

 2022-10-26 09:10

英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料


JavaScript自动对象持久化

摘要

传统Web应用程序都需要为了处理数据而连接互联网。浏览器一直缺乏恒定的离线数据访问机制,使Web应用程序能够操作一系列数据。近日,通过浏览器插件,如谷歌齿轮,浏览器已经获得了持续使用离线数据的能力。然而,直到现在使用这些插件来同时管理离线和网络上的持久化数据仍有困难,原因在于:同步要求,管理吞吐量和延迟到云中,并使其内部的工作符合标准的Web浏览器的局限。历史上,非浏览器环境下,编程语言环境提供有自动对象持久化的功能以使开发商免受这些复杂性的影响。在我们的研究中,我们已经创建了一个框架,介绍了利用互联网的JavaScript数据对象的自动持久性。不同于传统的对象持久化解决方案,我们仅依赖于现有或即将出现的互联网标准且不依赖于特定网络连接的运行机制,如OS或解释器/编译器的支持。新的设计需要符合互联网独有的不同的连接质量和浏览器的特定网络限制的特点。我们使用基准验证我们方案,结果表明,我们的框架可以自动处理成千上万的数据对象,减少开发商支持离线网络应用程序所需要的工作量。

分类和主题描述

D.1.5 [软件]:编程技术—面向对象技术; D.3.2 [软件]:编程语—JavaScript; E.2 [数据]:数据存储表示—对象表示

一般条款

设计

关键词

JavaScript,JSON,HTML5,Web存储,对象持久性

版权是由国际万维网会议委员会(IW3C2)持有。这些论文的分布仅限于课堂以及个人使用。 WWW 2010年4月26日至30日,2010年,北卡罗莱纳州,美国。 ACM 978-1-60558-799-8 / 10/04。

  1. 引言

离线网络应用程序是从互联网上断开连接时,仍可以支持页面浏览和脚本之行的网络上的新一类应用。一些流行的例子包括Gmail,WordPress,MySpace,Autodesk Online。提供这样的离线应用搜需要的技术支持现在已经成为新HTML5标准的一部分。虽然大多数浏览器之前已有高速缓存Web页面的一些组件的能力,如HTML和媒体资源,但是这不包括由脚本逻辑执行的计算的中间结果。随着脚本逻辑已经成为应用程序功能更加不可分割的一部分,这些不足使得设计一个复杂,特性明显的网页应用更为困难。离线网络应用程序允许通过脚本逻辑创建和管理的数据在浏览器本地存储。这使得Web应用程序可以离线暂停和恢复,离线数据在网络上将来一段时间内保持同步。然而,与Web浏览器页面组件的自动缓存不同,中间脚本计算的持久性要求脚本编程人员认真审议和人工干预。

在非浏览器环境下,分布式编程语言环境提供了自动的对象持久化使得开发商免受这些复杂性的干扰。在这项研究中,我们探讨了JavaScript自动数据对象持久化的可行性。开发人员在有持续性对象干预的情况下,仍可以通过获取/设置属性和调用方法等如往常般使用对象。

通过此次研究,我们验证和解决了在Web浏览器中嵌入的JavaScript对象支持特定网络的对象持久性的几个要求和挑战。这些挑战和要求,可以大致分为三类描述。

  1. 互操作性

常见的基于JavaScript运行环境的Web浏览器是通过一套标准,例如ECMAScript和HTML实现的标准化。虽然ECMAScript定义了核心JavaScript语言的语义,其他标准如HTML4和HTML5的出现,定义了可获取提供Web应用程序的作者的API。作为开源JavaScript对象持久化要求的一部分,我们决定研究什么技术是可行的,同时仍符合标准。这是极具挑战性的,这意味着我们不必更改JavaScript解释器层本身的能力,但必须在应用程序级别做出完全自动化的对象持久化。这一决定也引出了我们在接下来的两个特定网络技术挑战的重点。

  1. JavaScript的扩展设备

相较于很多其他语言,JavaScript的只具有可扩展性非常原始的支持。 JavaScript是一个充满活力的编程语言,其中引入编译步骤将是开发一个典型的JavaScript开发者的转变。这导致我们使用不同于以前依赖于编译模型的工作方式。我们充分利用属性访问,在ECMAScript5中引入的一个扩展机制,也说明我们是如何需要解决一些缺乏对JavaScript中的可扩展性支持。

  1. JavaScript的并发模型

也不同于最现代编程语言的是JavaScript的模型和并发支持。不同于大多数语言所使用的线程模型,JavaScript是纯粹基于事件的。这对于我们的目的产生的直接后果:不可能使用一个独立的线程控制管理持续性。管理持久性的操作必须是闲置的,亦同时可暂停应用进展或延误。这两个选项提供了权衡不同方面的考量,我们需要在我们的研究中进行调查。我们将展示如何通过定时事件处理程序应用级的维护任务可以有效保持持久堆。

我们使用基准验证了我们的方法,我们的框架可以自动处理成千上万的数据对象,以减少开发商支持离线Web应用程序所需要的工作量。

本文的其余结构如下:第2节中,我们描述了一个激励的示例应用程序,在第3节我们展示了我们的工作的概况,在第4节我们展示了如何检测JavaScript对象的突变技术细节,在第5节就局部对象持久化进行了讨论,第6部分涵盖了服务器的通信,在第7节我们提出了一个评估,在第8节,我们展示了相关的工作,我们在第9节进行总结。

  1. 激励问题

考虑一个场景,开发人员希望部署一个离线Web应用程序以支持基于Web的电子邮件客户端。没有离线支持,断开网络后用户将不能够通过Internet访问他们的收件箱。此外,断开网络连接后用户将无法同时撰写新的电子邮件。这是因为像个人电子邮件这种现代Web应用程序使用的是JavaScript的数据项。这种做法作为如今的Web为一体的Ajax应用程序范例的核心技术之一是很常见的。

离线使用数据的持久性现在被广泛部署于所有主要的浏览器。某些支持提供给了简单的哈希映射,也提供给了SQL风格的数据库API。然而,没有任何现有机制的直接支持任一对象的结构化数据或自动持久性。这意味着,开发人员仍然必须自己解决若干困难问题。

首先,开发商必须决定何时以及如何保存堆上分配的JavaScript对象到本地浏览器存储的数据。这必须谨慎进行,以实现平衡。如果更改保存过于频繁,每次的保存动作可能会降低性能。另外,由于JavaScript是单线程的,写一个单一的大批量的变化将会暂停所有事件处理程序服务:如那些对用户行为及控制页面动画活动的计时器的响应。例如,一方面,如果每个按键在撰写新邮件触发一个繁琐的保存动作就可能在用户体验中产生可见延迟。然而,另一方面,在保持修改状态较长时间未储存增加了数据丢失的可能性;没有人希望因为浏览器崩溃而丢失电子邮件草稿。

为了解决这个问题,我们已经调查了可达性[17]对JavaScript的使用持久性。在该方法中,对象堆被分成临时和永久的子图。我们的运行框架由几个可周期性处理事件程序的可持续性相关的任务工作清单组成。以这种方式,开发人员可以使用JavaScript数据对象来构建表示用户的电子邮件文件夹中的持久性数据结构。当一个新的电子邮件对象添加到数据结构,我们的框架将确保新的电子邮件自动保存到本地存储,并在以这样的方式与成千上万个对象打交道时不降低应用程序的响应。

第二,开发人员必须确定如何和何时同步离线数据存储在浏览器中的数据的服务器拷贝。这很困难因为如果它们提供给一个以上的浏览器会话数据的副本可能变得不一致。例如,一个电子邮件草案可能被复制到由同一用户使用的两个不同浏览器。如果用户编辑其中一个离线副本,它可能会变得不一致。

为了处理这个问题,我们已经研究并在一个单独的对象层面开发了自动化的持久性的应用程序框架。这允许浏览器进行直接映射到应用程序开发人员创建的对象模型上的单独通信对象的数据更新。不同对象版本之间的信息冲突会通过自动检测触发并返回一个解决方案。开发者只需要实现回调应用任何语义相关解决方案的战略。例如,离线使撰写一个电子邮件草稿,重新建立互联网连接后将自动同步到服务器。此外,如果是相同的电子邮件草案,在浏览器离线时,通过其他编辑方式产生的问题会提醒用户,以解决这个问题。

而在以前的工作中,面向对象的数据库和分布式对象语言也有类似的动机,我们不得不解决的是独一无二的嵌入式浏览器的JavaScript编程环境的不同技术问题。我们必须提供特定网络机制来解决JavaScript的缺乏线程,语言可扩展的原始支持,并确保这种支持不要求使用不属于浏览器标准的任何功能。

7.评估

7.1基准

这里我们在几个微基准测试和基于eBay的Web服务数据用例的可行性上展示我们的原型架构。我们的重点是确定在各种对象配置下简单应用程序级别的持久性的可扩展性。我们专注于框架的JavaScript客户端部分的测量,因为这是研究的贡献。我们已经用我们的样机实现了Python中的服务器端对象存储库,但因为没有新的贡献是依赖于服务器的性能,其性能特点不是这项工作的突出部分。

使用Dromaeo JavaScript性能测试套件获取了所有基准数字的报告。每种基准都以“操作/秒”为单位多次地执行,直到总耗时超过一秒。这允许非常快的基准,在浏览器的时钟精度准确测量下可达15毫秒;至少一秒的执行使一个15毫秒歪斜可能导致的最坏结果是1.5%的误差。每个基准都被测量五次以上,并记录平均值。

用来记录基准测量的机器是一台苹果MacBook笔记本,2.2 GHz的英特尔Core 2 Duo处理器,4 GB的RAM。操作系统是OS X.我们从苹果的Safari浏览器4的测试报告编号。

我们还在Mozilla Firefox上成功测试了我们的样机,但是数据差得很远。例如,刚刚在JSON序列化的Firefox 3.6b1的情况下几乎慢了Safari两倍。对于简单的对象属性访问Firefox慢了三倍,涉及访问时超过六倍。基于我们框架必不可少的两种技术,我们所有的基准测试数字在Firefox上都慢了两倍或更多。

在提交本文中,Chrome浏览器和Opera浏览器不支持标准的Web存储API(虽然Chrome后来最终版本加入支持)。Internet Explorer 8支持W3C的Web存储,但它还不支持ECMAScript 5访问器对JavaScript对象的访问。因此,我们的评价反应了什么是可能在新出现的标准内工作,但还未广泛应用的标准。显然,离线Web应用程序是一个新的领域,浏览器厂商仍在朝着实现他们的目标努力工作。

8.相关工作

8.1网络文件系统和数据库

由休斯顿和霍尼曼使用更乐观的更新方式的改良的AFS文件系统允许使用断开应用的方式更接近于我们的方式。回调还用于通知用户从断开突变的地方产生的问题。Coda文件系统也用主动更新。Coda视本地数据为主数据的第二级副本,符合我们的主副本视图。Bayou系统通过阐明明确的元数据不应该包含服务器特定网络细节,防止结垢,因此所有元数据应该是全球适用和实用来影响我们。Ficus文件系统强调“无丢失更新”,语义保持数据一致性。作者还指出,用户作为自己的写作者,离线时应最小化多元更新产生的问题。虽然没有严格的联网文件系统,Balasubramaniam和Pierce写了关于同步文件,他们指出,主动更新是离线操作的必要要素。虽然这些研究人员都致力于如何解决离线突变,他们的工作重点都是文件系统,而不是对象持久性。格雷等人指出,离线突变产生的问题应该由每个应用程序自己独特的要求进行处理。

8.2持续编程语言

Brown等人表明,持久性可以被视为正交的语言,尽管它确实需要由一些级别相当低的语言的访问。埃利奥特和莫斯实现了其中使用指针来表示对象图的边缘像在本研究中对Mneme对象的存储。霍斯金和陈创造了一个正交持久性的系统,绑定在一个编程语言的垃圾收集步骤,只有在GC运行并产生延迟是才能接受并继续坚持。我们的工作不同于这些论文,而是向已存在的没有翻译器和编译器的编程语言中添加对象持续性。

8.3 分布式和持续性对象系统

研究面向对象的分布式编程语言解决了如何通过网络向远程系统传输对象的许多问题。Emerald和Modula-2编程语言是最早提供位置透明性的语言,但语言也没有可能需要隐藏的性能详细信息。我们借鉴了如何识别这些作品的想法即使他们专注于执行对象的移动而我们侧重于持久性。

Thor面向对象的数据库是以一个乐观的方式支持离线操作持久对象的系统。它被设计用于广域网环境中,服务器冗余是关键操作的桌面应用程序。相较于我们的工作,我们的设计空间是我们不得不在浏览器的局限下,而不是C 和底层OS操作互联网的全部功能。这就要求在浏览器中的所有缓存对象避免延迟问题,并在有JavaScript的限制内工作,我们不能紧密地融入语言。

8.4 Web浏览器

Gears插件提出了网络浏览器的本地存储想法,这帮助导致了W3C Web存储API 的出现。Web Workers 在不能使用本地存储时仅能传输已有数据的副本,同时允许在该网络浏览器的并发处理。这些限制使Web Workers几乎没用到我们的框架。

9.结论

完全以新兴中或已提出的标准描述的机制为依托,我们已经创造了Web浏览器自动的对象持久化框架。我们能够解决JavaScript编程语言的不足之处,以尽可能实现快速检测持久对象的突变;无论是在新的属性或即时已知性质突变设置的

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[154090],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。