`
040814119
  • 浏览: 12343 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

服务器与浏览器端技术回顾-2

阅读更多

 

各种浏览器富客户端技术的大战正如火如荼的时候,最新标准的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

0
0
分享到:
评论

相关推荐

    百万级高并发WebRTC流媒体服务器设计与开发课程

    本课就将围绕与浏览器互通、级联、可扩展等6大痛点手把手带你学习大负载、高并发、高性能 WebRTC 流媒体服务器的设计与开发,揭秘万人互动直播背后的深层奥秘,打造可负载百万用户量的企业级的流媒体服务器。...

    Java项目源码之聊天系统的实现(java+applet).zip

    Servlet:使用Java Servlet技术实现服务器端的业务逻辑和数据处理,接收和响应客户端的请求。 WebSocket:采用WebSocket技术实现客户端与服务器之间的实时双向通信,支持消息的实时推送。 数据库:选择适当的数据库...

    JAVA web复习笔记.docx

    2.B/S:浏览器/服务器 2.资源分类 1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析 *如: html,css,JavaScript 2.动态资源:每个用户访问相同资源后,得到的结果...

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台

    由于富客户端技术进一步扩展浏览器功能,使之提供更加高效和友好的用户接口,越来越多的企业和开发人员选择使用富客户端技术构建商业应用,本课程主要是介绍了解最流行的富客户端框架jquery - easyUI API及熟悉掌握其...

    windowsnt 技术内幕

    回顾微软Windows NT域 回顾Windows NT域委托关系 回顾Windows NT目录服务 创建一个高效的Windows NT目录服务结构 决定所需的域控制器的数量 理解在地理上怎样安排域控制器 理解域控制器的大小和速度 计算所需的主域...

    网络组建域管理课件2

    早期的Internet的计算结构是以Web技术为核心的浏览器/Web服务器体系结构 Web服务的最大特色在于为用户提供良好的信息查询界面。Web服务把各种形式的信息,如文本、图像、声音和视频等无缝隙地集成在—起,用户只...

    retro-board:回顾板

    ,与基于ARM的服务器自动兼容 ,用于我们的付款解决方案 低于v1.0.1的早期版本具有以下库: for JS和JSX 如何尝试 :rocket: 您必须在系统上安装docker和docker-compose 。 克隆此存储库 然后运行docker-compose...

    HTML-CSS回顾

    我们将使用它来对浏览器(即客户端)和服务器进行编程。 无论您使用哪种编程语言,每个开发人员每天都会使用两种工具:命令行和版本控制。 命令行允许开发人员快速有效地与其操作系统和软件进行交互。 首先,我们...

    SU20增强脚本

    客户端与服务器端编程 HTML和代码结构 Github存储库简介 课堂练习/挑战: 设置班级工作区 客户端练习-Mad Libs 词汇:Web浏览器,Web服务器,URL,解析,协议,服务器,客户端,路径,Internet服务提供商(ISP),...

    Java开发技术大全 电子版

    1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释执行命令的使用10 1.2.5UltraEdit的使用11 1.3一个简单的Java应用程序14 1.4一...

    RESTful Web Services 中文版.rar

    第2章:编写Web服务客户端.................23 Web服务就像网站..........................23 del.icio.us:示例应用....................26 用HTTP库发送请求.........................29 用XML解析器处理响应....

    XML高级编程pdf

    16.11.2 服务器端 16.12 经验教训 16.12.1 违反的开发原则 16.12.2 组件 16.12.3 重用的可能性 16.13 小结 第17章 实例研究3—图书目录信息服务 17.1 图书目录信息服务 17.1.1 系统概述 17.1.2 创建BCIS ...

    XML高级编程 (Extensible Markup Language)

    16.11.2 服务器端 16.12 经验教训 16.12.1 违反的开发原则 16.12.2 组件 16.12.3 重用的可能性 16.13 小结 第17章 实例研究3—图书目录信息服务 17.1 图书目录信息服务 17.1.1 系统概述 17.1.2 创建BCIS ...

    XML 高级编程(高清版)

    16.11.2 服务器端 16.12 经验教训 16.12.1 违反的开发原则 16.12.2 组件 16.12.3 重用的可能性 16.13 小结 第17章 实例研究3—图书目录信息服务 17.1 图书目录信息服务 17.1.1 系统概述 17.1.2 创建BCIS ...

    yolo-tyrion:班级节点操作的课堂回顾

    设置分叉并克隆此存储库,然后cd到您将其克隆到的目录中npm install 如果您不想杀死并重新启动服务器,请使用npm install -g nodemon并使用nodemon server.js运行该练习目标为汽车实现CRUD接口。 此练习不需要样式...

    火柴人java源码-wx_house-front:房产中介系统-微信端

    3:背景回顾、贡献者、许可与更新日记 更多请访问。 1-1、安装 请从release分支拉取发布版本的代码 推荐部署于Linux服务器 建议PHP >= 5.3.3 将代码下载解压到服务器后,打开浏览器,访问安装向导(推荐使用nginx,...

    wind-down:回顾你的一天,为明天做准备,平息混乱

    回顾你的一天,为明天做准备,平息混乱 要使用该应用程序: 运行“捆绑安装”以加载关联的gem文件 运行“ rake db:migrate”以使用ActiveRecord迁移数据库文件 运行“ shotgun”以启动本地网络服务器 在浏览器中...

    XML高级编程

    5.2.2 客户端和服务器端 121 5.2.3 DOM在出版过程中的应用 122 5.3 使用DOM和XML的应用实例 125 5.3.1 简单的客户端实例 125 5.3.2 更复杂的编程实例 133 5.4 DOM和XML的未来 143 5.4.1 W3C的工作 143 5.4.2 应用 ...

    linux programming instances网络编程教程 附源代码

    为了适应不同读者的需要,本书从最基本的Linux系统操作到网络技术的基本理念,逐步深入至Linux/UNIX下具体的编程实践,结合大量具体实例和编程经验,为读者展现Linux平台下网络编程的魅力。 全书由13章组成,内容...

    ES6+ 开发电商网站的账号体系 JS SDK

    本章主要讲解登录模块中的事件绑定/表单验证/向服务器请求数据/前端数据Mock等内容,结合项目讲解ES6+中的async和await, Array.from, Promise 等API,以及新版浏览器的fetch API。并且对async和await,Promise, ...

Global site tag (gtag.js) - Google Analytics