2.1. Web的原理和基础技术

发布日期 : 2025-10-12 13:01:49 UTC      

访问量: 647 次浏览

2.1.1. Web的基本原理 #

Web应用遵循客户端/服务器(C/S)的架构模式。其中,客户端被称为Web客户端; 服务器被称为Web服务器。 一个典型的Web应用系统通常是三层体系架构,即数据层、逻辑层和表现层,如图2. 1所示。 很多情况下,Web客户端是Web浏览器。 因此,Web应用架构也被称为浏览器/服务器(B/S)架构。 Web应用的基本工作流程如下:

  • 用户使用Web客户端(往往是Web浏览器), 通过在地址栏上输入网络资源的URL( Uniform Resource Locator;统一资源定位符)地址, 或点击网页上的URL链接,向Web服务器发出请求;

  • Web服务器收到请求后,搜索服务器上存储的文件或脚本, 并将文件或执行脚本得到的结果返回给Web客户端;

  • Web客户端收到响应结果,并把返回的结果渲染和显示出来。

一个基本Web应用的三层架构

Fig. 2.1 一个基本Web应用的三层架构 #

HTn>、URL和HTML是WWW技术的三大基石。这些协议由Tim Bemers-Lee提出,现在已成为国际标准,由W3C(世界万维网联盟)管理与维护,以下分别对其进行简要介绍。

  1. HTTP

大多数Web应用中涉及两个或多个组成部分,因此需要定制一套各组成部分都应该遵循的规范。 HTIP作为一种协议,则是定义了一套Web服务器与客户端进行请求和应答时所应遵守的规范。 例如,HTTP 请求和应答信息都包含消息头和消息体,根据 HTTP 协议, Web服务器知道把哪些信息放在消息头中、哪些放在消息体中, Web客户端也知道应当到消息头中和消息体中读取哪些信息。

HTTP 共定义了八种请求方式,分别为 GET POST HEAD PUT DELETE TRACE OPTIONS CONNECT ,其中 GET POST 最为常用。 HTTP 消息头中包含缓存控制信息、内容类型和状态码等。 HTTP 协议的主要特点包括

  • 简单:键入URL或点击链接即可执行。

  • 无记忆状态:服务器对客户端做出响应后,它们之间的连接会被立即撤消, 服务器不会保留客户端相关信息,以减轻服务器的负载。

  • 灵活:可以传输的内容类型丰富,包括参数、图片、PDF、音频和视频等。

HTTP S (Secure Hypertext Transfer Protocol;安全超文本传输协议)是建立在安全套接层之上的安全版 HTTP 。在普通 HTTP 连接中,服务器和客户端间传输的数据可以被拦截; 而 HTTP S通过加密避免数据被窃听,通常用来传输敏感数据,如用户的个人信息、登录密码和信用卡信息。 采用 HTTP S协议的网站需要在服务器上安装认证机构所颁发的证书文件。

  1. URL

URL是描述Internet上网页和其他资源地址的一种标识方法。简单来讲,

URL就是Web地址,俗称“网址”。每个网页都有一个全球唯一的URL标识。 就像现实生活中街道地址用来定位家庭住址一样,网址是用来定位万维网上成千上亿的网页的。 没有URL, Web客户端就无法找到Web服务器上的资源; 没有URL,互联网上的资源也不能相互连接形成万维网。

URL的基本格式是

Protocol : //hostname [ : port ] /filepathname ? query—string
  • Protocol (协议):指客户端与服务器间的传输协议, 常用的有 HTTP 、 HTTP S、FTP和MMS等协议;

  • hostname (主机名)或IP地址:是指存放资源的服务器;

  • Port (端口号):省略时系统将使用默认端口。例如, HTTP 默认端口为80; HTTP S默认端口为443;

  • path (文件路径):表示Web服务器上资源存放的目录和文件名 (这些目录和文件名可以是虚拟的,即不是真正的文件路径);

  • query_string (查询字符串):可选,用于向Web服务器发送 HTTP 请求参数。

  1. HTML

HTML是用于创建网页的主要语言,目前大多数网页源代码都使用这种格式。 与Word文档相似,HTML也包含内容、布局和格式等信息。 当Web页面被加载到Web浏览器时,Web浏览器解释HTML代码,按照其中指定的格式显示网页内容。 作为一种标记语言,HTML本质上是一个由一套标签所标识的纯文本文件, 如head、body、table、center和fonts等标签。 此外, HTML的外观和布局信息可由CSS(cascading style sheets;层叠样式表)来定义。 CSS可以直接包含在HTML文件中,或者存放在一个单独的文本文件中被HTML引用。

