购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第2章
WebGIS基础技术

本章主要介绍WebGIS基础技术,包括计算机网络基础,TCP/IP协议,HTTP、HTTPS、WebSocket协议,WebGIS架构,Web服务器,以及Web实现方式,并对Ajax、HTML、CSS、JS、JSON、XML进行了简要介绍。

2.1 计算机网络基础

2.1.1 计算机网络概述

计算机网络也称计算机通信网,通常的定义是:一些相互连接、以共享资源为目的、自治的计算机集合。从逻辑功能上看,计算机网络是以传输信息为目的,用通信线路将多台计算机连接起来的计算机系统的集合;从用户角度看,计算机网络是一个能自动管理的网络操作系统,由它调用完成用户所需资源。比较通用的定义是:计算机网络是利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传输的系统。从整体上来说,计算机网络就是把分布在不同区域的计算机与专门的外部设备通过通信线路连接成一个规模大、功能强的系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。

为了使不同厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了开放系统互联(OSI)参考模型(见图2.1),即著名的OSI/RM模型。OSI参考模型将计算机网络体系结构划分为七层,自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。其中第四层完成数据传输服务,上面三层面向用户。

(1)物理层(Physical Layer)。物理层为上层提供了一个传输数据的可靠传输介质,确保原始数据可在各种传输介质上传输。物理层有两个重要设备,即中继器和集线器。

(2)数据链路层(Data Link Layer)。数据链路层在物理层的基础上向网络层提供服务,将源自网络层的数据可靠地传输到相邻节点的网络层。为达到这一目的,数据链路必须解决一系列相应的问题:如何将数据组合成数据块,在数据链路层中称这种数据块为帧,帧是数据链路层的传输单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率,使发送方与接收方相匹配,以及如何在两个网络实体之间建立、维持和释放数据链路,使数据链路层在不可靠的传输介质上提供可靠的传输服务。数据链路层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

图2.1 OSI参考模型及通信示意图

有关数据链路层的重点知识包括:

① 数据链路层为网络层提供可靠的数据传输。

② 基本数据单位为帧。

③ 主要的协议包括以太网协议。

④ 两个重要设备:网桥和交换机。

(3)网络层(Network Layer)。网络层实现了两个端系统之间的数据透明传输,具体功能包括寻址,路由选择,连接的建立、保持和终止等。网络层提供的服务使传输层不需要了解网络中的数据传输技术和数据交换技术。

网络层中涉及众多的协议,其中包括TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传输服务。IP协议的主要功能包括无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用、实现其功能的还有地址解析协议(Address Resolution Protocol, ARP)、逆地址解析协议(Reverse Address Resolution Protocol, RARP)、互联网控制报文协议(Internet Control Message Protocol, ICMP)、互联网组管理协议(Internet Group Management Protocol, IGMP)。有关网络层的重点知识包括:

① 网络层负责子网间数据报的路由选择。此外,网络层还可以实现拥塞控制、网际互联等功能。

② 基本数据单位为数据报。

③ 主要的协议包括IP、ICMP、ARP、RARP。

④ 重要的设备:路由器。

(4)传输层(Transport Layer)。传输层是第一个端到端的层次,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。

传输层的任务是根据通信子网的特性,最佳地利用网络资源,为两个端系统的会话层提供建立、维护和取消传输连接的服务,负责端到端的数据传输。在传输层中,数据传输的协议数据单元称为数据段或数据报。

网络层负责根据网络地址将源节点发送的数据传输到目的节点,传输层负责将数据传输到相应的端口。

有关网络层的重点知识包括:

① 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输,以及端到端的差错控制和流量控制问题。

② 主要的协议包括TCP、UDP。

③ 重要的设备:网关。

(5)会话层(Session Layer)。会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层可以通过在数据中插入校验点来实现数据的同步。

(6)表示层(Presentation Layer)。表示层对上层数据或信息进行变换,以保证一个主机的应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据加密、压缩、格式转换等。

(7)应用层(Application Layer)。为操作系统或网络应用程序提供访问Web服务的接口。

会话层、表示层和应用层的重点知识包括:

数据传输的基本单位为数据报。

主要的协议包括FTP、Telnet、DNS、SMTP、POP3、HTTP。

2.1.2 计算机网络的分类

按照不同的分类标准,计算机网络可分为多种类型。

(1)按是否涉密可分为涉密网和非涉密网。按照一定的应用目标和规则存储、处理、传输国家机密信息的系统或者网络称为涉密信息系统或者涉密网;不允许存储、处理、传输国家机密信息的系统或者网络统称为非涉密信息系统或者非涉密网。

(2)按覆盖区域的不同可分为广域网(WAN)、城域网(MAN)和局域网(LAN)。广域网、城域网和局域网有许多不同的分类方法,主要取决于网络覆盖范围的大小。一般而言,单位网络或覆盖区域小于10km的网络称为局域网,通常采用有线方式连接,局域网结构简单、布线容易。覆盖范围局限在一座城市内或者覆盖范围在10~100km的网络称为城域网;覆盖一省、数省、全国、跨国界、跨洲界,甚至全球范围的网络统称为广域网,广域网的传输速率较低,结构较复杂。但随着广域网技术的发展,广域网的传输速率正在不断提高,目前通过光纤介质,传输速率可达到兆比特每秒,甚至更高。

(3)按应用目标的不同可分为内部网和外部网。与公共网络物理隔离、独立封闭运行的、用于党政机关、企事业单位内部事务信息存储、处理、传输的网络称为内部网或者专网;以协议的方式接入公共网络,用于信息传播、Web服务、资源共享、商务活动等的网络称为外部网。

就党政机关而言,用于存储、处理、传输涉及国家机密政务信息的网络称为电子政务内网;用于对外信息公开、舆论宣传、政务服务、公民参政议政的网络称为电子政务外网。

(4)按传输介质的不同可分为有线网、无线网、光纤网、卫星网。常用的网络连接介质有双绞线、光纤、Wi-Fi和卫星,如图2.2 所示。随着通信技术、信息技术和网络技术的发展,不同网络正在快速融合,特别是电信网、电视网和互联网,三网融合后,有线传输介质和无线传输介质在网络中被广泛交互使用,已经很难用有线网还是无线网来定义一个网络了。

(5)按交换方式的不同可分为线路交换网络、报文交换网络和分组交换网络。线路交换网络最早出现在电话系统中,早期的计算机网络就是采用该方式来传输数据的,数字信号转换为模拟信号后才能在线路上传输。

图2.2 双绞线、光纤、Wi-Fi和卫星

报文交换网络是一种数字化网络。当通信开始时,源节点发出的报文被存储在交换器中,交换器根据报文的目的地址选择合适的路径发送报文,这种方式称为存储-转发方式。

分组交换网络也采用报文传输,但它不是以不定长的报文作为传输基本单位的,而是将一个长报文划分为许多定长的报文分组,以分组作为传输基本单位。这不仅简化了对计算机存储器的管理,也加速了信息在网络中的传输速率。由于分组交换优于线路交换和报文交换,具有许多优点,因此已成为计算机网络的主流。

(6)按拓扑结构的不同可分为星状网络、树状网络、总线状网络、环状网络和网状网络。在星状拓扑结构(见图2.3)中,网络的各节点通过点到点的方式连接到一个中央节点(又称为中央转接站,一般是集线器或交换机),由中央节点向目的节点传输信息,在星状网中,任何两个节点要进行通信都必须经过中央节点。

环状拓扑结构(见图2.4)是一个像环一样的闭合链路,它由许多中继器和通过中继器连接到链路上的节点连接而成。在环状网络中,所有的通信共享一条物理通道,该通道连接了网络中所有的节点。

图2.3 星状拓扑结构

图2.4 环状拓扑结构

总线状拓扑结构(见图2.5)是指将网络中的各个节点用一根总线(如同轴电缆)挂接起来,实现计算机网络的功能。使用总线状拓扑需要确保端用户使用传输介质发送数据时不能出现冲突。

图2.5 总线状拓扑结构

树状拓扑结构(见图2.6)是从总线状拓扑结构演变而来的,该结构的形状像一棵倒置的树,顶端是树根,树根以下带分支,每个分支还可再带子分支,一般一个分支和节点的故障不会影响另一分支和节点的工作,任何一个节点发送的信息都可以传遍整个网络。树状拓扑结构具有较强的可折叠性,非常适用于构建网络主干,还能够有效地保护布线投资。

