自从20世纪70年代互联网诞生以来,以WWW技术为支撑的万维网近十多年来迅猛发展,渗透到社会生活的各个方面。从圣弗朗西斯科郊外的硅谷,到新竹日夜通明的半导体工厂,它是如此深刻地改变着我们工作和生活的方式。

全世界有3/4的人还从未接触过互联网,这也预示着我们这些已经从事互联网工作,和即将从事互联网工作的设计者、开发者都将有一个美好的明天。 

用户参与和从业于万维网相关软件的开发和设计工作,首先必须掌握万维网的基本常识,这是万维网的基本知识结构,也是学习互联网相关知识的基石,我将这称为《万维网应用程序开发纲要》。并且,这也不单单是一个知识结构的问题,其实任何的技术知识都是随着技术本身的发展慢慢积累起来的,是技术不断变化、不断延伸的结果,所以知识结构往往也是一个怎样正确认识技术发展史的问题。下面我们就来简要介绍一下万维网的技术简史和万维网的基本知识结构。




此之外别无其它

每个开发者都必须将知识建立在两个最基本的基石之上,除此之外别无其它。每一本图书和教材都应该帮你做到,这也正是你从业互联网的最坚实的技术基础。



WWW也就是我们经常提到的万维网,它是Internet上那些支持WWW和超文本传输协议(HTTP)的客户机与服务器的集合,透过它可以存取世界各地的超文本文件,内容包括文字、图形、声音、动画、资料库、以及各式各样的软件等。

HTML是万维网所基于的标准的格式化语言,它自从被发明以来就构成了整个万维网设计和开发的核心,这也是我们每个从业人员都必须熟知于心的、了然于胸的,它是我们从业万维网的基石。

鉴于HTML扮演的重要角色和万维网不断发展的客观要求,我们需要不断改进和细化它的功能——将结构、内容和样式分离已是大势所趋,这也是为何CSS(层叠样式表)出现的原因。



你不得不了解它

它是进行万维网应用程序开发的认识论基石,也是实践的指南针,设想存在一个不遵守该指南的万维网应用程序是不可能的。 




在样式表没有出现之前,HTML用于呈现的功能实际肩负着两种责任:一种是语义的呈现,一种是表现形式的呈现。例如,b元素(英文bold的缩写)既要表现加粗的语义,实际上还要用作呈现的标示——也就是数据的结构。 样式表的出现简化了HTML语言并且减轻了HTML对表现形式的责任,它使设计者和用户都可以控制文档的表现形式,包括字体信息、对齐方式、颜色等。

HTML和CSS一道构成了万维网应用的客户端基石,它们又被称为万维网应用程序的展示层。



它们有一个响亮的名字

展示层利用客户端脚本和插件技术开始分担业务逻辑层的部分运算,它们有一个响亮的名字,被称为“富客户端”。 



夸夸其谈并不可取

所传达给用户的知识要么必须有坚实的事实基础,要么是由严谨的逻辑推导而出,而这样的逻辑也应被所有读者轻松的理解。





万维网在不断的前进,人们对于新功能的渴望也在不断地增强,而这些新功能应当,而且理所应当能够针对不同用户的需求做出不同的响应,这也就是为什么动态网页技术层出不穷的原因。

在这个目标的驱使下,微软创造了ASP技术,进而又创造了ASP.NET;SUN创造了Servlet,进而又创造了JSP;Adobe创造了ColdFusion;而万维网的技术社区会聚着不计其数的开发者,他们中的杰出者创造了PHP并使之成为流行的动态网页开发技术。

这些动态网页技术可以针对用户的不同请求做出不同的响应,「请求/响应」正是万维网应用程序的基本模式(不管是静态网页还是动态网页),不同的动态网页开发技术有不同的应对于「请求/响应」的语言特点,但它们也都有共同的实现特点,那就是针对请求生成不同的HTML网页,并把它传递到用户的客户端软件中,正如你经常用到的那样,这个客户端软件被称为「浏览器」。