发展到今天,HTML标准将逐渐更替为HTML5。 HTML5是包括HTML、CSS和JavaScript在内的一套技术组合,它希望能够在不依赖AdobeFlash和Mi¬crosoft Silverlight 等插件的情况下实现丰富的互联网应用。 HTML5添加了许多 新的语法特征,其中包括

2.1.2. 相关技术 #

本节主要介绍在Web服务器和客户端中使用的开发技术, 以及用于服务器和客户端之间通信的数据交换格式(图2. 2)。

Web应用开发可以选择用多种技术来实现

Fig. 2.2 Web应用开发可以选择用多种技术来实现 #

(1)服务器端技术

服务器端技术主要包括Web应用服务器和运行于服务器端的程序开发语言。

Web应用服务器:Web服务器专门用于接收 HTTP 请求,对请求进行相应处理,最后返回 HTTP 响应到客户端。 它既可以返回一个静态页面或图片作为响应,也可以动态运行相应程序, 如Java Servlet、 ASP. NET 等,执行Web开发人员所设计的业务逻辑。 较为常用的Web应用服务器主要包括以下几种。

  • Apache Web服务器和Tomcat:它们都属于Apache软件基金会 (Apache SoftwareFoundation)所支持开发的开源Web服务器。 其特点是简单、速度快、性能稳定,可以运行在所有的操作系统平台上, 包括Unix、Windows和Linux等,是目前应用最为广泛的Web服务器软件(Netcraft, 2009)。其中, Apache主要支持Java系列的应用程序。

  • IIS(Intemet Information Server) :IIS 是微软公司开发、 用于 Windows操作系统的Web服务器, 是目前Web应用中第二大流行的Web服务器(Netcraft, 2009)。 IIS主要支持.NET系列技术,通过适当扩展,也可以支持其他多种语言。

  • 其他Web服务器产品:包括Oracle/Sun公司的GlassFish和IBM公司的 WebSphere等。

服务器端开发语言:主要用于编写运行在Web服务器中的服务器端程序。

  • Java 系列语言:包括 JavaEE( Java Enterprise Edition)、 JavaSE( JavaStandard Edition)、Servlet、JSP 和 JSF(JavaServer Faces)等。 Java 与 C+ +语言有很 多相似之处,但抛弃了 C++中过于复杂、 使用不当能产生较严重副作用的许多功能,比C++更简单和安全。 因此,Java创始人James Gosling( 1996)曾开玩笑说: “ Java是没有枪支、刀具和倶乐部的C ++ ”。利用Java开发的应用程序, 可以运行在Apache、Tomcat、GlassFish和WebSphere等Web应用服务器中。

  • .NET 系列语言:包括 ASP.NET 、C#和 VB.NET 等。它们是微软 .NET 框架的重要组成部分。 .NET 框架是建立、部署和运行Web服务及Web应用程序的通用环境, 包括服务器端和浏览器端的编程技术。

  1. 客户端/浏览器端技术

Web客户端技术主要包括浏览器和运行于其中的多种应用程序,以及在浏览器外运行的桌面和移动应用程序。 前者主要包括Web浏览器、JavaScript、 Flex和 Silverlight, 后者包括 C ++、Java、 .NET 、Flex(通过 Adobe Air 可以作为桌面程序运行, 运行于浏览器之外)和Silverlight(也可以作为桌面程序运行,不依赖于浏览器)。

Web浏览器:Web浏览器是一种获取或显示Web服务器上的HTML和其他程序结果,并让用户与这些文件互动的一种软件。对于大多数用户来说,Web浏览器代表万维网的“门面”。 从技术上讲,Web浏览器是遵守 HTTP 、HTML和JavaScript规范的客户端, 它知道如何与Web服务器通信、如何显示HTML页面、如何解释和执行JavaScript脚本。 常用的Web浏览器包括微软公司的Internet Explorer、谷歌公司的 Chrome、Mozilla 公司的 Firefox、Apple公司的Safari。 这些浏览器在对HTML和JavaScript规范的支持上存在着细微差别, 有时会造成同一个Web网页在不同浏览器中显示时有所不同。