网状拓扑结构(见图2.7)是指各节点通过传输介质连接起来,并且每一个节点至少与其他两个节点相连。

图2.6 树状拓扑结构

图2.7 网状拓扑结构

2.1.3 基本的网络互联设备

为了在更大范围内实现相互通信和资源共享,网络互联成为一种信息快速传输的最好方式。网络在互联时,必须解决如下问题:在物理上如何把两种网络连接起来、一种网络如何与另一种网络实现互访与通信、如何解决两个网络之间的协议差别、如何处理传输速率与带宽的差别等。为了解决这些问题,就需要具有协调转换机制的部件,如中继器、网桥、路由器、接入设备和网关等。基本的网络互联设备如表2.1所示。

表2.1 基本的网络互联设备

1.中继器(Repeater)

中继器(见图2.8)是最简单的网络互联设备,主要完成物理层的功能,负责在两个节点的物理层上按位传输信息,完成信号的复制、调整和放大等功能,以此来增加传输距离。中继器可以理解为简单的信号放大器,信号在传输的过程中会衰减,中继器的作用就是将信号放大,使信号能传输更远的距离。

2.集线器(Hub)

集线器(见图2.9)是中继器的一种形式。集线器能够提供多端口服务,也称为多端口中继器。集线器工作在OSI参考模型中的物理层,把每个输入端口的信号放大后再转发出去。集线器可以实现多台计算机之间的互联,因为它有很多的端口,所以每个端口都能连一台计算机。

图2.8 中继器

图2.9 集线器

3.网桥(Bridge)

网桥(见图2.10)是连接两个局域网的桥梁。网桥是工作在数据链路层的设备,其作用是扩展网络和通信手段,在各种传输介质中转发数据信号,增大传输距离;还可以有选择性地将现有地址的信号从一种传输介质发送到另一种传输介质,并能有效地限制两种传输介质系统中无关紧要的通信。网桥可以看成“低层的路由器”。

4.交换机(Switch)

交换机(见图2.11)工作在数据链路层或网络层,可以理解为“高级的网桥”。交换机和网桥的不同之处在于,交换机常常用来连接独立的计算机,而网桥连接的对象是局域网,所以交换机的端口比网桥多。简单来说,交换机是使用硬件来完成信息的过滤、学习和转发过程的。交换机的速度比集线器快,这是由于交换机能分辨数据帧中的源地址(MAC地址)和目的地址,使数据帧直接由源地址到达目的地址。交换机还可以把网络拆解成网络分支,分割网络数据流,隔离分支中发生的故障,减少每个网络分支的数据流量,提高整个网络的效率。

图2.10 网桥

图2.11 交换机

5.路由器(Router)

路由器(见图2.12)工作在网络层,其主要工作是为经过路由器的IP数据报寻找一条最佳传输路径,并将该数据报有效地传输到目的节点。与在物理上划分网段的交换机不同,路由器使用专门的软件协议从逻辑上对整个网络进行划分。例如,TCP/IP网络中的IP地址是与硬件地址无关的“逻辑”地址。目前,TCP/IP网络是通过路由器连接起来的,互联网就是成千上万个IP子网通过路由器连接起来的国际性网络。

图2.12 路由器

6.网关(Gateway)

网关又称为网间连接器、协议转换器,通过字面意思可将网关看成网络的关口。从技术角度来解释,网关就是连接两个不同网络的接口,如局域网中的共享上网服务器就是局域网和广域网的接口。

网关在网络层以上实现网络的互联,是最复杂的网络互联设备,仅用于两个高层协议不同的网络互联。网关既可以用于广域网的互联,也可以用于局域网的互联。在不同通信协议、数据格式、语言或体系结构的两种网络之间,网关是一个翻译器。与网桥只是简单地传输数据不同,网关会对接收到的数据重新打包,以满足目的系统的需求。

2.2 TCP/IP协议

TCP/IP协议是互联网最基本的协议,是互联网的基础,由网络层的IP协议和传输层的TCP协议组成。TCP协议负责发现传输的问题,一旦有问题就发出信号,要求重新传输,直到所有数据都被安全正确地传输到目的节点为止。IP协议的作用就是为互联网中每台联网设备规定一个地址。

网络层(IP协议属于网络层协议)接收底层(网络接口层,如以太网设备驱动程序)发来的数据报,并把该数据报发送到更高层——传输层(TCP或UDP属于传输层协议),网络层把从传输层接收到的数据传输到底层。IP数据报是不可靠的,因为IP协议并没有做任何事情来确认数据报是否按顺序发送的或者有没有被破坏,IP数据报中包含了发送该数据包的主机地址(源地址)和接收它的主机地址(目的地址)。

TCP协议是面向连接的通信协议,通过三次握手建立连接,通信完成后要拆除连接。由于TCP协议是面向连接的,所以只能用于端到端的通信。TCP协议提供的是一种可靠的数据流服务,采用带重传的确认技术来实现传输的可靠性。TCP协议还采用滑动窗口的方式进行流量控制,所谓窗口,表示实际的接收能力,用于限制发送方的发送速率。

2.2.1 TCP/IP模型

常见的TCP/IP模型有四层和五层之分,它们和OSI参考模型的对应关系如图2.13所示。

图2.13 TCP/IP四层模型、TCP/IP五层模型以及它们与OSI参考模型的对应关系

TCP/IP四层模型包括应用层、传输层、网络层和网络接口层(即主机-网络层)。

(1)应用层。应用层对应于OSI参考模型的高层(第5~7层),为用户提供了各种服务,如FTP、Telnet、DNS、SMTP等。

(2)传输层。传输层对应于OSI参考模型的传输层,为应用层提供端到端的通信功能,保证了数据报的传输顺序及数据的完整性。该层有两个主要的协议,即TCP和UDP。TCP协议提供的是一种可靠的、通过三次握手来建立连接的数据传输服务;UDP协议提供的是不保证可靠的(并不是不可靠)、无连接的数据传输服务。

(3)网络层(网际互联层)。网络层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。网络层包含的协议涉及数据报在整个网络上的逻辑传输,可以重新赋予主机一个IP地址来完成对主机的寻址,还负责数据报在多种网络中的路由。网络层有三个主要协议,即IP、IGMP和ICMP。IP协议是网络层最重要的协议,它提供的是一个可靠、无连接的数据传输服务。

(4)网络接口层(主机-网络层)。网络接口层与OSI参考模型中的物理层和数据链路层相对应,负责监视数据在主机和网络之间的交换。事实上,TCP/IP模型本身并未定义网络接口层的协议,参与互联的各网络使用自己的物理层和数据链路层协议与TCP/IP模型的网络接口层进行连接。

2.2.2 IP地址的原理

1.IP地址的概念

互联网中的每台计算机和其他设备都有唯一的地址,即IP地址。正是因为这种唯一的地址,才保证了用户在联网的计算机上进行操作时,能够高效且方便地从千千万万台计算机中选出自己所需的对象。

IP地址就像我们的家庭住址一样,如果你要给一个人写信,就要知道这个人的地址,这样邮递员才能把信送到。计算机发送信息就好比邮递员,它必须知道唯一的“家庭地址”才能把信送到“家”。不过我们的家庭地址是用文字来表示的,互联网中的计算机地址是用二进制数表示的。

2.IPv4地址

IPv4地址的概念是在20世纪80年代初期提出的,即使现在有了IPv6地址,IPv4地址仍然是互联网用户使用最广泛的地址。通常,IPv4地址是一个32位的二进制数,被分割为4个8位二进制数(也就是4 B)表示的字段。IPv4地址用点分十进制整数表示成“ a.b.c.d ”的形式,其中 a b c d 是0~255之间的十进制整数。

例如,32位的二进制数表示的IP地址“01100100.00000100.00000101.00000110”,对应的十进制数表示的IP地址是“100.4.5.6”。

3.IPv4地址的分类

IPv4地址由两部分组成,即网络地址(网络号)和主机地址(主机号),即

IPv4地址::={<网络号>,<主机号>}

