没有合适的资源?快使用搜索试试~ 我知道了~
使用第三方组件开发Web应用程序曹汉阳引用此版本:曹汉阳。使用第三方组件进行Web应用程序开发编程语言[cs.PL].波尔多大学,2019年。英语NNT:2019BORD0017。电话:02101381HAL Id:tel-02101381https://theses.hal.science/tel-021013812019年4月16日提交HAL是一个多学科的开放获取档案馆,用于存放和传播科学研究文件,无论它们是否已这些文件可能来自法国或国外的教学和研究机构,或来自公共或私人研究中心。L’archive ouverte pluridisciplinaireACADÉMIE DEBORDEAUXUN I V E R S IT EB O R D E A U X科学与技术THASHASE波尔多大学信息学研究所教授专业:信息信息学博士课程数学与信息博士学校使用第三方组件开发Web应用程序par汉阳漕2019年2月5日,评审团组成如下:陪审团主席David AUBER,波尔多大学,法国..............................................................Directeur de thèseXavier BLANC,波尔多大学,法国.............................................................报告员Olivier BARAIS,法国雷恩第一大学.............................................................Romain ROUVOY,法国里尔大学.........................................................................考官Li ZHANG,中国北京航空航天大学校长................................................................David AUBER,波尔多大学,法国..............................................................摘要Web应用程序非常流行,并且使用其中的一些(例如,Facebook、谷歌)正在成为我们生活的一部分开发人员渴望创建各种Web应用程序来满足人们 要构建一个Web应用程序,开发人员需要了解一些基本的编程技术。此外,他们更喜欢在Web应用程序中使用一些第三方组件(如服务器端库,客户端库,REST服务)通过包含这些组件,它们可以从可维护性、可重用性、可读性和效率中受益在这篇论文中,我们提出帮助开发人员在创建Web应用程序时使用第三方组件。我们提出了开发人员使用第三方组件时的三个障碍使用最好的JavaScript库如何获得REST服务的标准规范如何适应REST服务的数据变化 因此,我们提出了三种方法来解决这些问题。这些方法已通过若干案例研究和工业数据得到验证我们描述了一些未来的工作,以改善我们的解决方案,和一些研究问题,我们的approaches可以针对。关键词:Web应用,库推荐,REST,JSON,规范简历Les applications Web sont très populaires etex. 谷歌(Google)在我们的网站上做了更多的事情。残疾人对网络上各种各样的应用程序不感兴趣,以满足人们的各种需求。为了开发一个Web应用程序,开发人员需要了解一些基础编程技术。 此外,他们的主要使用者在应用程序网络中确定了组成层(服务器端、客户端、REST服务)。在包括这些成分的情况下,它们具有更好的可维护性、可再利用性、可拆卸性和有效性在这一点上,我们建议帮助残疾人利用网络应用程序的组成部分。Nous presésentons troisobstacles lorsque les déciliurs utilisent les composants tiers : Quelles sont les meilleuresbibliothèques JavaScript à utiliser?评论obtenir les spécifications标准des服务REST?注释 这一方法得到了多位研究案例和工业案例的专家的认可。我们将确定未来的工作,以寻求我们的解决方案,并确定我们的方法可能面临的问题。关键词:Application Web,书目推荐,REST,JSON,规范LaBRI-351,Cours de la Libération-33400 Talence-法国内容1介绍11.1上下文:Web应用程序开发。. . . . . . . . . . . . . . . . . . . .21.2问题陈述。. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.2.1最好的JavaScript库是什么? . . . . . . . . . . . . . .61.2.2如何获得REST服务的标准规范? . . . . . . .71.2.3如何适应REST服务的数据变化? . . . . . . . . . .81.3捐款。. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81.3.1最好的JavaScript库是什么? . . . . . . . . . . . . . .81.3.2如何获得REST服务的标准规范? . . . . . . .91.3.3如何适应REST服务的数据变化?.......................................................................101.4论文大纲102背景. 112.1最好的JavaScript库是什么?......................................................................................... 122.2如何获得REST服务的标准规范?.................................................................................... 152.2.1REST概念152.2.2自动化或半自动化方法2.2.3众包办法2.3如何适应REST服务的数据变化?.................................................................................... 232.3.1拉模式和推模式242.3.2转型平台252.3.3JSON文档和JSON补丁282.3.4JSON补丁算法302.4摘要. 32我3最好的JavaScript库是什么?333.1一.导言. 343.2A.方法353.2.1定义. 353.2.2认可策略353.2.3ARJL组合策略383.3执行情况. 393.4评价403.4.1文件匹配策略的优势403.4.2战略的精确性413.4.3战略比较423.4.4效率423.5意见和建议3.5.1统计数据443.5.22015年10月快照分析453.5.3三年期分析463.6结论.474如何获得REST服务的标准规范?494.1一.导言. 504.2背景514.2.1主要挑战4.3ExtrateREST:用于生成REST API规范的自动提取器524.3.1Global architecture全球架构4.3.2第一步:收集相关的HTML文档页534.3.3第二步:从相关页面中提取信息554.4评价584.5结论635如何适应REST服务的数据变化?655.1一、导言. 665.2JDR:JSON补丁算法665.3效率评估5.4结论796结论836.1捐款摘要836.2前景856.2.1最好的JavaScript库是什么?.................................................................................... 856.2.2如何获得REST服务的标准规范?...............................................................................856.2.3如何适应REST服务的数据变化?.......................................................................86A Résumé en Français87图表101表103C型肝炎介绍本章介绍了本文的背景、动机和贡献。本论文基于开发人员使用第三方组件(例如,库、REST服务)。更准确地说,我们解决了这些开发人员面临的三个主要问题:1)由于存在大量的组件,选择哪些组件2)如何获得这些组件的知识3)如何使它们更好地适应它们的需要? 在本章中,我们描述了这三个问题,并强调了潜在的挑战。然后,我们提出我们的主要贡献。最后,我们总结了手稿的总体结构。内容1.1上下文:Web应用程序开发。. . . . . . . . . . . . . . . . ..21.2问题陈述。. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.3捐款。. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81.4论文大纲. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1011第一章:第一章介绍1.1Web应用程序开发Web应用程序在过去几年中显示出其流行性和重要性要构建一个Web应用程序,开发人员需要了解一些基本的编程技术,如HTML,JavaScript,CSS,数据库系统等。同时,他们使用一些第三方组件(例如,库、REST服务)来提高时间效率,实现其业务逻辑。 我们将在下面的示例中说明Web应用程序开发的上下文。运行示例。想象一下,乔布斯先生决定建立一个网络应用程序,可以显示,备份和更新用户的公众意见(例如,推特、Facebook和Instagram帖子)。Web应用程序可以呈现和分析这些观点的公众影响例如,web应用可以监视唐纳德·特朗普总统的推文并调查这些推文的财务影响(例如,美元/欧元汇率波动、原油价格变动)。为了实现他的想法,先生。 Jobs准备目标Web应用程序的开发上下文,如图1.1所示。他需要开发Web应用程序的两个部分:服务器和客户端。服务器集中于实现业务逻辑。客户端是在Web浏览器中运行的图形用户界面 双方都将受益于使用第三方组件。 使用第三方组件可以提高代码质量,防止错误并加快生产力[Baldassarre et al. ,2005年]。例 如 , 作 业 倾 向 于 包 括 各 种 客 户 端 JavaScript 库 ( 例 如 , jQuery , AngularJS ,Backbone)在客户端。 这种库将有助于使所获得的数据可视化,并提供一个美观和用户友好的界面。此外,先生。 乔布斯当然需要利用第三方REST服务来实现业务逻辑。例如,他会调用Twitter REST服务1来获取唐纳德·特朗普的推文,并请求Xignite服务2获取实时全球货币。我们将第三方组件称为两个库(即,服务器端库和客户端库)和REST服务。正如我们简单的例子所示,先生。然后,乔布斯依靠第三方组件来完成他的Web应用程序。 在下面,我们给出一些更正式的定义,并举例说明开发人员在使用第三方组件时所面临的问题。Web应用程序。 Web应用程序是一个基于Web的系统,它向广泛的最终用户发布一组内容和功能[Conallen,1999]。它采用客户端-服务器结构,客户端在Web浏览器中运行[Davidson和Coward,1999;Gellersen和Gaedke,1999]。与桌面应用程序不同,Web应用程序1. https://developer.twitter.com/en.html2. https://www.xignite.com/developers1.1.上下文:Web应用程序开发3图1.1安装在操作系统中,开发人员可以轻松地更新它们,而不会打扰用户[Per,2014]。Web应用程序开发人员。Web应用程序开发人员是构建和维护Web应用程序的程序员。虽然没有非黑即白的规则,但它可以分为服务器端和客户端开发人员。 前者专注于实现业务逻辑,而后者专注于数据可视化和与用户的交互。第三方组件。我们将第三方组件称为第三方供应商提供的可重用模块或功能。它们被广泛使用,使开发更容易,更便宜,质量更好 第三方组件包括库和REST服务:库是一个可重用的源代码块,帮助开发人员实现他们的业务逻辑。在Web应用程序的上下文中,库可以是服务器端的,4第1章介绍或客户端。服务器端库可用于连接数据库、处理HTTP通信、自动化测试、从REST服务检索数据等。 举个例子,JavaScript JS是一个服务器端库,用于设置应用程序、配置路由器和处理请求。客户端库通常用JavaScript编写,可以由浏览器执行 它们主要帮助开发人员处理HTML DOM元素,cookie,HTTP请求等。例如,jQuery使它更容易管理HTML文档,选择DOM元素,创建动画和处理事件。REST服务提供了对一组所谓资源的访问[Fielding和Taylor,2002]。遵循REST原则,对资源的访问都是通过HTTP请求完成的,其中请求所使用的动词定义了如何操纵资源(GET用于读取,PUT用于写入等)。例如,Instagram提供了一个REST服务,可以访问其用户发布的媒体资源(图片,电影等)。当开发人员想要使用第三方组件时,他/她会遇到以下问题,在这里以研究问题表示RQ1:最好使用的第三方组件是什么?在运行的例子中,让我们考虑先生。乔布斯希望在他的项目中包括一个客户端库 由于存在超过50个可用候选者(例如,例如AngularJS,Backbone或Polymer),然后他想知道哪一个最适合他的需求?他可能会问谷歌,但会得到许多不同的答案。此外,如果先生。乔布斯希望在其项目中包括著名的jQuery语言通过浏览网页,他会注意到jQuery有两个主要版本(1.x.x和2.x.x)和几个次要版本。如果他现在试图理解哪个是最好的版本,他最终会进入StackOverflow,得到几个不同的,有时甚至是相反的答案。向潜在用户推荐第三方组件已在文献中得到广泛研究(详见第2.1节)。 它主要包含两个步骤:1)获取现有第三方组件的大数据集,2)根据各种标准(例如,流行性、相似性)。 我们通过专注于著名的现有Web应用程序使用的客户端库来为该领域做出贡献。 这样的Web应用程序通常是封闭源代码的,这使得它们很难分析。因此,我们的具体研究问题是SQ1:最好使用的JavaScript库是什么?RQ2:如何获得第三方组件的知识?在我们的示例中,乔布斯先生需要学习如何与Twitter REST服务通信以检索实时tweet。通常,他会去官方的Twitter HTML文档cite 4,查找相关资源的使用说明,然后手动编写代码来处理HTTP请求、响应和身份验证。尽管,先生。乔布斯当然更希望3. 以下是2015年8月20日的答案,http://stackoverflow.com/questions/22289583/what-version-of-jquery-should-i-actually-use4. https://developer.twitter.com/en/docs1.1.上下文:Web应用程序开发5Twitter服务的机器可读规范(如OpenAPI)。 该规范可以作为计算机用户指南,帮助用户处理底层细节。然而,这样的Twitter规范目前还不可用。从第三方组件的文本文档中生成机器可读的规范已经在文献中进行了研究(详见第2.1节)。我们通过专注于服务器端第三方组件和更精确地说REST服务来为该领域做出贡献。REST服务通常提供其产品的在线文档然而,它们的机器可读规范很少开发人员除了阅读文档和理解如何使用REST服务之外别无选择,这是容易出错的。在我们的论文中,我们的目标是回答以下问题SQ2:如何获得REST服务的标准规范?RQ3:如何使用第三方组件?在我们的示例中,Twitter服务返回一条频繁变化的推特时间线先生然后,无论时间线是否更改,作业都应该定期调用该服务以获取时间线的更新周期性呼叫可能在带宽和系统资源方面具有高成本,这对于数据周期性变化的服务是不足够的。先生 乔布斯当然更愿意调整REST服务,使其仅在时间线真正发生变化时才能获得通知消息。对现有组件的调整至关重要。主要有两种适配:版本迁移和数据适配。当Web应用程序想要使用第三方组件的新版本时,执行版本迁移在这种情况下,开发人员需要确保他们的API调用与目标版本兼容 很多现有的工作都集中在REST服务迁移上[Li et al. ,2013; Espinha etal. ,2014; Wanget al. ,2016]和文库迁移[Meng et al. ,2012; Dig et al. ,2008年]。数据自适应意味着Web应用程序应该有效地检索频繁更新的数据。数据适配只存在于处理REST服务时,因为其他组件不返回数据。与REST服务通信的现有方式是定期调用服务,当数据频繁且不可预测地更改时,这种方式效率不在我们的论文中,我们专注于这种适应,然后旨在回答以下问题SQ3:如何适应REST服务的数据变化?表1.1列出了Web应用程序开发人员面临的三个问题 它进一步强调了这些问题与REST服务库的关系。然后,对本文所选择的具体案例进行了分析总之,在本文中,我们的目标是帮助web应用程序开发人员解决三个问题(即,RQ1、RQ2、RQ3)。由于这些问题的普遍性,我们为子问题(即,SQ1、SQ2、SQ3)。 SQ1是基于对著名的Web应用程序的调查,这是图书馆特有的问题,以前没有研究过。 SQ2专注于获得标准规范,这是REST服务的独特问题。SQ3也是处理REST服务时遇到的一个独特问题 我们将在下一节说明子问题。6第1章介绍表1.1-研究图书馆REST服务最好使用的第三方组件是什么?如何获得第三方组件的知识?开源web应用程序Famousweb applicationC文档源代码开源Web应用程序文件规范C如何适应第三方组件的变化?版本迁移版本迁移数据适配C1.2问题陈述在澄清研究背景和介绍问题之后,我们将在本节中更详细对于每一个问题,我们提出了主要的动机,突出的挑战,并讨论了Web应用程序开发人员1.2.1最好的JavaScript库是什么?动机 使用第三方库提供了许多好处,因为重用高质量的代码可以防止错误并加快生产力[Baldassarre et al. ,2005年]。然而,从软件开发的角度来看,它带来了选择最佳库的主要问题[Teyton et al. ,2012]。事实上,有这么多的库,有这么多的版本,它变得太复杂,开发人员选择哪一个包括在一个软件项目。 这对于JavaScript库来说甚至更困难,因为JavaScript5的流行,JavaScript库生产的杰出步伐,以及Web应用程序注定要以互联网的速度发展以被使用而不是被弃用的事实[Baskerville et al. ,2003年]。挑战. 为了帮助开发人员在这个困难的选择,流行度指标经常使用的主要假设是,最常用的库是最好的。为了获得这些指标,现有的方法是基于对发展的分析,5. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html1.2. 问题陈述7组件(源代码文件或部署描述符),因此依赖于使这些组件可用的开放源代码项目的观察 然而,对于Web应用程序来说,这是不可能的,因为大多数著名的Web应用程序都是闭源应用程序,它们的开发组件根本不可用。商业Web应用程序的开发组件只能通过其根URL进行在线浏览。期待 当Web应用程序开发人员选择哪些JavaScript库应该包含在他们的项目中时,他们希望获得流行的JavaScript库和相关版本的推荐。目前,没有可用的解决方案来识别商业Web应用程序中的第三方库然后,我们必须提供一个解决方案来识别现实世界中的JavaScript库,并为Web应用程序开发人员提供流行度指标1.2.2如何获得REST服务的标准规范动机 REST架构风格现在非常流行,并被服务提供商广泛采用。要使用REST服务,Web应用程序开发人员可以通过两个工件得到帮助:结构化REST规范和HTML文档。 最佳实践是拥有REST规范,因为它可以通过自 动 生 成 客 户 端 [Fokaefs和 Stroulia , 2015]甚 至 服 务 组 合[Wagner et al. ,2012]。此外,可以使用严格的规范来通过推断参数依赖性约束来达到更好的质量[Wu et al. ,2013]或执行自动化测试生产[López et al. ,2013]。挑战. 拥有严格的规范可以帮助开发人员加速开发过程。然而,几乎没有可用的REST规范,而大多数REST服务提供商只提供HTML文档[Danielsen和Jeffrey,2013]。根据对最流行的20种REST服务的深入分析[Renzel et al. ,2012],其中只有20%提供WSDL [Chinnici et al. ,2007年]规范,而75%没有提供严格的规范,只有普通的HTML页面。 这样的情况就需要将普通的HTML文档自动转换为严格的规范。期待 当Web应用程序开发人员想要使用REST服务时,他们更喜欢获得REST规范而不是HTML文档。由于大多数REST服务只提供HTML文档,很少提供严格的规范,因此可以提供将HTML文档转换为REST规范的解决方案
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功