由于动态网页总是位于服务器上,而它生成的HTML网页又总是被浏览器浏览,所以这个开发经常被描述成B/S,也就是Browser(浏览器)和Server(服务器)的缩写。

所有的基于WWW技术的动态网页技术都会生成HTML网页(网页中也许会包含样式表,也有可能仅仅是裸数据而不包含HTML标签),这也是为何你会看到不同的动态网页技术却可以创建同样呈现结果的根本原因。

同样,在客户端浏览器中你也看不到动态网页的源代码,因为这些源代码在服务器上就已经被解释、执行,最后被转化成HTML格式的代码并被传递到客户端。这些网页之所以被称为动态网页,也正是因为它们能够根据不同的请求生成不同的HTML网页,这个作为结果的HTML网页是「动态」产生的。

这些动态网页技术和支持它们的底层技术一道也被称为中间件,它们构成了网络应用的中间层,由于这个中间层包含了用于分析用户不同请求,并对不同请求做出不同响应的业务逻辑代码,因此,这个层又被称为业务逻辑层。

位于业务逻辑层之下的是数据服务层,用户请求所要获取的数据从这里被「筛选」出来,并经过业务逻辑层被发送到客户端——它们被包含在HTML文件中。

出于对数据海量存储和便于查询访问的渴望催动着整个数据服务产业的发展,关系数据库(Relational Database)凭借其自身的特点从它被发明那天起就成为整个数据服务产业的核心,Oracle也正是凭借其著名的关系数据库产品Oracle9i成为软件产业中仅次于微软的软件巨擘。IBM DB2、微软SQL Server和开源的MySQL也都是关系数据库产品中的佼佼者。

而微软Office产品组中的Access以其高智能、轻量化和简单易用性的特点在办公自动化软件(OA)领域内广泛应用,它也是很多开发人员学习数据库开发的极佳入门工具。

数据服务层不仅仅是数据库,而且还包含了其它可以用作数据的资源,例如XML。XML已经成为互联网间标准的数据交换格式,它也正在日益成为数据存储的标准格式。 展示层、业务逻辑层、数据服务层构成了当前万维网应用程序的基础架构,它们也被统称为「三层架构」。

实际上你不得不了解它,它是进行万维网应用程序开发的认识论基石,也是实践的指南针,设想存在一个不遵守该指南的万维网应用程序是不可能的,同样,设想任何的不了解该指南而进行的万维网应用程序开发也是近似荒谬的。不管你愿不愿意承认,你永远都无法摆脱它。

在万维网软件开发日益区分为泾渭分明的三层架构后,市场和技术并未停止它们前进的步伐,它们依旧在不断地向前延伸。在技术厂商的推动下,在万维网的技术社区的遥相呼应下,三层架构中的每个层次都为了某些特殊的应用不断向其临近的层次延伸,首当其冲的便是展示层向逻辑层的渗透。

展示层利用客户端脚本和浏览器插件技术开始分担业务逻辑层的部分运算,而且,它们还有一个响亮的名字,被称为「富客户端」。 JavaScript、Flash和Java Applet目前是实现展示层分担业务逻辑层运算的主要软件技术。JavaScript因为AJAX解决方案和DHTML解决方案的结合而「重获」新生,而Flash凭借其分布广泛的Flash Player插件以及高效的开发环境而正日益成为下一代万维网客户端运算的核心。与此形成鲜明对比的是Java Applet技术,因为其开发的难度极高,以及其客户端运行环境自身的原因,从其诞生那天起就从未引人注目过,今天,它依然被搁置在某个角落。

用户应该将JavaScript、Flash技术完全融入到整个万维网开发体系中,理应将它们视为一个整体,而不是再孤立的去看待它们中的任何一个,并且,很显然,也不应该去孤立地看待它们中的任何一个。




《纲要》是开放的,用户对其进行修改和补充都是非常受欢迎的,对《纲要》有任何问题都可以通过张亚飞的BLOG与其交流:

http://cn.zhang-yafei.com/(简体)
http://tw.zhang-yafei.com/(繁体)