英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料
Node.js实施中的挑战
Node.js引起了全栈开发人员的注意,现在能够自己管理服务器和客户端。Node.js对于繁重的文件和繁重的网络来说是快速可靠的。由于事件驱动,非阻塞和异步方法,开发人员也可以在单页(SPA)中维护一个完整的项目,并且可以用于物联网。 该研究从一项调查中得出结论,研究Nods.js 在实施中面临的挑战,最后将围绕这些困难与挑战给出合理性的建议。
1.介绍
基于Web的应用程序正在增加Node.js的使用,因为Nodejs让这些应用程序变得更容易开发。Web应用程序源自基于Web的系统,它具有执行业务的附加功能组织的逻辑。这些应用程序完全是基于Web而不是要求安装单独的在操作系统上的应用。谷歌文档,基于Web的零售商店,Google地图和基于网络的电子邮件等都是一种Web应用程。Web开发行业需要两种开发者,即前端开发人员和后端开发人员。前端开发人员需要具备HTML,CSS,以及JavaScript等前端知识。通过这些前端技术来完成设计师的设计。后端开发人员构建了任何Web应用程序背后的业务逻辑,例如,从Web应用程序添加和检索新闻集锦,或是表单验证,用户登录凭证等都是后端开发人员的一部分。后端开发人员需要了解PHP,.NET、Java等语言。后端开发者应该也了解MySQL,Oracle等数据库和SQL Server。一个数据库管理员将负责数据库服务器的顺利运行。
全栈开发者,是具备前后端开发能力的人。主要是后端开发人员要求具备前端开发技能,他们对学习有额外的负担。对于开发人员来说很明显为了拥有一个完整的技术栈,他必须具备三种专业知识,即客户端语言,例如Java脚本以及HTML和CSS,Javascript; 后端语言,如PHP,.NET,Java,Ruby等;数据库专业知识,如SQL Server,MySQL服务器和Oracle。
Node.js正在降低成为全栈开发人员的难度,对JavaScript充满信心的前端开发人员只需要学习一些额外的服务器端知识,他就能成为一个后端开发人员。除此之外,Node.js是免费的,它也被全球各地成千上万的开发人员使用。而网络应用需要性能和可扩展性。 一个解决方案是Node.js(有时是也被称为Node),它是一个轻量级的,和通过事件驱动和非阻塞I / O模型和服务器端JavaScript 来满足需求。Chrome的V8 JavaScript引擎是Node.js的基础,作为Node.js构建JavaScript的运行时。V8是Google的开源的JavaScript高性能引擎。谷歌已经使用了V8作为谷歌Chrome浏览器的引擎,并且能够独立运行,也可以嵌入到C 应用中。它能够在不同版本的Windows,Mac OS和Linux上运行。由于Node.js是基于事件的而不是基于线程的,因此它也能够同时扩展到数百万个连接,在单个线程中使用事件循环而不是制作多线程的开销。 Node.js的异步处理其I / O操作被AJAX广泛误解。而Node.js和AJAX有很大的不同。
a) Node.js 的优点
Node.js这样构建是为了处理异步I / O,因为它是由JavaScript构建的,并且JavaScript由事件循环构建。就像监听客户端按钮点击的事件是由Javascript事件循环实现的。虽然其他环境确实具有此功能,他们使用第三方库来构建它,就像Node.js,因此它们通常很慢,或者滞后不属于他们的标准功能。一些例子是Event Machine - 为Ruby构建,在MIT许可协议下,它被引入Python并且从Python 2开始就可用,并且作为Apache的网络框架库,名为Apache MINA,也被称为“网络套接字库”并且是提供事件驱动。同样Apache
AsyncWeb是使用Apache MINA和Perl的Any Event构建的。类似地,Node.js的上限将超过其他语言的上限,它将能够处理多个请求像第三方服务的客户一样
只执行一个线程。其他语言方面将阻止处理直到远程服务器响应他们的初始请求,
需要多个线程来执行。在Node中,你将使用的是异步,因为如果你愿意,它将变得相当困难在其中编写非异步代码。 Node.js在输出之前,永远不要强制缓冲数据。其他像Event Machine,许多人有强制缓存缓冲数据的习惯。
作为服务器端JavaScript,Nodejs另一个优于其他语言的地方就是开发人员要求只具备单一语言的知识和经验,即JavaScript,无论他是否为服务器端开发还是为客户端开发。开发人员不需要交换他的大脑周期,来从客户端的一种语言切换到服务端的一种语言。相比其他语言如PHP,Node.js的解释器更小更快。服务器端应用程序在这里永久保持开启,不同于其他语言每次启动应用程序都会遵循循环,需要例如加载配置的步骤,遵循数据库连接,获取所需信息,最后呈现标记语言。另一方面,Node.js通过内存保持来减少这些步骤,应用永久开启。
b) Node.js的缺点
Node.js中的代码会膨胀的很快,事实上使用事件驱动/回调方法很难调试。另外,目前无法为Node.js环境提供现成的托管服务。 JavaScript语言的复杂主题例如原型继承,匿名函数,回调使语言难以学习。 Node.js还不是一种成熟的语言,因此面临着如此多的问题犹豫是否请专家程序员加入。 另一个问题是单线程, 一旦被阻速就可能导致程序的崩溃。 所以开发人员也是被迫在异步中思考如何使用Nodejs。
研究的范围是为了争取探索Node.js的实现,并尝试了解如何使新的实施变得容易。另外,也试图探索Node.js为什么它仍然不是很广泛以及为什么Node.js的新成员较少。将努力将想法与真实经验结合起来,而不仅仅是理论。该研究将
探索Node.js实现中的问题并提供建议。这项研究将使读者有兴趣采用Node.js作为开发语言。这项研究的结果将有助于开发人员找到快速采用Node.js的原因和方法。帮助Node.js在市场上变得流行,像其他顶级语言,如.Net Languages和PHP。
2. 文献综述
本节介绍现有的Node.js作为服务器端语言和实现Node.js的领域的研究,
另外是Node的历史,以及Node.js的一些应用领域,以及它的效率性能如何。
a)关于JavaScript和Node.js
JavaScript的历史可以追溯到WWW的开始,它网页的交互实现中扮演着不可或缺的角色。JavaScript在1990年代后期的AJAX中引入了它的概念,再次用于向网络添加实时行为的页面。 直到这个时候人们还是觉得JavaScript只能作为客户端脚本语言,它与服务器端编程无关。但是通过服务器端JavaScript的开发就像Node.js一样,这个概念发生了变化,现在又变成JavaScript不仅是客户端脚本编程语言,也有能力在服务器端执行。 Node.js是其中一个主要的服务器端时代的JavaScript中的竞争对手。 再一次要提到的是Node.js不同于JavaScript,而JavaScript无疑是Node的基础,Node.js是建立在JavaScript之上的。
b)Node.js的历史和演变
创建Node的Ryan Dahl最初的动机是从显示文件上传的进度条中构建Node.js。Flickr(雅虎公司处理图片画廊)浏览器在哪里询问服务器一次又一次地关于文件的大小上传。而在2009年3月,Node.js得到了它首次使用名称及其包管理器npm也是在同一年10月推出。在同年11月的晚些时候创作者Ryan Dahl在第一次在JSConf中谈到Node.js,他详细讨论了Node.js。他解释了Node.js是如何基于事件的,并且可以继续回调,其中I / O的每个功能都作为接收输入,从磁盘,网络或任何进程,应该使用回调,观众们为他的额外内容而鼓掌。在2010年,Express框架问世。 node.js在2011年7月之前不适用于Windows环境,当微软为此目的与Joyent合作时,并支持甚至更旧版本的Windows Server。在2014年底,来自Node.js团队的爱好者抵制了Node.js,并且从Node.js创建了自己的fork,命名为io.js或iojs。他们抵制,因为他们不满意Joyent对项目的控制。之后一年,他们两个似乎再次融合在一起,他们投票决定组建一个中立的Node.js基金会。最后在2015年9月合并回来。
c) Node.js平台的体系结构
随着Node.js的发展,Web服务器得到了事件驱动编程。 这使得Web服务器
快速且广泛流行。 在Node.js中,开发人员不需要制作在创建可扩展的服务器时使用线程。Node.js使用一个非常简单的事件驱动模型,使用触发回调函数完成任务或捕获错误。 Ryan Dahl创建Node.js的想法是其他编程语言使编程变得困难。
d) 使用Node.js
Node.js被PayPal, LinkedIn,Medium和Netflix等巨头采用。 Face Book采用了Node.js并证明了这一点。他们非常精通,然后他们采用了它编写。微软做了一个值得改变的使Node.js成为开发人员堆栈的一部分,从那时起,开发人员现在可以在Azure平台上使用它,也与其他人一样,并不仅限于旧的操作系统。 沃尔玛采用端到端的JavaScript通过Node.js, 相信Node.js会帮助他们提供他们提供世界各地的服务。 他们提到了他们采用Node.js也是因为它不仅仅引入了如何构建完美软件的新思路,而且还以新方式表达现有事物。根据GitHub的统计数据,JavaScript是最流行的语言。
e)Node.js的应用
Node.js与PHP / Nginx进行了比较,与PHP相比,Node.js展示了性能和可伸缩性,与Nginx相比,展示了高性能和可扩展性。两位研究人员开发了Web应用程序Dijkstra算法及并发模拟负载研究用户请求使用一些负载生成器。Node.js和Ruby的Event Machine和Apache的线程模型,测量请求时间超过
核心数量。 Node.js再次打败了另外两个,特别是当核心数量增加。基于Node.js的DPWS - 设备配置文件,评估了Web服务(称为Node.DPWS)性能和与替代DPWS相比工具。研究人员得出结论,Node.js的基础DPWS易于使用且轻量。在物联网领域,DPWS甚至击败了它最引人注目的替代品。 Node.js也在GIS领域发挥着重要作用,并发表了一篇论文在韩国空间信息学会使用Web GIS中的Node.js。他们实现了Node map并且在他们的研究中得出结论,在与Node.js相结合后,互联网GIS有它的未来。另一个分析研究表明Node.js构建的复杂的实时应用程序可以为数百万客户端提供服务连接。有一个名为MAGI的Web服务用于图形处理单元的基础设施(GPU)用于快速数据分析Micro RNA-seq。虽然MAGI基于Node.js,但确实如此解决了其他类似工具的限制,能够处理大文件,以及繁琐的错误。此外,MAGI帮助发现了延误下游分析与其他分析一样耗时并解决了其他人无法解决的问题,提供统计检验。
3. 方法
这项研究从Node.js文献综述获得知识,这个研究还从所进行的调查中获得了来自专业开发人员的知识。 这项调查是在Google表单上创建并运行1个月
以下链接: https://docs.google.com/forms/d/e/1FAIpQLSc4Ghr oqubE5jQSnzmPOXEWuXzD8IcpRCtFPbSfFYscszX SVg/viewform?hl=en
该调查针对的是LinkedIn,Facebook上的群组以及与之共享的群组的专业开发人员。
4. 结论
文献综述得出Node.js可能很有用,应该在处理大文件或需要大文件的任何地方实施网络负载。下面讨论一些结果,相同的背景,Node.js开发者可以轻松完成成为全栈开发人员。服务器端不需要单独的同事和数据库开发者。还有,雇主可以通过采用Node.js来降低成本,他们会找到一个开发人员来完成在服务器端和客户端执行所有任务。 Node.js的介绍一节中也介绍了如何快速实现单页应用程序(SPA),因为它们使用较少的服务器资源和较少的回调服务器,同时使网站更具互动性和用户友好性。文献综述也得出结论,互联网GIS领域前景广阔与Node.js结合使用还有提升空间,事实证明Node.js能更好地进行图形处理。
由于研究也是基于定量的研究,因为进行了一项调查,下面是提到了相同的结果。 在线调查通过LinkedIn 、Facebook和个人网络发送给几个专业人士。 总计收到了93个答复。 其中有80个回复对于这项研究是有用的,因为他们是开发人员并且与这项研究的开发者社区有关。
5. 未来的工作
1)Node.js已经让Full Stack Developers的工作梦想成真。 在没有Node.js的情况下开发人员很难学习几种不同的东西语言和环境来管理服务器端和客户端的完整系统。lt;
全文共6420字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[3032]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。