应用计算机系统外文翻译资料

 2022-01-19 10:01

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


应用计算机系统

ISSN 2255-8691(在线)

ISSN 2255-8683(打印)

2018年5月,第一卷。 23,不。 1,pp.37-44 doi:10.2478 / acss-2018-0005 HTTPS://www.degruyter.com /视图/ J /交流ss

用于Web API开发的Java EE和ASP.NET核心技术的性能比较

KristiānsKronis1*,Marina Uhanova2

1, 2里加技术大学,拉脱维亚里加

要 - 本文描述了Java EE和ASP.NET Core的有机基准测试的实现,它们用于比较语言运行时的性能特征。 基准测试创建为REST服务,以JSON格式处理数据。 ASP.NET Core实现使用Kestrel Web服务器,而Java EE实现使用Apache TomEE,它基于Apache Tomcat。 创建单独的服务以调用基准并收集其结果。 它使用Express with ES6(用于其异步功能),Redis和MySQL。 还使用Angular 5创建了一个基于Web的界面,用于利用此服务并显示结果。

键词 - 基准测试,计算机语言,编程,软件性能。

  1. 介绍

由Oracle开发的Java EE(Java平台,企业版)和Microsoft开发的ASP.NET(Active Server Pages .NET)都提供适合创建基于Web的应用程序的功能。 但是,在最近的历史中,Java EE具有更好的跨平台支持 - 可以在Windows和GNU / Linux操作系统上安装Oracle支持的JVM(Java虚拟机)的HotSpot实现。 但是,在处理时

.NET,完整的.NET框架不能在GNU / Linux上运行,必须使用Mono,它最初是一个开源项目,仅在2016年被微软收购[1]。 它不支持WPF(Windows Presentation Foundation),WWF(Windows Workflow Foundation),同时为WCF(Windows Communication Foundation)和ASP.NET [2]提供有限的支持。

但是,随着2016年.NET Core的发布以及随后的ASP.NET Core [3],Microsoft正在支持更多的操作系统。 现在,由于GNU / Linux上有第一方CLR(公共语言运行时)实现,除了现代重写ASP.NET和新的Web服务器 - Kestrel [4]之外,重新评估哪个是有益的。技术堆栈更适合新项目。

可以通过检查它们之间的差异来进行评估,例如,Kestrel Web服务器与IIS应该替换的不同,以及最流行的Java Web服务器,例如Apache Tomcat [5],运行时性能如何不同在典型的使用案例中,在类似的,常用的配置下运行。

本文描述了一个系统的实现,该系统将用于运行有机基准测试(现实世界)

测试)并收集他们的结果,为用户提供即时的视觉反馈。 基准测试的主要目标是获得GNU / Linux操作系统上两种技术堆栈的性能近似值,并突出显示任何明显的差异。 还为软件体系结构和实现实践制定了一般准则,以确保生成数百个并发请求并有效处理它们以及处理任何错误的能力。 使用JSON(JavaScript Object Notation)进行数据传输的通用REST(Representational State Transfer)API(应用程序编程接口)在两种技术中进行了描述和实现,并部署在相同的服务器上。 一个单独的应用程序,包括用Angular 5编写的测试配置的前端,以及用于测试执行和结果处理的后端服务,用Express和Node.js编写,它使用Redis进行临时存储,使用MySQL进行结果记录,也是创造的。 该系统采用模块化设计 - 除了配置外,还可以在前端界面中配置实现测试API的服务器

Redis和MySQL日志记录。

虽然没有声称结果是客观的,但系统应该作为一个起点,允许可扩展性 - 添加更多服务器,可以运行不同的语言和软件或硬件配置,无需更改代码,或扩展列表如果有必要在未来进行更具体的测试,那么将要运行的基准测试。

  1. JAVA EE

Java EE(Java平台,企业版)是Java SE(Java平台,标准版)的超集,它扩展了通用Java API以提供在企业设置中有用的功能,例如依赖注入(CDI) ,EJB),事务管理(JTA)和动态网页功能(JSP,JSF),以及用于创建Web服务(JAX-RS,JAX-WS)的功能,同时还缩短了开发时间和软件复杂性(图1)[6]。 该开发使用Java Community Process(JCP)并基于Java Specification Requests(JSR)进行组织。

本文描述了一个使用Java EE 7的设置,该设置于2013年发布[7]。 Java EE 7平台可以进一步划分为Full Platform和Web Profile,其目的是提供更有限的功能集,这更容易支持[8]。 开发的API实现利用了Servlets,JSON,CDI和

*通讯作者的电子邮件: kristians.kronis@edu.rtu.lv kristians kronis@edu。

copy;2018KristiānsKronis,Marina Uhanova。

这是根据知识共享署名许可协议授权的开放获取文章

