首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

狂言WEB服务器开发

2012-06-20 
大话WEB服务器开发本文纯碎处于个人理解不可做科学依据。前因工作这么多年断断续续看过一些有web服务器编程

大话WEB服务器开发

本文纯碎处于个人理解不可做科学依据。

前因

工作这么多年断断续续看过一些有web服务器编程的书,但是一直没有把自己的理解整理起来,今天索性就做个总结,记得第一次接触web网页编程是02年,那时学校里计算机比赛,学校有个哥们用ASP写了一个电子商务的网站,记忆中那会好像电子商务刚刚起步哈,好生羡慕,处于对技术渴求自己去书店买了网站开发的书,埋头苦读有一个月,后来还和同学一起给他叔做了网站,算是练手,很自豪处于程序猿普遍心理,当时心想吊什么哥也能做web,认识web服务器开发是从那时开始的吧,现在回想起来那时真是个菜鸟。

工作中的web

自从04年离校之后直到06年才又一次接触了web开发,那时公司有个日本UPS监控项目,项目中有个设备需要通过网页配置设备的参数,由于是嵌入的设备所以用的是CGI,最早接触web人都知道CGI,要用这个做网站简直是跟自己的体力、耐力较劲,一堆堆HTML脚本嵌入在C代码中,一个配置的功能嵌入的HTML代码就差不多有2万行,后期维护更别说了,可是没办法因为是嵌入的系统,只有这样更高效,而且嵌入设备本身自己的资源有限,所以也只能用CGI,做完这个项目处于对技术的深入了解,买了一些网站开发的书看,记得那会国内做项目用的比较多的是asp.net和JSP,PHP用的人很少基本上没有,现如今已经是2012年再也没有接触过web服务器开发了,但这期间一直关注web服务器开发相关的技术。

我们都是站在巨人的肩上

谈到网页大家都知道是HMTL书写的一个文件,自从93年HTML出现以来,是互联网的发展发生了翻天覆地的变化,说实话HTML至今仍是互联网的根本,多少互联网的公司在这之后起来又倒下,人类的信息在有HTML构建的网中交叉传播,随着互联网的发展人们信息的渴求越来越来大,很多现有的业务已经不能满足人们的需要,而且随着PC的发展、网络硬件环境和社会其他行业的信息化的提高,人们对互联网的需求不仅仅是信息的获取,更多人把相关的业务和数据处理都放到互联网上,HTML由于其特殊性(不需要安装客户端),越来越受到人们亲来,好多公司把业务处理直接放到互联网上提供给客户,在发展的初期技术人员要完成相应的业务,生成指定的页面只能将HTML代码嵌入到自己的代码中,根据不同的业务打印出不同的HTML页面,这个时候的网站开发是最初级阶段,没有所谓的WEB服务器,技术人员要自己处理网络连接、业务逻辑、脚本网页生成、数据访问,这其中的网络连接处理就占用很大的开发时间,相当于每次开发技术人员都要先开发一个高效的网络服务器,而生成HTML网页的代码由于每次的业务逻辑不同,都要重新实现,并且实际的代码和HTML代码穿插在一起也增加了项目的维护难度,CGI就是这么一个东西,估计现在已经没有人用了,随着应用的深入和推广,人们发现好开发人员的好多工作都是重复的劳动,这是有些大一点的公司开始,把这些重复劳动的工作都抽离出来,例如微软推出了iis服务器,96年推出了ASP脚本,这样做得目的就是让技术人员从繁杂的服务器开发和脚本生成中解脱出来,只专注于业务逻辑的开发,这个时间的发展仅仅经过了一年的时间就出现了很多web服务器和服务器端开发脚本,像PHP就是在94年出现的,比较有名的Apache也是在那个时间短出现的,到现在已经出现好多web服务器和服务器端脚本语言,例如Nginx、python、Rube、jsp、lua、lisp和asp.net等等,最值得人们敬畏的是这些都是免费提供给人们使用,今天人们可以站着前人的肩膀上很轻松的开发基于WEB的应用,甚至你都不需要懂任何服务器的技术,只需要学会脚本懂得如何处理用户的需求。

底层的服务器

今天我不需要自己实现一个web服务器了,有许多好用的服务器我们可以直接拿来使用,但对于一个真正geek程序员,我觉的必须懂一点服务器的原理,作为一个web服务器主要解决几个问题(1)平台问题,要支持不同的平台,这就要求服务器在开发过程中内核必须使用标准的POSIX,同时也要可以跨平台版本编译(2)网络连接高并发的问题(3)HTTP协议的解析和处理,这三个问题构成了一个web服务的内核层,所有的web服务器都要解决这三个问题,一个web服务器的性能好坏就取决于这三个问题谁解决的更好,除了这些作为一个web服务器还有支持可扩展性,提供第三方扩展的开发,可以根据不同的需求附加不同的功能库,服务器最好还要支持负载均衡的功能,因为随着访问量的增加,一个服务器很难应付更多的访问请求。

我们的脚本

脚本的第一个问题:

HTTP基于问答的特性决定了脚本的实现,我们知道HTTP协议是问答方式的,就是你请求我给你发回内容,这个是有早起的互联网的特性决定的,也只有这样互联网才能更灵活,HTML的网状结构才能变成一个空间的网状结构,因为大家可以不需要关心相互的状态,只需要一个连接就可以相互传播和访问,但对于具体的应用,单独的一个网站要处理自己的业务,确需要保留场景和业务逻辑的状态,没有办法脚本就必须解决这个问题,帮助网页维护一个状态是任何脚本语言必须解决的问题,大部分脚本语言是通过SESSION和COOKIE来实现的,这几乎成为一种共识,只要开发服务器端脚本都实现这个功能,当然也可以不通过这个来实现状态的持久化,可以通过内存服务器,例如memcache(更高效)等。

脚本的第二个问题:

处理的业务各种各样,可能有些业务脚本现有的功能只能满足部分功能,这就要就脚本语言有很好的可扩展性,用户可以根据自己的需求实现不同的库,通过脚本调用,达到扩展功能的目的。

脚本的第三个问题:

效率是一个脚本受欢迎的关键,这里的效率除了执行效率还有开发效率。

热点排行