网络号表示属于互联网的逻辑网络,主机号表示网络中的具体主机。根据网络号和主机号可将IPv4地址分为A、B、C三类常规地址,以及D、E两类特殊地址,如图2.14所示。

图2.14 IPv4地址的分类

IPv4地址可大致分为以下五类:

(1)A类地址。IPv4地址的范围为1.0.0.1~127.255.255.254,一般用于大型网络。对于A类地址来说,第一个字段表示网络号,其后三个字段表示主机号,因此A类地址可分配的网络数非常少,只有126个;每个网络可以分配的主机数非常多,有16777214个。

(2)B类地址。IPv4地址的范围为128.0.0.1~191.255.255.254,一般用于中等规模网络。B类地址的前两个字段表示网络号,后两个字段表示主机号。B类地址可以分配16384个网络,每个网络可以分配65534个主机。

(3)C类地址。IPv4地址的范围为192.0.0.1~223.255.255.254,一般用于小型网络。C类地址中前三个字段表示网络号,最后一个字段表示主机号,因此其可以分配的网络数为2097152个,每个网络可以分配254台主机。

(4)D类地址。IPv4地址的范围为224.0.0.0~239.255.255.255。D类地址为组播地址,一般用于多路广播用户。

(5)E类地址。IPv4地址的范围为240.0.0.0~255.255.255.255。E类为保留地址,留待特殊用途。

除了上面提到的IPv4 地址,还有一些特殊的IPv4 地址,如0.0.0.0 对应当前主机,255.255.255.255 是当前子网的广播地址,127.0.0.1~127.255.255.255.255 都是用来做回路测试的,127.0.0.1也可以代表本机IP地址。

4.IPv6地址

IPv4采用32位的地址长度,有大约43亿个地址。2011年,互联网编号分配机构(Internet Assigned Numbers Authority, IANA)分发了IPv4地址空间的最后一块。2015年,IANA正式宣布美国已用完IPv4地址。IPv6地址并不是一种全新的技术,它是IP协议的最新版本,旨在替换IPv4地址。

IPv6地址采用十六进制数表示,共128位,由64位的网络号和64位主机号组成。其中,64位的网络号又分为48位的全球网络标识符和16位的本地子网标识符,如图2.15所示。

图2.15 IPv6地址组成

IPv6地址最终的显示结果分为8组,每组16位,每组表示4个十六进制数,各组之间用“:”号隔开,如“0:0:0:0:0:0:0:0”。

在IPv6地址中,有时会出现连续的几组0,为了简化书写,这些0可以用“::”代替,但一个地址中只能出现一次“::”。例如,IPv6 地址“1080:0:0:0:8:800:200C:417A”,可以写成“1080::8:800:200C:417A”;IPv6 地址“FF01:0:0:101:0:0:1:101”,可以写成“FF01::101:0:0:1:101”或“FF01:0:0:101::1:101”;IPv6地址“0:0:0:0:0:0:0:1”可以写成“::1”。

在某些情况下,IPv4地址需要包含在IPv6地址中,这时IPv6地址的最后两组用现在习惯使用的IPv4地址的十进制表示法,前6组用IPv6表示。例如,将IPv4地址“61.1.133.1”包含在IPv6地址中,可以写成“0:0:0:0:0:0:61.1.133.1”或者“::61.1.133.1”。

5.IPv6地址的特点

(1)更大的地址空间。IPv6地址长度为128位(16 B),即有2 128 -1(3.4E+38)个地址,IPv6地址空间是IPv4地址空间的2 96 倍。

(2)简化的报头和灵活的扩展性。IPv6对数据报头做了简化,将其基本报头长度固定为40 B,减少了处理器开销并节省了网络带宽。此外,IPv6 定义了多种扩展报头,使得IPv6极其灵活,能够对多种应用提供强大的支持,同时也为以后支持新应用提供了可能。

(3)层次化的地址结构。IPv6地址空间按照不同的地址前缀来划分,采用层次化的地址结构,利于骨干网路由器对数据报进行快速转发。IPv6定义了3种不同的地址类型:单点传输地址、多点传输地址和任意点传输地址。

(4)即插即用的联网方式。IPv6地址允许主机发现自身地址并自动完成地址更改,这种机制既不需要用户花精力进行地址设定,又可以减轻网络管理者的负担。IPv6地址有两种自动设定功能,一种是和IPv4 地址自动设定功能相同的全状态自动设定功能;另一种是无状态自动设定功能。

(5)网络层的认证与加密。IP安全协议(IPSec)是IPv4的一个可选扩展协议,是IPv6的必要组成部分,主要功能是在网络层对数据分组提供加密和鉴别等安全服务。IPSec提供了认证和加密两种安全机制。

认证机制:使IP通信的数据接收方能够确认数据发送方的真实身份,以及数据在传输过程中是否遭到改动。

加密机制:通过对数据进行编码来保证数据的机密性,防止数据在传输过程中被他人截获而失密。

(6)服务质量的满足。服务质量(QoS)通常是指通信网络在承载业务时为业务提供的品质保证。基于IPv4 的网络在设计之初,只有一种简单的服务质量,即采用尽最大努力传输。随着网络上多媒体业务的增加(如IP电话、VOD、电视会议),这些业务对传输时延和时延抖动有严格的要求,因此对服务质量的要求也就越来越高。

IPv6数据报包含一个8位的业务流和一个20位的流标签,允许发送业务流的源节点和转发业务流的路由器在数据报上添加标记,中间节点在接收到数据报后,通过验证它的流标签,就可以判断该数据报属于哪个流,就可以知道数据报的QoS需求,并进行快速的转发。

(7)对移动通信的支持更好。移动通信与互联网的结合是网络发展的大趋势之一。移动互联网已成为我们日常生活的一部分,改变着我们生活的方方面面。IPv6为用户提供了可移动的IP数据服务,让用户可以在世界各地都使用同样的IPv6地址,非常适合无线上网。

2.2.3 IP端口

IP地址解决了在网络通信时网络中的主机定位问题,但数据报在传输到目的主机时,主机上的进程可能会有很多,这就需要端口号来标识不同的进程。在网络通信中,IP地址用于标识主机网络地址,端口号用于标识主机中发送数据、接收数据的进程。简单来说,端口号用于定位主机中的进程。

类似我们在发送快递时,不仅需要指定收货地址(IP地址),还需要指定收货人(端口号)。端口号的范围是0~65535,在网络通信中,进程可以通过绑定一个端口号来发送和接收数据,因此两个不同的进程不能绑定同一个端口号,但一个进程可以绑定多个端口号。

端口可分为3大类。

1.公认端口(Well Known Ports)

公认端口号的范围是0~1023,用于“紧密”绑定一些服务。通常,公认端口的通信明确表明了某种服务的协议。例如:

22端口:预留给SSH服务器绑定SSH协议。

21端口:预留给FTP服务器绑定FTP。

23端口:预留给Telnet服务器绑定Telnet协议。

80端口:预留给HTTP服务器绑定HTTP。

443端口:预留给HTTPS服务器绑定HTTPS。

2.注册端口(Registered Ports)

注册端口号的范围是1024~49151,用于“松散”绑定一些服务。也就是说,很多服务都可以绑定到这些端口,但这些端口也可以用于其他目的。

3.动态和/或私有端口(Dynamic and/or Private Ports)

动态和/或私有端口号的范围是49152~65535。理论上讲,不应为服务分配这些端口。实际上系统通常是从1024开始分配动态端口号的,但也有例外,如SUN系统的RPC端口号是32768开始的。

2.2.4 域名系统

IP地址对于计算机来说容易记忆和识别,但对于人来说却难以记忆。域名系统(Domain Name System, DNS)的作用是将人们可以记忆的主机名与计算机可以记忆的IP地址关联在一起,通过一个域名对应多个IP地址,可以实现DNS的负载均衡。

1.域名分类

域名可分为不同级别,包括顶级域名、二级域名等,由两个或两个以上的词构成,中间由点号分隔开,最右边的词称为顶级域名。例如,在域名“www.whzbcx.com.cn”中,“.cn”表示顶级域名,“.com”表示二级域名,“whzbcx”表示三级域名,“www”表示主机名。