(http://creativecommons.org/licenses/by/4.0), 以与De Gruyter Open达成一致的方式。 37

JAX-RS,因此使用完整平台规范的元素。 之所以选择Java EE 7,是因为在撰写本文时,Java EE 8的采用仍然有限,只有Glassfish 5.0和Payara 5支持该规范,这两者都不像Apache TomEE所基于的Apache Tomcat那样受欢迎。

图1. Java EE完整平台和Web Profile规范图。

  1. ASP.NET

ASP.NET(Active Server Pages .NET)是一个由Microsoft开发并利用CLR [9]的Web应用程序框架。 提供的功能类似于Java EE,例如,Web Forms允许以类似于JSP和JSF的方式创建动态内容(图2)[10]。 许多组件,特别是ASP.NET Web API,ASP.NET AJAX,ASP.NET

MVC提供各种功能[11]。 ASP.NET通常在IIS(Internet信息服务)上运行,Microsoft不支持GNU / Linux; 因此,必须使用红隼。

图2.显示ASP.NET的.NET Framework架构图。

  1. ASP.NET核心

ASP.NET Core是由Microsoft和社区贡献者开发的下一代ASP.NET [12],可以在完整的.NET框架和.NET Core平台上运行。 这是一个重写,旨在提供更纤薄,但更新的功能集,以及一个新的轻量级

Web服务器,Kestrel(尽管在Windows上仍然可以使用IIS)。 它支持多个组件 - 实体框架核心,MVC核心和Razor核心[13]等,它们可以替代ASP.NET中的那些[14]。

  1. 测试要求

为了确保最佳结果,不受所用操作系统配置的干扰,为系统设计定义了一些指导原则:

  1. API的实现将放在不同的服务器上。 在这种情况下,使用VPS(虚拟专用服务器)。
  2. 两台服务器应具有相同类型和版本的操作系统。 在这种情况下,选择了Ubuntu 16.04.4 LTS。
  3. 为了确保服务器的性能相同,它们将通过综合基准测试。 两者都要经受相同类型的基准测试。 这里使用了sysbench 0.4.12。
  4. 服务器应该使用相同的更新运行相同的软件,区别仅在于运行实现所需的软件包 - 在本例中,OpenJDK和

.NET核心。

  1. 要测试特定技术堆栈的Web服务器的性能(Apache TomEE和Kestrel),不要使用反向代理(例如Apache httpd或Nginx)。

还规定了如何进行测试以防止因测试系统本身的实现而导致的内存泄漏和错误的要求:

  1. 调用基准测试的服务不应超出其负载容量。 这是通过顺序测试的每个API来确保,以防止服务受到负载的影响,同时仍然可以并行地运行单个测试的多次迭代。
  2. 应该可以使用调度程序轻松添加和删除要运行的测试 - 这是在前端实现的,因此不会将测试服务限制为顺序执行,而只是以这种方式使用它。 如果需要多个API的并发测试,这允许面向未来。
  3. 应尽量减少系统各层(API,测试服务和前端)之间无关的数据交换。 这里,测试请求的内容在测试服务本身上生成,并且仅与要测试的API交换。 前端只接收结果。
  4. 在完成所有计划的测试迭代之前,应该根据请求将测试结果分块并提供给前端,但是,如果没有检索,则也应该在设定的时间之后到期。
  5. Web界面应该是轻量级的。 这是通过对结果进行分组并在运行超过100次迭代时显示组中的平均值来实现的,以防止图表框架对性能产生负面影响。 MySQL数据库可用于更精细的结果分析。
  6. 测试系统组件的详细信息

该系统由几个组件组成,每个组件使用通用技术重新创建配置,这些组件可以在实际使用中找到。

    1. Java API实现

Java API使用Java EE功能实现,并尽可能避免使用Spring等第三方框架。 它运行在Apache TomEE Web Profile 7.0.2上,它使用开源组件(OpenEJB,Apache CXF等)[14]提供Java EE 7 Web Profile的功能。 它基于Apache Tomcat--一种流行的应用程序容器[15]。 它通过OpenJDK,版本1.8.0_151运行。

    1. ASP.NET核心API实现

ASP.NET Core API使用ASP.NET Core功能实现,并尽可能避免使用第三方框架。 它在Kestrel Web服务器2.0.1上运行。 分发通过.NET Core 2.1.3版运行。

    1. Node.js Express测试服务

测试服务在Node.js v9.2.1上运行,基于Express 4.15.5。 它使用cors,redis,express-redis和request-promise-native软件包(通过npm安装)等,以提供必要的功能。

    1. Angular 5 Web界面

前端是使用Angular 5.0.0,TypeScript 2.5.3和Bootstrap 4创建的,它用于提供用户界面的样式和行为,与jQuery结合使用

      1. 此外,ng2-charts用作Angular和Chart.js之间的桥梁,这是一个提供基于HTML5的图形显示功能的框架[16]。
  1. 前端的设计

前端用作系统其余部分的外观,允许配置要使用的Redis和MySQL实例,以及要进行测试的服务器。 它不处理生成测试请求内容,但会使计划在后端调用测试服务。

应用程序结构基于单个Angular模块,该模块具有存储有关设置和测试的数据的服务,后者包含测试条目本身 - 包含有关测试类型,迭代和其他参数的数据 - 以及要使用,每个测试都有一个服务器对象的引用。

应用程序的其余部分由实用程序类(例如枚举或通知组件)和用于显示数据和组织输入和输出的组件组成 - 选项卡,菜单和图表组件。

界面被标签化以仅显示在任何给定时刻与用户相关的信息 - 有用于运行测试和显示其结果的选项卡(图3),以及配置服务器本身(图4),以及更改系统设置。

图3. Web界面,打开测试选项卡,列出可用的测试类型。

图4.打开服务器配置选项卡的Web界面,其中列出了当前服务器。

最后,基准测试过程还会尝试将请求运行时间划分为其组件,这些组件在图形中也会以不同的方式显示(图5) - 请求在网络上花费的时间以及

全文共14677字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[819]

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

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