当各种浏览器富客户端技术的大战正如火如荼的时候,最新标准的HTML5,CSS3登场了,它不需要任何插件。只是用html+css+javascript就可编写出漂亮的,动感的,富客户端界面。完全把其它几种插件技术打的溃不成军。
它的唯一不足之处是需要浏览器本身支持html5和css3,如果大家都使用电脑上网也就罢了,用惯了IE6的网民们,没必要非得换浏览器,但是网民现在都投向了移动互联网的怀抱,各种iPhone,Android系统的智能手机让人随时随地就可以上网。而这两个系统上都没有IE的生存之地。各种浏览器都在忙着抢占这个市场,没有人会愿意受人挟制,没人愿意在本来就不大的浏览器程序上再绑一个别的公司的插件程序,于是使用html5成了最好的选择。
这样看来富客户端大战的最终赢家还是ajax。javascript这门曾经被批判的一无是处的语言,又复活了,而且以英雄的姿态重新站在开发者的面前,越来越多的人使用javascript,它的各种优点也被一一的发掘出来,甚至曾经的缺点,也被利用起来变成了特殊技巧。
但是javascript只是一门运行在浏览器上的语言,别的地方似乎没有生存之地,但是google的工程师们改变了这个事实。他们在开发chrome浏览器的时候为了让javascript语言运行的更快,专门为它变写了一个V8引擎。Chrome浏览器在市场上站稳之后,工程师们认为V8引擎可以做更多的事情,于是一门新的服务器端技术nodejs诞生了,它独特的机制吸引了很多关注,大量的开发者加入了nodejs社区,而nodejs本身也在高速发展。
我们再历数一下以往流行的WEB服务器端技术都是什么,NodeJS为什么能够脱颖而出呢?
Java
在选择服务器端技术的时候大部分企业应用都会选择Java,因为她速度快,安全。但是,她的 开发非常复杂,一个完整的java EE程序开发时间常常会超过半年,甚至1年;而且学习成本非 常高,而且各种新技术层出不穷,每个都说自己能够简化开发,但是如果你信以为真去学习的 话,你会发现你其实是重新学习了另一门语言,与java完全不相干。再然后java的效率虽然高 ,但这效率是建立在少用户,高级服务器的基础之上的。对于海量的并发访问,Java随时可能 崩溃。Java的跨操作系统宣言,现在就是一个笑话,现在新出现的语言,哪个不是跨操作系统的。。。
C#
微软发明C#的目的就是跟java竞争,它里面太多模仿Java的地方。当然缺点比java还多,最大的缺点就是不跨平台。
PHP
国内使用PHP的程序员非常多。因为它上手容易,开发方便,速度也快。在各项技术指标中,它均属于中上,但是php本身也是经常被诟病,说他不好管理,做大型项目,复杂系统的话管理成本非常高。也许有人会拿全世界最大的社交网站facebook就是使用PHP写的这种证据来表明PHP的强大和流行,但是,要知道Facebook对PHP的速度也是非常不满的,当然他们有足够的技术人才,自己写了一个优化php速度的引擎工具。不可否认php是一门非常适合大众的语言。
ROR
ROR刚出现的时候再业界引起了一场革命,它新颖的开发理念直接催生了敏捷开发的概念,每个人都在讨论怎样最快的做出让客户满意的程序,于是java,php等也都诞生了响应的敏捷开发的框架技术,虽然更多是从ROR借鉴过来,但不可否认非常有效,于是大家又站在了同一起 跑线上,但是Ruby却渐渐落后了,它编译速度以及重新学习一门语言的门槛让开发者们在语言选项中排序中放到了后面。
Python
Python是一门非常优美的语言,固定的缩进格式进行编程让代码非常的漂亮,google也力推它,国内也有不少网站的后台使用它,比如豆瓣。但是一个漂亮的花瓶放在那其实只能远观不能亵玩,虽然Python也能做不少事情,但并不是特别突出,没有独特的优势。
其它语言本人就没有研究,在此就不多说了。
NodeJs使用javascript语言,基本上不需要开发者付出更多的心血去研究语法,只需了解下它的api即可。容易上手的同时,独特的事件驱动编程更是让程序更加清晰,低耦合,高聚合在此可以轻而易举的做到。
当然NodeJS最大的噱头可不是javascript或者事件驱动编程,而是它的高效率,快速度,支持并发量大。为什么会这样,这是由它独特的机制决定的。
我们先看看apache是怎样处理的吧,客户端发链接请求--apache分配线程、内存--执行--返回
这里分配线程和内存都是定额的,每来一个链接就分配这么多。假如电脑的可用内存为2G,每
一个链接需要2M的内存,每个线程执行时间需要cpu时间10m,那么这一秒内apache最多只能为
min(1s/10ms,2G/2M)=100个链接提供服务,但是每个线程占用cpu时其实是有长有短不一而论
的,这个时候如果一个很简单请求访问因为一直竞争不到cpu资源而导致响应速度变的很慢。
再说NodeJS的机制,它采用单线程模式,链接请求都被同一个线程接受,它会根据实际情况给
当前请求分配线程执行。虽然在总体上来说响应的速度没太大变化。但如果对请求资源小的连接来说那就是福音了,因为它会优先执行,要知道当下流行的技术是ajax等RIA技术,他们要求服务器响应足够快,而且返回的数据非常精简,而Apache则不管什么请求都要经过层层过滤,在速度上当然要慢。
说到这里似乎偏离了我的初衷,我只是想做一个基于web的在线聊天室程序而已,不过现在看来nodejs是非常合适的技术。
但是。ror的前车之鉴告诉我们nodejs的模式也随时可能被其它语言模仿,比如各种使用java编写的web服务器程序,很可能就会抄袭这种模式。但是nodejs也有自己的优点:首先它跟浏览器端的javascript一脉相承,在数据通信有先天优势举例来说json数据在前后端是通用的,而java,php语言必须使用一个技术做转换才行。其次,虽然没有具体的统计,但是世界上不会javascript的恐怕没几个!
上一篇:服务器与浏览器端技术回顾-1
文章来源 http://www.hml520.com/archives/137
分享到:
相关推荐
### 基于WebRTC的浏览器端Web服务器的设计与实现 #### 摘要与关键词解读 本研究探讨了如何利用WebRTC技术构建一个新型的Web服务器架构,旨在解决传统Web服务器的一些固有问题,比如资源分配不均、安全性较低、成本...
Applet是在客户端浏览器中运行,常用于创建富客户端应用,而Servlet则在服务器端工作,处理来自客户端的请求。 **Servlet生命周期** Servlet的生命周期包括三个阶段:加载、初始化和销毁。Servlet在第一次被请求时...
- **云计算技术**:利用云端服务器存储和处理大量数据,减轻终端设备的压力。 - **大数据分析**:通过对用户行为数据的收集和分析,优化资源推荐算法,提升用户体验。 - **社交网络功能**:集成即时通讯、论坛讨论等...
2. **编写Java Applet代码**:使用Java语言编写applet,包括绘图、响应用户输入、与服务器通信等功能。 3. **创建HTML页面**:学习如何在HTML页面中嵌入Java applet,设置必要的参数,如`<applet>`标签的`code`、`...
本篇将详细介绍如何针对Windows Mobile 设备进行服务器端程序开发,包括技术背景、支持的设备类型、开发框架以及具体的技术细节等。 #### 移动Web vs 智能客户端 在开始讨论Windows Mobile 的服务器端程序开发之前...
通过回顾浏览器的历史和发展过程,我们可以更好地理解为什么AJAX技术的出现具有重要意义。此外,通过对比静态Web页面和动态Web页面的区别,以及引入CGI技术作为过渡阶段,我们进一步理解了AJAX技术的必要性和优势...
本课就将围绕与浏览器互通、级联、可扩展等6大痛点手把手带你学习大负载、高并发、高性能 WebRTC 流媒体服务器的设计与开发,揭秘万人互动直播背后的深层奥秘,打造可负载百万用户量的企业级的流媒体服务器。...
在IT领域,VC++ 6.0是一款经典的微软编译器,主要用于开发Windows平台...尽管现代浏览器开发通常采用更先进的技术和框架,但通过回顾过去,我们可以更好地理解技术的发展历程,以及基础技术在现代软件工程中的重要性。
- **Web浏览器简史**:回顾了Web浏览器的发展历程。 - **浏览器工作原理**:深入解析了浏览器内部的工作机制。 - **主流浏览器**:对比了几种流行的Web浏览器的特点。 - **浏览器速度**:讨论了影响浏览器加载速度的...
在【Web GIS 技术回顾】部分,提到了WebGIS的两大部分:客户端(Client-side)和服务器端(Server-side)。客户端主要通过HTML或Java在浏览器中呈现,而服务器端则集中处理图形服务器管理,如地图服务、数据处理和...
本实验旨在通过实际操作,帮助学生掌握FTP服务器的基本概念和搭建流程,同时理解虚拟机环境下的操作系统安装与管理。 **实验目标:** 1. **了解虚拟机安装**:学习如何在虚拟环境中安装操作系统。 2. **理解FTP...
在JavaScript中,读取服务器端的XML文件通常涉及到AJAX(Asynchronous JavaScript and XML)技术,尤其是现代浏览器中广泛使用的XMLHttpRequest对象或其更高级的版本——fetch API。在本例中,我们将探讨如何使用...
服务器维护管理是IT基础设施的关键环节,它涉及到系统的稳定运行、数据的安全保护以及业务流程的顺畅。以下是对"服务器维护管理计划...此外,定期回顾和调整维护计划也是必要的,以适应不断变化的技术环境和安全威胁。
用户通过Web浏览器提交表单,服务器端脚本解析表单数据,执行SQL语句与数据库交互,然后返回结果显示在浏览器上。这种模式简化了用户与数据库的交互,提高了数据的可用性和可访问性。 1.3 几种常用Web数据库的特点 ...
1. **网络编程**:使用JAVA的`java.net`包中的`URL`和`URLConnection`类来建立与Web服务器的连接,获取网页内容。这涉及到HTTP协议的理解,以及如何发送GET请求来请求网页资源。 2. **IO流处理**:获取到网页内容后...
本篇教程不仅回顾了浏览器的发展历程,还详细介绍了Web应用如何从静态页面发展到使用CGI技术实现动态内容展示的过程。进一步地,引出了AJAX这一关键技术的概念及其在现代Web开发中的重要作用。通过了解AJAX的工作...
总的来说,这个项目展示了如何利用ActiveX控件实现在浏览器环境下与服务器的直接交互,尤其是数据上传这一常见需求。虽然ActiveX技术在当前的Web开发中并不主流,但对于理解早期的Web交互和学习历史技术仍有价值。...
以上内容概述了51testing软件测试web开发课程的前两天教学内容,包括了互联网基础知识、浏览器内核、服务器端技术、HTML与PHP编程基础等关键知识点。这些内容为后续深入学习自动化测试工具如Selenium奠定了坚实的...
### Django之提交表单与前后端交互的方法 #### 一、引言 在现代Web开发中,前后端交互是至关重要的环节之一。特别是在基于Python的Web框架Django中,掌握如何实现前端表单数据的提交及后端处理,对于开发者来说至关...