顶级域名又分为两类:一是国家顶级域名,如今200多个国家都按照ISO 3166中的国家代码(Country Code)分配了顶级域名。国家顶级域名由两个字母组成,如.cn、.uk、.de和.jp。常用的国家顶级域名如表2.2所示。

表2.2 常用的国家顶级域名

二是国际顶级域名,如.com、.net、.org。常用的国际顶级域名如表2.3所示。

表2.3 常用的国际顶级域名

二级域名是指顶级域名之下的域名。在国际顶级域名下,二级域名是指域名注册人的网上名称,例如IBM、Microsoft等;在国家顶级域名下,二级域名是指注册企业类别的符号,如com、edu、gov、net等。我国的二级域名又分为类别域名和行政区域名两类。类别域名共6个,包括ac(用于科研机构)、com、edu、gov、net、org;行政区域名共34个,分别对应我国各省、自治区和直辖市。

三级域名用字母(如A~Z、a~z)、数字(0~9)和连接符(-)组成,各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。

2.域名解析

域名系统是为了方便记忆而专门建立的一套地址转换系统。要访问一台服务器,最终还必须通过IP地址来实现。域名解析就是指将域名重新转换为IP地址的过程,需要由专门的域名服务器来完成。域名服务器分布在互联网的各子网中,每个域名服务器负责管理连接到本子网的所有主机,并为其提供服务。

当一个主机域名转换为IP地址时,就需要调用域名解析函数,域名解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地的域名服务器。本地的域名服务器查到域名后,将对应的IP地址放在返回的应答报文中。同时,域名服务器还必须具有连接其他服务器的信息,以便在不能解析域名时转发域名。若域名服务器不能响应该请求,则域名服务器就暂时变成DNS中的另一个客户,向根域名服务器发出域名解析请求,根域名服务器查找下面所有的二级域名的域名服务器,以此类推,一直向下解析,直到查询到所请求的域名为止。域名解析的过程如图2.16所示。

图2.16 域名解析的过程

2.2.5 URL

互联网上的每一个网页都具有唯一的名称标识,通常称为统一资源定位符(Uniform Resource Locator, URL)。URL是互联网上标准资源地址,即网址。

URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。

URL的一般语法格式为:

例如,http://www.whzbcx.com:80/path,其中http为传输协议;www.whzbcx.com为域名;/path为路径。为了形象地理解URL,可以将协议看成要使用的邮政服务,将域名看成城市或者城镇,将端口号看成邮政编码,将路径看成收件人所在的大楼,将参数看成额外的信息,如大楼所在单元,将信息片段看成描述信息,如收件人。

一个URL由不同的部分组成,其中一些是必需的,而另一些是可选的。让我们以下面的URL为例看看其中最重要的组成部分:

http://www.whzbcx.com/news/shownews.php?id=94#DocLoc

1.协议

http是协议,表示浏览器必须使用哪种协议,通常是HTTP或是HTTP的安全版,即HTTPS,也支持其他协议,如FTP等。

2.域名

www.whzbcx.com是域名,表示正在请求哪个Web服务器,也可以直接使用IP地址,但由于IP地址的可读性较差,因此很少在公共网络上使用。

3.端口号

80是端口号,表示用于访问Web服务器上的资源端口。Web服务器使用HTTP的标准端口(HTTP使用的默认端口号为80,HTTPS使用的默认端口号为443,默认端口号可以省略不写)来授予其资源的访问权限。

4.路径

/news/shownews.php是Web服务器上资源的路径。在Web的早期阶段,这样的路径表示Web服务器上的物理文件位置。现在,路径是由没有任何物理实体的Web服务器处理而形成的。

5.参数

?id=94是提供给Web服务器的额外参数。这些参数是用&符号分隔的键-值对列表。在返回资源之前,Web服务器可以使用这些参数来执行额外的操作。

6.信息片段

#DocLoc是资源的信息片段。信息片段是资源中的一种“书签”,告诉浏览器显示位于该位置的内容。例如,在HTML文档上,浏览器将滚动到定义锚点的位置;在视频或音频文档上,浏览器将尝试转到锚点表示的时间。需要注意的是,#后面的部分(也称为片段标识符)是不会被发送到请求的服务器上的。

2.3 HTTP、HTTPS、WebSocket

2.3.1 HTTP

HTTP是互联网上应用最为广泛的协议之一,所有的WWW文件都遵守这个协议。

1.HTTP的主要特点

(1)支持客户端/服务器模式。

(2)简单快速:当客户端向服务器请求服务时,只需要传输请求的方法和路径。常用的请求方法有GET、POST、HEAD、PUT、DELETE等,每种方法都规定了客户端与服务器的通信类型。由于HTTP比较简单,使得HTTP服务器的程序规模很小,因而通信速率很快。

(3)灵活:HTTP允许传输任意类型的数据。传输的数据类型由Content-Type加以标记。

