Metamarket的CTO Mike Driscoll最近发表了一篇略带煽动性的帖子,讨论了Web应用的架构。 他认为Node.js等框架预示着LAMP的终结。
三个月前,我们决定废弃仪表盘选用的框架:Python的Django,并用Node.js(服务器端的Javascript)重新构建了框架。 鉴于LAMP堆栈已经死亡,我们才做出了这个决定。
Mike认为Web有三个阶段:
- 1991-1999:HTML时代——这是个文档的时代。
- 2000-2009:LAMP时代——使用数据库的时代。
- 2010-??:Javascript时代。Javascript时代是事件流的时代。
现代的Web页面已经不再是页面了,它们都是事件驱动的应用,信息会通过这些应用流转。
他解释道:
LAMP架构已经死了,因为对于响应里的Mashup,很少有应用愿意把全部的有效负载转移到很小的事件上去; 他们只想用Javascript更新DOM的一个片段。 AJAX做到了这一点,但如果服务器端的LAMP模板有10%的HTML和90%的Javascript,这么做显然是不对的……
Mike认为,服务器的主要作用就是带着数据(JSON)把应用发送到客户端(Javascript),并让客户端从中构造UI。 服务器的次要作用则是监听处理事件的流,并有效地把响应推回客户端, 这些事件可能是一次新的编辑、一条消息、或是Ticker发生了变化。
一些人对此发表了评论:
Bruce Atherton赞成Mike的观点,但他认为事件并不会通过HTTP来流转:
Websockets和SPDY将会接管这方面的处理,因为和HTTP相比,它们更合适这个任务。
Chase Sechrist已经在很多地方使用了Node.js,即便如此,他仍然列举了一些对Node.js的担忧:
你还需要知道一些高级知识,比如竞态条件的调试方法、事件循环的工作原理,甚至在递归回调导致栈溢出时,调用堆栈的处理方式。 正因为如此,对那些写了二十年C的人、还有刚开始编程的初级工程师来说,控制流还是非常奇怪、令人费解的。
“Jorjun”指出,以现在的变化速度来看,即使Javascript这个新的架构是合理的,它也不会太持久:
两年之内会有一种更高效的方式对宝贵的IP进行编码。 需要注意的是,新的方式正在出现,Java对它们没有任何意义——这些方式在九十年代末还没有出现。 Javascript的愚蠢名副其实。 它有大括号、奇怪的Fudgery、极其恼人的Artefact,对我这样的老学究来说,Javascript看起来轻率、讨厌、太复杂而容易混淆。
NOLOH的联合创始人Asher Snyder认同帖子的前提条件:“Web应该、也正在转向事件。” 但并不相信Javascript能引领方向。 他认为“我们正在走向一个平台或统一语言的时代,因为只有平台或统一语言才能让快速开发真正处理好Web的疯狂”。
Subbu Allamaraju最近发布了Node.js和Play的一些性能对比数据,InfoQ和他简单讨论了一下:
就个人而言,我发现Node.js和Play等框架让Web开发人员觉得很兴奋,因为它们带来了一些新的思想。 在Web框架领域,特别是在Java端,这样的简单性已经很久违了。 尤其是Play,它在Netty之上,而不是传统的Servlet框架,是一个很不错的选择。
Web应用架构的演进确实很快。 由于Web应用变得越来越“厚重”,特别是在事件驱动的世界里,人们只能思考REST还剩下什么,看来我们要回到最初开始的地方了。 最近我们确实没怎么听说有关REST及其统一接口的消息,还有它怎样成功改变Web应用架构的相关内容。 你对Web应用架构的未来持什么观点呢? 你怎么看Javascript成为主流的编程语言?
查看英文原文:Will the Rise of Javascript Mean the End of LAMP?
中文来源:http://nodejs.iteye.com/blog/1604880
分享到:
相关推荐
"Lava Lamp 0.2.0 JavaScript 导航条" 是一款基于jQuery库的动态导航菜单插件,其设计灵感来源于20世纪60年代流行的熔岩灯,因此得名。这款插件旨在为网站增添一种独特且吸引人的用户交互体验,通过滑动效果使导航条...
描述中提到“内容丰富”,意味着这个压缩包可能包含了各种类型的JavaScript应用场景,包括但不限于DOM操作、事件处理、动画效果、表单验证、AJAX请求、JSON处理、函数与闭包、对象与原型链、异步编程、模块化、以及...
2. **对象和原型**:JavaScript的对象是一种基于原型的模式,这意味着对象可以从其他对象继承属性和方法。书中详细解释了如何创建和操作对象,以及原型链的工作原理。 3. **函数作为一等公民**:在JavaScript中,...
本资源包包含了多个关于JavaScript的重要参考资料,包括“JavaScript权威指南(英文版).chm”、“javascript5.5.chm”、“css2gb.chm”以及“JavaScript对象与数组参考大全 .chm”。 首先,我们来看“JavaScript权威...
JavaScript 作为一门脚本语言,具有悠久的历史,自 Netscape 时代起步,逐步壮大,直到 AJAX 的兴起,JavaScript 成为网络应用的核心语言。然而,JavaScript 同时也存在许多问题,如性能不高、代码冗长、缺乏严格的...
在这个场景中,我们关注的是VS2015的安装过程中涉及到的证书问题以及两个特定的组件:JavaScript_ProjectSystem.msi和JavaScript_LanguageService.msi。 首先,关于“VS2015安装证书”,这通常是指安装过程中需要...
"悟透JavaScript"意味着要理解其内在机制,比如垃圾回收机制和执行上下文。JavaScript的垃圾回收是自动的,用于释放不再使用的内存。执行上下文分为全局上下文、函数上下文和块级上下文,理解它们对于正确处理变量...
在JavaScript中,函数是一等公民,这意味着它们可以作为其他函数的参数,也可以被赋值给变量,甚至可以作为其他函数的返回值。手册可能会涵盖函数表达式、函数声明以及箭头函数的使用。 JavaScript还支持原型继承和...
1. **基础语法**:JavaScript是一种基于原型的动态类型语言,这意味着变量在声明时不需要指定数据类型,而是根据赋值自动确定。了解变量、常量、数据类型(如字符串、数字、布尔值、null、undefined、对象、数组和...
《JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增...
JavaScript Obfuscator是一种工具,主要用于保护JavaScript代码,通过将源代码转换为难以理解的形式,以防止未经授权的用户查看、修改或盗窃代码。在Web开发中,尤其对于那些包含商业逻辑或者敏感信息的JavaScript...
JavaScript是一种广泛应用于网络开发的脚本语言,它主要在客户端运行,为网页添加交互性,提升用户体验。这个“JavaScript帮助学习文档”包含了丰富的资源,旨在帮助初学者和进阶者深入理解和掌握JavaScript的核心...
在JavaScript中,函数是一等公民,这意味着函数可以被赋值给变量、作为参数传递给其他函数以及作为其他函数的返回值。函数式编程强调纯函数(pure functions)和不可变性(immutability),纯函数指的是相同的输入...
描述中提到的“逻辑可配”意味着这种跨语言调用方式特别适用于那些需要根据应用环境动态改变的业务逻辑。例如,你可以在Java服务端定义一个接口,该接口允许在运行时加载和执行JavaScript脚本来完成特定任务,这样就...
《深入解析org.mozilla.javascript-1.7.2.jar》 在Java开发中,JavaScript引擎的使用日益广泛,其中Mozilla的Rhino引擎是备受开发者青睐的一款。本文将围绕"org.mozilla.javascript-1.7.2.jar"这个资源包,详细讲解...
8、原生JavaScript判断是否为数字类型 9、原生JavaScript设置cookie值 10、原生JavaScript获取cookie值 11、原生JavaScript加入收藏夹 12、原生JavaScript设为首页 13、原生JavaScript判断IE6 14、原生JavaScript...
JavaScript支持动态数据类型,这意味着一个变量可以存储不同类型的数据。书中详细解释了基本数据类型(如字符串、数字、布尔值)和复杂数据类型(如对象和数组),以及如何声明和使用变量。此外,作用域规则决定了...
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...
中文名: JavaScript权威指南 (第6版) 原名: JavaScript: The Definitive Guide: Activate Your Web Pages, 6th edition 作者: David Flanagan 版本: 英文文字版-pdf/EPUB + 完整书中源代码 出版社: O'Reilly 书号: ...
本教程旨在为初学者提供一个全面的JavaScript基础知识学习平台,帮助理解并掌握这种强大的脚本语言。 《JavaScript基础教程》首先会介绍JavaScript的历史背景和基本语法,包括变量、数据类型、操作符、流程控制...