浏览器端编程技术:主要包括JavaScript、Flex和Silverlight等。

  • JavaScript: JavaScript是Netscape公司在1995年提出的一种运行在浏览器内的脚本语言。 目前互联网上大部分网页中都使用了它,可谓是世界上使用最多的浏览器语言之一。 JavaScript基本语法类似于Java,简单易学,非专业程序员也可以方便地使用。 它与操作系统平台无关,运行于浏览器之中。在个别情况下, 因为不同Web浏览器在对JavaScript规范的支持上存在细微差别, 同一个JavaScript程序在不同的浏览器中会有不同的运行效果, 给那些需要支持多种浏览器的应用开发带来麻烦。

  • AJAX (Asynchronous JavaScript and XML;异步 JavaScript 与 XML): AJAX 不是 什么新技术,而是对现有的Web开发技术,包括JavaScript和XML的组合。 它于2005年开始流行,用于在浏览器端创建更好、更快、交互性更强的Web应用程序。 AJAX支持浏览器与服务器间的异步通信模式,即网页可以在后台从服务器上读取数据, 而不影响用户与当前页面的交互,大大提高了用户体验。从软件工程的角度来看, AJAX的主要优点在于方便了将数据和界面相分离,是一种好的软件设计模式。 AJAX也可以运行于智能手机和平板电 脑的浏览器之中,可以跨桌面浏览器和移动浏览器。

  • Adobe flex: Adobe Flex可以用于开发高度交互的、具有表现力、跨Web浏览器的Web应用, 是富互联网应用(RIA,见第2.4. 2节)开发的有力工具。Flex使用MXML来编写用户界面, 用ActicmScript这种强类型的、面向对象的编程语言来实现客户端的逻辑。 基于Adobe Flash Player插件,Flex应用程序可运行在多种Web浏览器, 主要是桌面Web浏览器之中;基于AdobeAIR运行环境,Flex应用程序可不依赖浏览器, 而是直接运行在多种操作 系统如 Windows、Linux 和 Android 之上。

  • Microsoft Silverlight: Microsoft Silverlight 与 Flex的目标类似, 都具有很好的图形和动画表现能力,都能提供很好的用户体验,都是为了支持富互联网应用开发的。 Silvedight基于微软的 .NET 框架,使用XAML编写用户界面, 使用 .NET 语言如C#或 VB.NET 实现业务逻辑。利用Microsoft Silverlight插件, Silverlight程序可运行在主流浏览器,主要是桌面Web浏览器之中; 利用WPF( Windows Presentation Foundation)运行环境, Silverlight 程序可运行在浏览器之外, 即直接运行在操作系统如Windows和Windows Phone 之上。

  1. 服务器和客户端的信息交换格式

Web客户端经常把参数放在URL中传递到服务器端,服务器端则常把结果以HTML的格式返回给浏览器。 此外,服务器和客户端还常使用如下格式进行数据交换。

  • 可扩展标记语言(Extensible Markup Language,XML): XML是一种允许用户自定义标签和属性的标记语言。它具有很多优点, 其标签和属性经常具有易于理解的名字;属于一种纯文本文件,具有广泛的支持性和平台独立性; 具有良好的结构,可以被计算机自动解析(即从XML中读取某个节点的值或属性)。 这些优点使XML成为万维网上广泛使用的数据交换格式。但相对来讲,XML也存在明显缺点, 它重复使用标签来分隔数据,比较繁复, 导致文件较大、解析效率较低,不利于在JavaScript中使用。

  • JavaScript 对象表示法(JavaScript Object Notation,JSON) : JSON是一种轻量 级的数据交换格式,是 ECM A (European Computer Manufacturers Associa¬tion; 欧洲计算机制造商协会)所制定的脚本编程语言 JavaScript 标准的一部分。 JS0N比XML更加轻巧,同时,JS0N是JavaScript原生数据类型, 在JavaScript中处理JS0N数据不需要任何特殊的API或工具包,效率非常高。 当前,在Web应用开发中,JS0N在很多情况下正逐渐代替XML, 如 ArcGIS Server的REST接口就支持JSON格式(见第3章)。 下例是对XML和JSON描述同样内容(即两个学生的姓名和爱好)时进行的比较:

XML格式:


< students >

 John < /hame >
 Basket Ball < /hobby >


 Lisa < /hame >
Movie < /hobby >


JSON格式:

\| "students":[
\| "name" : "John", "hobby" : "Basket Ball" \| , j"name":"Lisa",
"hobby":"Movie"\|
  • AMF (Action Message Format) :AMF 是 Adobe 公司开发的, 主要用于 FlexWeb客户端与服务器间交换信息的二进制数据格式。 作为Flex的原生数据类型,Flex处理起AMF来比处理JSON更加快捷。另外,与XML相比, AMF的数据量小很多,传输和解析起来效率更高。ArcGIS Server的REST接口已经开始支持AMF格式。

《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。