(4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求并收到客户端的应答后,就断开连接,采用这种方式可以节省传输时间。通过设置Keep-Alive模式,可以保持TCP连接,这样可避免在客户端向服务器发送后续请求时重新建立连接。

(5)无状态:HTTP是无状态协议。无状态是指协议对事务处理而言是没有记忆能力的。缺少状态意味着当后续处理需要前面的信息时,必须重传信息,这样可能会导致每次连接的数据传输量增大。

(6)明文传输:HTTP不支持加密处理,所以在安全性方面存在隐患。目前解决安全问题的方法是使用HTTPS。

2.HTTP请求

HTTP常用于请求和响应的过程。Request表示用户通过浏览器向服务器发起请求,Response表示服务器对用户请求的资源数据进行响应。HTTP请求和响应过程如图2.17所示。

图2.17 HTTP请求和响应过程

根据HTTP,HTTP请求可以使用多种请求方法。HTTP 1.0 定义了3 种请求方法,即GET、POST和HEAD;HTTP 1.1新增了6种请求方法,即OPTIONS、PUT、PATCH、DELETE、TRACE和CONNECT。

(1)GET方法:获取资源,本质上是发送一个请求来取得服务器上的资源,资源通过一组HTTP头和呈现数据(如HTML文本、图片或视频等)返回给客户端。GET方法不会包含呈现数据,即GET方法只用从向服务器获取资源,而GET方法本身不应该携带任何呈现数据。

(2)POST方法:传输实体文本,向指定资源提交数据处理请求(如提交表单或者上传文件)。数据包含在POST方法的请求体中,POST方法可能会建立新的资源或修改已有的资源。

在HTTP中,POST与GET的区别如下:

① GET方法从服务器上获取数据,POST方法向服务器传送数据。

② GET方法把参数队列添加到提交表单Action属性所指向的URL中,值和表单内的各个字段一一对应,在URL中可以看到。

③ GET方法传输的数据量较小,不能大于2 KB;POST方法传输的数据量较大,在默认情况下是不受限制的。

④ 根据HTTP,GET方法用于获取信息,是安全的和幂等的。所谓安全,意味着该操作用于获取信息而非修改信息,不会影响资源的状态;幂等意味着对同一URL的多个请求,应该返回相同的结果。

(3)HEAD方法:用于获得资源的首部(报头),类似于GET方法,只不过返回的响应中没有具体的内容。要想判断某个资源是否存在,通常使用GET方法,但使用HEAD方法的意义更加明确。

(4)OPTIONS方法:询问支持的方法,客户端询问服务器可以提交哪些请求方法,用于获取当前URL所支持的方法。若请求成功,则会在HTTP头中包含一个名为“Allow”的头,表示所支持的方法,如“GET,POST”。在实际中很少使用OPTIONS方法。

(5)PUT方法:传输文件,从客户端向服务器传输的数据可以取代指定的文档内容,即指定上传资源存放路径。该方法比较少用,HTML表单也不支持该方法。从本质上来讲,PUT方法和POST方法极为相似,都是用来向服务器发送数据的,但它们之间有一个重要区别,即PUT方法通常指定了资源的存放位置,POST方法则没有指定,POST方法中的数据存放位置由服务器决定。

(6)PATCH方法:局部更新文件,是对PUT方法的补充,用来对已知资源进行局部更新。该方法极少使用。

(7)DELETE方法:删除资源,请求服务器删除指定的资源。例如,Amazon的S3 云服务就是使用DELETE方法来删除资源的。该方法很少使用。

(8)TRACE方法:追踪路径,回显服务器收到的请求,客户端可以对请求消息的传输路径进行追踪。通过TRACE方法,可以让Web服务器将之前的请求通信返回给客户端。该方法主要用于测试或诊断,极少使用。

(9)CONNECT:用于建立隧道(Tunnel)连接,HTTP 1.1将该方法预留给能够将连接改为隧道方式的代理服务器。CONNECT方法可在与代理服务器通信时建立隧道,利用隧道协议进行TCP通信,即使用安全套接层(Secure Socket Layer, SSL)和传输层安全(Transport Layer Security,TLS)协议对数据加密后经隧道传输。该方法极少使用。

2.3.2 HTTPS

HTTPS是一种通过计算机网络进行安全通信的传输协议,使用HTTP传输数据,使用SSL和TLS协议对数据进行加密。HTTPS的主要作用是对服务器的身份进行认证,同时保护数据的隐私性与完整性。

HTTPS之所以是安全的通信协议,是因为它在HTTP中加入了SSL。该协议可提供三层防护:

(1)加密:对交换数据进行加密,避免他人窥视。这意味着用户在与网站进行数据传输时,第三方是无法跟踪及窃取其中的数据的。

(2)数据完整性:保证数据的完整性。在数据传输期间,第三方无法通过任何工具检测或篡改已受保护的数据。

(3)身份验证:用户可对网站的真实性进行验证,帮助用户验证网站的真实身份,免受中间的攻击或误入钓鱼网站,建立用户对网站真实性的信任。

HTTPS和HTTP的区别如下:

(1)传输数据的安全性不同。HTTP是超文本传输协议,数据是明文传输的,一旦攻击者截取了Web浏览器和服务器之间传输的数据,就可以直接读懂其中的信息。HTTPS是具有安全性的传输协议,可对Web浏览器和服务器之间传输的数据进行加密,确保数据传输的安全性。

(2)连接方式不同。HTTP的连接很简单,是无状态的。HTTPS是由SSL+HTTP构建的可进行加密传输、身份认证的协议。

(3)端口号不同。HTTP使用的默认端口号是80。HTTPS使用的默认端口号是443。

(4)证书申请方式不同。HTTP无须申请证书。HTTPS需要到CA(证书颁发机构)申请证书,但免费证书往往很少,需要交费。

2.3.3 WebSocket

HTTP是一种无状态、无连接、单向的应用层协议,采用的是请求/响应模型。通信请求只能由客户端发起,服务器对请求做出应答处理。HTTP无法实现服务器主动向客户端发送信息。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端很难获知服务器的状态变化。大多数Web应用程序将通过频繁的异步请求来实现轮询,但轮询的效率低,非常浪费资源。

针对HTTP存在的问题,WebSocket协议应运而生。WebSocket协议允许客户端和服务器之间进行全双工通信,以便任意一端都可以通过建立的连接将数据发送到对端。WebSocket协议在建立连接后可以一直保持连接状态,相比于轮询方式的不停建立连接,显然效率得到了很大的提高。HTTP/HTTPS与WebSocket协议的通信过程对比如图2.18所示。

WebSocket协议的特点如下:

(1)能够保持连接状态。与HTTP/HTTPS不同的是,WebSocket协议是一种有状态的协议,在建立连接后,通信可以省略部分状态信息;而HTTP需要每个请求都携带状态信息(如身份认证等)。

(2)能够更好地支持二进制数据。WebSocket协议定义了二进制的数据帧,相对于HTTP,WebSocket协议可以更轻松地处理二进制数据。

(3)支持用户扩展。WebSocket协议支持用户扩展,用户可以扩展该协议,实现部分自定义的子协议,如部分浏览器支持压缩等。

(4)有更好的压缩效果。相对于HTTP的压缩,WebSocket协议在适当扩展后,可以沿用之前数据的上下文,在传输类似的数据时,可以显著地提高压缩率。现在的Web应用一般会采用WebSocket协议来改善用户体验,如消息订阅、协同办公、语音/视频聊天、三维模型、任务提醒等。

图2.18 HTTP/HTTPS与WebSocket协议的通信过程对比

2.4 WebGIS的体系结构

WebGIS的体系结构可以看成全程管理系统设计和演化的组件、关系、法则与指导方针等的组合模式,其外在反映是系统的层次结构和功能实现方式。随着网络技术和计算机技术的发展,WebGIS的体系结构经历了集中式体系结构、分布式两层体系结构、分布式三层体系结构和分布式多层体系结构。

1.集中式体系结构

集中式体系结构使用的是终端/工作站模式,所有的计算、数据处理工作都工作站(服务器)完成,终端仅为用户操作计算机的界面,用来显示数据处理结果,终端用户不能对数据进行操作,得到的图形是静态的,不能进行放大、漫游和分析等操作。如今这一模式因为不能满足用户需求而被淘汰了。

2.分布式两层体系结构

分布式两层体系结构采用客户端/服务器模式,客户端和服务器通过网络协议进行通信。根据网络负载的分配策略,客户端/服务器模式可以分为胖客户端/瘦服务器(基于客户端)和胖服务器/瘦客户端(基于服务器)两种形式。采用胖客户端/瘦服务器形式的WebGIS,其大部分功能是在客户端实现的,客户端向服务器发出数据和GIS数据处理工具请求,服务器根据请求将数据和数据处理工具一并发送给客户端,客户端根据用户操作完成数据处理和分析。采用胖服务器/瘦客户端形式的GIS,其绝大多数功能是在服务器实现的,客户端向服务器发送数据处理请求,服务器接收请求后对数据进行处理,并将处理结果返回客户端,客户端按适当的方式显示处理结果。一般来说,胖客户端/瘦服务器对客户端的处理能力要求较高,用户需要对数据处理过程进行控制,当处理需求和处理能力之间发生矛盾时,执行效率会大大降低;胖服务器/瘦客户端形式适用于广域网,对服务器的GIS分析功能有较高要求,但是当遇到多用户并发访问,需要频繁地进行数据传输时,系统的执行效率会受到带宽和网络流量的制约。因此,有人提出将两种形式的优点结合在一起构成混合模式。

分布式两层体系结构可根据实际情况合理分配负载。按照逻辑关系,一个复杂的应用程序可以分为表示逻辑、业务逻辑和数据逻辑。如何均衡这些逻辑关系的分配是WebGIS体系结构面对的主要问题。一般来讲,服务器实现数据逻辑,负责应用程序访问数据的安全性、完整性,以及数据库的存取和管理;表示逻辑和业务逻辑负责应用计算工作,由服务器和客户端共同完成。

3.分布式三层体系结构

分布式三层体系结构在客户端和服务器之间增加了一个中间层(Web服务层),将表示逻辑、业务逻辑和数据逻辑分开,使得数据服务器和客户端变得更“单纯”,较好地实现了逻辑的负载平衡。在分布式三层体系结构中,客户端承载表示逻辑,中间层承载业务逻辑,数据服务器承载数据逻辑。该体系结构屏蔽了客户端和服务器的直接连接,由中间层接收客户端的请求,然后寻找相应的数据库以及处理程序,并将处理器的处理将结果返回到客户端。这种体系结构实现了客户端与服务器的透明连接,无论客户端以何种方式提出请求,Web服务层均可调用相应的程序和数据提供服务。

总体来说,分布式三层体系结构结合了前面两种体系结构的优点,有效地实现了负载平衡,分布式三层体系结构的优点是明显的,但其结构复杂、构造难度较大,选择哪种体系结构要视具体情况而定。

WebGIS中常用的分布式三层体系结构(见图2.19)主要包括数据层、逻辑层(即中间层)和表现层。数据层是底层,提供空间数据与业务数据等基础数据支撑;中间层一般包括提供基础GIS服务的GIS服务器,以及提供应用服务的业务逻辑服务器(Web服务器),其中GIS服务器可以是专业的GIS开发平台或开源GIS项目,也可以是简单的大众化应用地图服务器,主要作用是为表现层提供地图数据服务和功能服务资源;最上层为表现层,可基于HTML5、ES6、WebGL、WebSocket、React、AngularJS、Vue.js等Web技术栈,使用各类WebGIS API进行开发,与GIS服务器或Web服务器交互,满足具体Web应用的需求。

图2.19 WebGIS中常用的分布式三层体系结构

数据层:一般通过地理信息数据库和业务数据库进行数据的存储。地理信息数据库用于存储地理信息数据,包含矢量、地名地址、专题及切片数据,而业务数据库用于存储前端网站或者行业应用的关系型数据。

逻辑层:由GIS服务器和Web服务器组成,GIS服务器用于提供WMS、WTMS、WFS和WCS等GIS服务;而Web服务器主要针对行业应用,调取GIS服务和后台的业务数据在前端展示。

表现层:主要通过客户端(Web浏览器、移动客户端或桌面应用程序)使用特定框架对Web服务器返回的数据进行展示。

4.分布式多层体系结构

WebGIS分布式多层体系结构由四层或更多层组成,包括:

客户端层:负责用户交互和数据展示,通常包括Web浏览器或移动设备等。

Web服务器层:负责处理HTTP请求和响应,通常包括Web服务器、中间件以及相关的Web工具软件。

应用服务器层:负责处理业务逻辑和数据逻辑,通常包括Web服务器、相关的编程语言环境和应用框架。

数据服务器层:负责存储和管理数据,通常包括关系型数据库或非关系型数据库等。

不同于分布式三层体系结构,分布式多层体系结构更加复杂和灵活,可以实现更多的功能和支持更多的应用场景,但也需要更多的资源和技术支持。

2.5 Web服务器

Web服务器也称为WWW(World Wide Web)服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。

1.Apache服务器

Apache服务器(其标识如图2.20所示)主要是静态网页服务器,是世界上用得最多的Web服务器。Apache服务器源于NCSA WWW服务器,在NCSA WWW服务器项目停止后,那些使用NCSA WWW服务器的用户开始交换用于Apache服务器的补丁,这也是Apache服务器名称的由来(Pache补丁)。世界上很多著名的网站都是Apache服务器的用户,Apache服务器的优势主要在于源代码开放、支持跨平台的应用(可以运行在UNIX、Windows、Linux等操作系统),以及可移植性等。虽然Apache服务器的模块非常丰富,但它在速度和性能方面不如其他的轻量级Web服务器,属于重量级产品,所消耗的内存等资源也比其他的Web服务器要高。

2.Tomcat服务器

Tomcat服务器(其标识如图2.21所示)主要是动态网页服务器,是一个开放源代码、运行Servlet和JSP Web应用软件的,基于Java的Web应用软件容器。Tomcat服务器是根据Servlet和JSP规范执行的,因此也可以说Tomcat服务器符合Apache-Jakarta规范。Tomcat服务器比绝大多数商业应用软件服务器要好,但它对静态文件、高并发的处理能力比较弱。

图2.20 Apache服务器的标识

图2.21 Tomcat服务器的标识

3.Nginx服务器

Nginx服务器(其标识如图2.22所示)是一款轻量级的Web服务器、反向代理服务器、电子邮件(IMAP/POP3)代理服务器,遵循BSD-like协议(是由BSD派生而来的协议)。Nginx服务器是由俄罗斯的程序设计师Igor Sysoev开发的,供俄罗斯的大型入口网站及搜索引擎Rambler使用。Nginx服务器因其稳定性、丰富的功能集、示例配置文件和低系统资源消耗而闻名,其特点是占用内存少、并发能力强。Nginx服务器的并发能力在同类型的网页服务器中表现较好,ZGIS、ArcGIS、SuperMap等常用WebGIS服务都支持Nginx代理。

4.Lighttpd服务器

Lighttpd服务器(其标识如图2.23所示)是由一个德国人写的开源软件,其目标是为高性能的网站提供一个安全、快速、兼容性好且灵活的Web服务器。Lighttpd服务器具有内存开销低、CPU资源占用率低、效能好,以及模块丰富等特点,支持FastCGI、输出压缩、URL重写及别名(Alias)等重要功能。和Nginx服务器一样,Lighttpd服务器也是一款轻量级Web服务器,是Nginx服务器的竞争对手之一。

图2.22 Nginx服务器的标识

图2.23 Lighttpd服务器的标识

5.IIS服务器

IIS服务器(其标识如图2.24所示)是一个允许在互联网上发布信息的Web服务器,是目前最流行的Web服务器产品之一,很多著名的网站都建立在IIS服务器上。IIS服务器提供了一个图形界面的管理工具,称为互联网(Internet)服务管理器,可用于监视配置和控制互联网服务。

IIS服务器可以看成一种Web服务组件,包括Web服务器、FTP(File Transfer Protocol)服务器、NNTP(Network News Transport Protocol)服务器和SMTP(Simple Mail Transfer Protocol)服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送。IIS服务器使得用户在网络上发布信息变得更加简单,提供了扩展Web服务器功能的编程接口和互联网数据库连接器,实现了对数据库的查询和更新等功能。

IIS服务器只能运行在Windows Server上。

6.WebSphere服务器

WebSphere服务器(其标识如图2.25所示)是一种功能完善、开放的Web应用程序服务器,是IBM电子商务的核心部分。WebSphere服务器是基于Java的应用环境建立、部署和管理互联网及Web应用程序的。WebSphere服务器目前已经进行了扩展,以适应Web应用程序服务器的需要,范围从简单到高级,直到企业级应用。据IBM官方的介绍,已有10000多家企业正在使用WebSphere服务器。相对于其他流行的Web服务器,WebSphere服务器的应用数量较少。

图2.24 IIS服务器的标识

图2.25 WebSphere服务器的标识

7.Weblogic服务器

WebLogic服务器(其标识如图2.26所示)是Oracle公司的主要产品之一,是商业市场上主要的Java(J2EE)应用服务器之一,是世界上第一个成功商业化的J2EE应用服务器。WebLogic服务器延伸出了WebLogic Portal、WebLogic Integration等企业用的中间件(当下Oracle公司主要以Fusion Middleware融合中间件来取代WebLogic服务器之外的企业包)。WebLogic服务器最早是由WebLogic公司开发的,该公司后来并入了BEA公司,最终BEA公司又并入了Oracle公司。

图2.26 Weblogic服务器的标识

长期以来,WebLogic服务器一直被认为是市场上最好的J2EE工具之一。像数据库或邮件服务器一样,WebLogic服务器对客户而言是不可见的。WebLogic服务器最常用的使用方式是为Internet或Intranet上的Web服务提供安全、数据驱动的应用程序,为集成后端系统(如ERP系统、CRM系统),以及为实现企业级计算提供了一个简易、开放的标准。

2.6 实现Web的主要技术方案

目前,实现Web的主要技术方案有CGI、Server API、Plug-in插件、ActiveX、Java Applet、标记语言模式、Ajax、RIA等技术方案,各种技术方案如下。

1.CGI(Common Gateway Interface)

基于CGI的WebGIS是对HTML的扩展,需要在后台运行GIS服务器,GIS服务器和Web服务器通过CGI相连。在客户端中,Web浏览器通过HTML建立用户界面;在GIS服务器中,GIS应用程序通过CGI与Web服务器相连。当用户向GIS服务器发送一个请求时,GIS服务器通过CGI把该请求转发给在后端运行的GIS应用程序,由GIS应用程序生成结果并返回到GIS服务器上,GIS服务器再将结果发送到客户端。这种技术方案的优势表现在:所有的操作、分析由GIS服务器完成,因而客户端是瘦客户端,有利于充分利用GIS服务器的资源,发挥GIS服务器的最大潜力。客户端使用的是支持标准HTML的Web浏览器,与平台无关。这种技术方案的劣势表现在:用户的每一步操作,都需要将请求通过网络传给GIS服务器,GIS服务器将操作结果形成新的栅格图像,再通过网络返回给用户,增加了网络传输的负担。所有的操作都必须由GIS服务器解释执行,GIS服务器的负担很重,对于每个客户端的请求,都要重新启动一个新的服务进程;当有多个用户同时发出请求时,系统的性能将受到影响;浏览器上显示的是静态图像,要在浏览器上进行操作很困难,影响了GIS资源的有效使用。

2.Server API(服务器应用程序接口)

Server API的基本原理与CGI类似,不同的是CGI中的程序是可以单独运行的程序,而基于Server API的程序必须在特定的服务器上运行。例如,微软的IIS API只能在Windows Server上运行。基于Server API的动态链接模块启动后一直处于运行状态,而不像CGI那样每次都要重新启动,所以其速度较CGI快得多。

Server API的优点是速度要比CGI方法快得多,缺点是它依附于特定的服务器和计算机平台。目前主要的ServerAPI技术是ASP和JSP Servlet。

3.Plug-in

基于CGI和Server API的WebGIS发送给用户的信息是静态的,用户的GIS操作都需要由服务器来完成。当互联网流量较高时,系统的反应会很慢。解决这一问题的方法之一是把服务器的一部分功能移到客户端,这样不仅可以大大加快用户操作的反应速度,而且也可以减少了互联网的流量和服务器的负载。Plug-in是由美国网景公司(Netscape)开发的增加网络浏览器功能的方法。目前主流的浏览器(如IE等)均具有应用程序接口,其目的就是方便网络开发商和用户扩展满足用户需求以及与网络相关的特定应用。

Plug-in克服了HTML的不足,比HTML更灵活,客户端可直接操作矢量GIS数据,无缝支持与GIS数据的连接,实现GIS功能。由于所有的GIS操作都是在本地由GIS插件完成的,因而运行速度快。服务器仅需提供GIS数据服务,网络也只需要传输一次GIS数据,服务器的任务很少,网络传输的负担轻。

Plug-in的不足之处是:GIS插件与客户端、GIS数据类型密切相关,不同的GIS数据、不同的操作系统、不同的浏览器,需要不同的GIS插件;需要先下载Plug-in并安装到客户端的浏览器。

4.ActiveX

微软公司的ActiveX是一种对象链接与嵌入(Object Linking and Embedding, OLE)技术,可应用于互联网应用的开发。ActiveX的基础是分布式组件对象模型(Distributed Component Object Model,DCOM),DCOM本身并不是一种计算机编程语言,而是一种技术标准。DCOM和ActiveX具备构造各种GIS功能模块的能力,利用这些技术方法和与之相应的OLE、SDE(Spatial Database Engine,空间数据库引擎)技术方法相结合,可以开发出功能强大的WebGIS。

利用ActiveX构建WebGIS的优点是执行速度快。由于ActiveX可以用多种语言实现,这样可以复用原有GIS软件的源代码,提高软件开发效率。ActiveX的缺点是它目前只全面支持IE,只能运行在Windows上,需要下载,占用客户端的存储空间;由于可以进行磁盘操作,其安全性较差。

5.Java Applet

Java是Sun公司推出的基于网络应用开发的面向对象的计算机编程语言,具有跨平台、简单、动态性强、运行稳定、分布式、安全、容易移植等特点。Java程序有两种,一种像其他程序语言编写的程序一样可以独立运行;另一种被称为Java Applet,只能嵌入在HTML文件中,在网络浏览器下载HTML文件时,Java程序的源代码也同时被下载到客户端,由浏览器解释执行。

Java Applet的优点是:体系结构中立,与平台和操作系统无关;动态运行,无须在客户端预先安装;服务器和网络传输的负担轻,服务器仅需要提供GIS数据服务,网络只需要传输一次GIS数据;GIS操作的速度快。其不足之处是使用已有的GIS操作分析资源的能力弱,处理大型的GIS分析能力(空间分析等)的能力有限,无法与CGI相比;GIS数据分析结果的存储和网络资源的使用能力受到限制。

6.标记语言

最早的ArcIMS采用的是ArcXML标记语言,ArcIMS是以ArcXML为基础的地理信息表达和交换机制,提供了一个开放且可伸缩的互联网地理信息框架。后来相继出现的GML、VML、KML等WebGIS均属于这一技术方案。

7.Ajax

客户端完全使用JavaScript脚本,通过异步回调实现的WebGIS。

8.RIA(Rich Internet Applications)

RIA具有高度互动性、丰富用户体验,以及功能强大的客户端。RIA技术包括Adobe的Flex、微软的Silverlight、Sun的JavaFX。微软的Silverlight是一个跨浏览器和跨平台的插件,能在微软的.NET上交付炫目的多媒体体验和交互功能丰富的Web应用;JavaFX可以让用户利用Java运行环境(Java Runtime Environment, JRE)的一次编写、处处运行优势,在现有的技术上创建跨设备的应用。

2.7 Ajax简介

1.Ajax的概念

Ajax是一种用于创建动态网页的技术,在2005年由Jesse James Garrett提出,是一种用来描述使用现有技术集合的新方法,集合中包括HTML、CSS、JavaScript、DOM、XML和XMLHttpRequest等技术。

通过Ajax,网页应用能够通过与服务器进行少量的数据交换,快速地将增量更新呈现在用户界面上。Ajax可以使网页实现异步更新,这意味着可以在不重新加载(刷新)整个页面的情况下,对网页的局部进行更新,从而使程序能够更快地响应用户的操作。

Ajax技术包括以下内容:

(1)使用基于HTML/XHTML和CSS标准的表示方法呈现客户端元素。

(2)使用文档对象模型(DOM)呈现动态的页面内容。

(3)使用XML或JSON格式进行数据交换和操作。

(4)使用XMLHttpRequest完成客户端与服务器的异步交互。

(5)使用JavaScript绑定以上技术。

2.Ajax的工作原理

对于传统的Web应用程序,客户端与服务器之间的交互是同步交互。具体的交互过程为:客户端向服务器发送请求,服务器接收并处理请求,然后向客户端发送一个新的网页。同步方式的缺点是:

(1)由于交互过程中传输的是整个页面,而客户端接收到的页面和原有的页面中大部分HTML代码往往是相同的,因此造成网络带宽等资源的过度使用。

(2)由于客户端每次向服务器发送请求后必须等待服务器响应完成后才能进行下一步操作,且客户端在每次获取结果后都需要重新加载整个页面,严重降低了系统的响应速度。

在基于Ajax技术的Web应用程序中,客户端与服务器之间的交互为异步交互。通过Ajax技术,在传统的Web应用程序中增加了一个中间层(Ajax引擎),用来实现客户端操作与服务器响应的异步化。Ajax引擎其实就是一些由JavaScript代码构建的程序,首先通过调用XMLHttpRequest对象完成客户端与服务器的数据交互,然后利用DOM解析数据,并完成HTML页面内容的局部更新。在系统的运行过程中,当客户端提交交互请求时,系统首先将数据发送给Ajax引擎,然后通过Ajax引擎向服务器发送请求,此时用户并不需要等待服务器响应,可以继续别的操作,而网页也不会出现闪烁或消失现象;服务器处理客户端的交互请求后,Ajax引擎就会通过相应的程序来接收这些处理结果,将它们更新到页面指定位置,并不需要进行整个页面的更新,因此客户端会感觉交互过程立即完成的。传统Web应用程序模型和Ajax Web应用程序模型如图2.27所示。

图2.27 传统Web应用程序模型和Ajax Web应用程序模型

3.Ajax技术的特点

如前所述,传统Web应用程序会强制用户进入“提交—等待—重新显示”模式。在这种模式中,用户即使仅仅向服务器提交很少的信息,都需要中断操作,传输和刷新整个页面,这样会不可避免地增加网络的信息冗余,同时还会提高用户的等待时间,降低Web应用程序的执行效率和交互性。传统Web应用程序的交互过程如图2.28所示。

图2.28 传统Web应用程序的交互过程

通过Ajax技术,可以把用户从传统Web应用程序的“提交—等待—重新显示”模式中解脱出来。Ajax Web应用程序的交互过程如图2.29所示,用户通过Ajax引擎发出交互请求后,无须等待应答,Web浏览器继续显示同一页面并允许用户进行其他交互操作,而不会出现白屏现象。

图2.29 Ajax Web应用程序的交互过程

相对于传统Web技术,Ajax技术具有以下几点优势:

(1)有效减轻了服务器的负担:使用Ajax技术可以实现按需向服务器发送请求,而不用每次都发送整个页面,因此减轻了冗余请求,降低由于冗余请求对服务器的负担。

(2)改善了用户体验:当用户进行交互操作时,页面不会出现白屏情况,呈现给用户的依然是原来的页面,在交互完成后只对页面进行局部更新,更新过程非常短暂,用户几乎感觉不到延迟。

(3)降低了网络负担:Ajax技术采用的是按需发送请求的方式,在交互过程中不必每次都发送整个页面,减少了重复数据的传输,降低了网络负担,节约了带宽。

(4)促使页面表现与数据的分离:在基于Ajax技术的Web应用程序中,Ajax引擎只要从服务端获取相应的数据,便可进行Web页面的更新,这样就可以使服务器只进行数据逻辑处理,数据呈现的工作交给了Ajax引擎,这种分工合作方式减少了对页面修改造成的Web应用程序错误,提高了效率。

4.XMLHttpRequest

XMLHttpRequest是Ajax的核心技术,它是客户端与服务器异步交互的基础。通过XMLHttpRequest对象,用户可以不向服务器提交整个页面,只需要按需发送并接收请求,就可以实现页面的局部更新。XMLHttpRequest对象是客户端应用请求与服务器沟通的桥梁,通过该对象,客户端可以向服务器请求数据、从服务器接收数据、向服务器传送数据。代码如下:

2.8 HTML、CSS、JS简介

1.HTML

HTML的全称为超文本标记语言(Hyper Text Markup Language),是一种不需要编译,由浏览器直接执行的标记语言。HTML包括一系列标签,通过这些标签可以统一网络上的文档格式,使分散的互联网资源成为一个逻辑整体。HTML文件是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML文件由头部(Head)、主体(Body)两大部分组成,其中头部主要描述浏览器所需的信息,而主体则用于标记网页的具体内容。就HTML的发展而言,经历了从1.0到4.0,到XHTML,再到HTML5的过程。HTML的功能和标准都随着网络的发展在不断进步和完善,使其始终是Web网页开发不可或缺的要素。

2.HTML5

HTML5是由W3C与网页超文本技术工作小组(Web Hypertext Application Technology Working Group, WHATWG)共同制定的规范语言,其目的是使移动设备支持多媒体。相比旧版本的HTML,HTML5新增了很多媒体元素,如用于绘画的canvas元素、用于媒体回放的video和audio元素,以及表单控件等,HTML5 还能对本地离线存储提供更好的支持。HTML5正在改变现有Web应用程序的呈现、工作、使用方式。HTML5简化了程序员的工作,使访问多种多样的设备和应用程序更加方便,并且提供了很多新特性。

3.CSS

CSS是由W3C发布的,用来表现HTML或XML的标记语言,属于浏览器解释型语言,可以直接由浏览器执行,不需要编译。CSS是一种定义样式结构(如字体、颜色、位置等)的语言,用于描述网页上信息的格式和显示方式,CSS样式单中的样式形成一个层次结构,使用更具体的样式来覆盖通用样式。样式规则的优先级由CSS根据样式单决定,从而实现级联效果。CSS的样式可以直接存储在HTML网页或者单独的样式文件中,通过定义CSS样式可以让页面变得更美观。

采用HTML和CSS相结合方式进行Web页面开发,可以实现网页内容与样式的分离,网页的内容通过HTML定义,显示的样式完全由CSS控制。

4.CSS3

CSS3是CSS的升级版本,于1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案,主要包括盒子模型、列表模块、超链接方式、语言模块、背景和边框、文字特效、多栏布局等。

CSS演进的一个主要变化就是W3C决定将CSS3分成一系列模块。浏览器厂商按CSS节奏快速创新,CSS3 的元素能通过模块以不同速度向前发展,这是因为不同的浏览器厂商只支持给定特性。

5.JavaScript

JavaScript(简称JS)是一种具有函数优先的轻量级、解释型、即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但它也被用到了很多非浏览器环境中。JavaScript是基于原型编程、多范式的动态脚本语言,支持面向对象、命令式、声明式、函数式编程范式。

JavaScript是一种面向对象的网络脚本语言,通过JavaScript语言编写的程序可以直接在浏览器中解释执行,与浏览器的很多内建功能进行交互,因此被广泛用于Web客户端的开发。利用JavaScript语言可以定义应用的工作流和业务逻辑,也可以通过操作DOM实现数据的重新组织,同时还可以通过CSS修改页面样式,以及调用XMLHttpRequest对象实现与服务器的异步通信等。

6.ECMAScript 6.0

ECMAScript 6.0(简称ES6)是JavaScript语言的下一代标准,在2015年6月已正式发布。ES6对JavaScript语言的核心内容做了升级优化,规范了JavaScript的使用标准,新增了一些JavaScript原生方法,使得JavaScript更加规范、更加优雅,从而使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。目前并不是所有浏览器都兼容ES6的全部特性,但越来越多的实际项目已经开始使用ES6。

2.9 JSON、XML简介

1.JSON

JSON是一种轻量级的数据交换格式,具有良好的可读性和便于快速编写的特性,可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为,易于机器解析和生成。JSON的程序示例如下:

(1)JSON的主要规范如下:

① JSON文件包裹在大括号“{}”中,通过Key-Value的方式来表达数据。

② JSON的Key必须包裹在双引号中,忘了给Key加双引号或把双引号写成单引号是常见错误。

③ JSON的Value只能是以下几种数据格式:

数字:包含浮点数和整数。

字符串:需要包裹在双引号中。

布尔值:true或者false。

数组:需要包裹在方括号“[]”中。

对象,需要包裹在大括号“{}”中。

(2)JSON的特点如下:

① 数据格式简单,易于读写,编码简单。

② 格式都是压缩的,占用带宽小,传输效率高。

③ 易于解析,JavaScript内置的简单方法可进行JSON数据的读取和序列化。

④ 支持多种语言,包括C、C#、Java、JavaScript、PHP、Python、Ruby等,便于桌面端和服务器的解析。

⑤ JSON格式能够直接被服务器代码使用,简化了服务器和客户端的代码开发量,且易于维护。

2.XML

扩展标记语言(Extensible Markup Language, XML)是用于标记电子文件并使其具有结构性的标记语言,可以用来标记数据、定义数据类型,允许对标记语言进行定义。XML是标准通用标记语言,非常适合Web传输,它提供了统一的方法来描述和交换独立于应用程序或供应商的结构化数据,易于在任何应用程序中读/写数据,常用于接口调用、配置文件、数据存储等场景。XML的示例程序如下:

(1)XML的主要规范如下:

① 必须有声明语句。XML声明是XML文档的第一句,格式如下:

② 注意大小写。在XML文档中,大小写是有区别的,所以在写元素时,要注意前后标记的大小写要保持一致。建议全部大写、全部小写或首字母大写,这样可以减少因为大小写不匹配而产生的文档错误。

③ XML文档有且只有一个根元素。良好格式的XML文档必须有一个根元素(就是紧接着声明后面建立的第一个元素,其他元素都是这个根元素的子元素)。根元素的起始标记要放在其他元素的起始标记之前,根元素的结束标记要放在所有其他元素的结束标记之后。

④ 属性值使用引号。XML规定所有属性值必须加引号(可以是单引号,也可以是双引号,建议使用双引号),否则将被视为错误。

⑤ 所有的标记必须有相应的结束标记。在XML中所有标记必须成对出现,有一个开始标记,就必须有一个结束标记,否则将被视为错误。

⑥ 空标记也必须被关闭。空标记是指标记对之间没有内容的标记,如““””等标记。XML中规定所有的标记必须有结束标记。

(2)XML的特点如下:

① XML的格式统一,符合标准、规范的标签形式,可读性较好,对数据的描述更丰富。

② XML的描述比较丰富,因此XML的数据更加庞大,传输的数据量也更大。

③ XML结构需要考虑子节点、父节点的关联关系,编码和解码的复杂度高。

3.JSON和XML差异

JSON与XML都是一种远程数据传输交换格式。JSON是轻量级的,XML更具有结构性,因此XML的数据更加庞大,解析较为复杂,不易于维护;JSON的格式是压缩的,格式简单,占用的带宽较少,易于维护,但JSON对数据的描述性比XML差。尽管JSON和XML非常相似,但它们之间还是存在一些差异的,二者的对比如表2.4所示。

表2.4 JSON和XML的对比 2llcd0sGGpE4Sjxe8Vrixc1A6oZPDKv+BQb7KQNYpks8UGTAR/58qpd/UpJ/xPbM

点击中间区域
呼出菜单
上一章
目录
下一章
×