WebGIS之OpenLayers全面解析(txt+pdf+epub+mobi电子书下载)


发布时间:2021-02-11 23:13:43

点击下载

作者:郭明强

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

WebGIS之OpenLayers全面解析

WebGIS之OpenLayers全面解析试读:

前言

WebGIS先后经历了从JavaScript到RIA,再从RIA到JavaScript的发展过程,近年来,基于RIA的WebGIS开发技术已逐渐淡出,WebGIS传统的JavaScript开发方式又开始流行起来,ArcGIS、MapGIS、SuperMap等各大WebGIS平台产品也已将产品研发重心转移到JavaScript上。OpenLayers作为业内使用最为广泛的地图引擎之一,已被各大GIS厂商和广大WebGIS二次开发者采用。借助OpenLayers强大的扩展功能,可以实现与各个不同的WebGIS平台产品(如ArcGIS Server、MapGIS IGServer、SuperMap iServer、GeoServer等)相结合,开发出各具特色的WebGIS应用系统。因此,一旦掌握了OpenLayers客户端WebGIS开发技术,便可快速的实现与任何一种WebGIS服务平台的对接。本书针对OpenLayers的WebGIS开发从基础到高级功能进行了详细全面的讲解,目的就是为了给广大读者提供一本能够指导基于OpenLayers的WebGIS开发的参考书籍。

自2006年在武汉中地数码开始从事WebGIS平台产品的研发工作以来,我先后开发过WebGIS服务器、JavaScript版本WebGIS客户端、Flex版本WebGIS客户端、Silverlight版本WebGIS客户端。在近10年来的WebGIS研发工作中,我体会到了做平台产品不能“闭关锁国”、“闭门造车”,要以一种开放共享的态度来做一个WebGIS平台,这样才能够在WebGIS领域立足。而OpenLayers与我的想法不谋而合,借助OpenLayers的开放特性和强大的扩展功能,我们可以基于它扩展各个WebGIS平台的插件,这样我们就能做到多个插件、一个系统,去对接多个WebGIS服务平台,避免了WebGIS客户端功能扩展难,难以与各个不同的WebGIS服务平台(如ArcGIS Server、MapGIS IGServer、SuperMap iServer、GeoServer、Google Map、百度地图、天地图等)融合的难题,这是我撰写本书的主要动因,希望本书能够给WebGIS开发好爱者提供参考。

我在中国地质大学(武汉)信息工程学院主讲“网络GIS”课程,学生在这门课程的上机实践中难以选择某个WebGIS平台进行学习,因为不同的GIS厂商各自提供的WebGIS客户端开发库都大相径庭,学习难度大,难以短时间内快速入门并掌握。在这种现状的推动下,进一步促使了我下定决心,把自己多年来在WebGIS开发方面积累的经验撰写成书,将获得业界认可的开放的OpenLayers开发指导书提供给广大学生,让开设GIS专业的高校学生能够基于此书快速的了解、学习并掌握WebGIS,而不用受不同WebGIS平台的限制。希望本书能够为高校学生的产学研、专业技能学习、创新创业、毕业设计等起到一定的指导和帮助作用。

高校GIS二次开发大赛是高校学生锻炼和学习的最佳环境,虽然我指导的学生在第五届、第六届、第七届高校GIS技能大赛中都获得了很好的成绩,第六届和第七届连续斩获特等奖,但是还有很多学生因为WebGIS学习难度大,缺乏一本能够快速学习并接入自己原来熟悉的某个WebGIS平台的开发指导书籍,限制了各种GIS二次开发大赛的进入门槛。为了增加学生的自信心,降低他们的入门门槛,本书对OpenLayers开发技术进行了详细全面的讲解,内容由浅入深,配以丰富的程序示例,一旦他们快速学习并掌握了OpenLayers开发技术,则能够快速地将其与之前自己熟悉的WebGIS平台相结合,高效地开发出自己的WebGIS系统。希望本书的推出能够增强参加各类GIS大赛的学生的自信心,并指导学生快速地了解、熟悉并掌握WebGIS,提高项目实践动手能力。

在近10年来的WebGIS项目开发实践中,目前WebGIS系统已从单一的WebGIS平台向多源异构方向发展,越来越多的系统需要在一套系统中使用来自不同GIS厂商的数据,调用不同GIS厂商提供的GIS服务,这给WebGIS系统的可扩展性提出了极高的要求,而目前主流的OpenLayers刚好能够很好地解决这一难题,使得其已被广大WebGIS程序爱好者作为首选的WebGIS客户端。在这个形势驱动下,促使我下定决心,顺势推出一本全方位讲解OpenLayers开发的技术参考书籍,希望能够提供给广大WebGIS程序爱好者提供参考。郭明强中国地质大学(武汉) 讲师 博士后武汉中地数码科技有限公司WebGIS产品研发经理 高级工程师第1章概述1.1 什么是GIS

地理信息系统(Geographic Information System,GIS)是一种特定的十分重要的空间信息系统,它是在计算机软硬件系统的支持下,以采集、存储、管理、检索、分析和描述空间物体的定位分布及与之相关的属性数据,并以回答用户的问题为主要任务的计算机系统。

任何事物都有时空属性,都与空间信息相关,地理信息无处不在。GIS以空间数据为基础,航天、地面、地表、地下等都是GIS所研究的领域。我们在工作和生活中所接触到的各种地图制图工具及在线地图产品,如百度地图、Google地图等,仅仅是GIS的冰山一角。其实,GIS从最初的地图制图发展至今,已广泛应用于国土、气象、矿产、农林、市政等专业领域,以处理和分析各个行业面临的业务问题并辅助其进行决策。

GIS究竟能做什么呢?

以大众应用为例。GIS首先就是用于收集地理信息,人类的绝大部分活动都与地理位置有关,比如想和朋友找个餐厅吃饭,周末想找个电影院看电影,到一个陌生的城市出差找宾馆……这些都涉及地理信息。通过GIS能有效地把这些信息都存储起来,怎么存呢?用Excel吗?那怎么和地图关联起来?文本文件或数据库都可以,我们只要按要求把信息录入就可以了。收集到的地理信息,在电脑中只是一堆表格数据,那怎么为人们所看到呢?这就是所谓的“可视化”了,各种图表是信息可视化的产物,那地理信息可视化的产物就是“地图”,当然地图远比GIS出现得要早,这位前辈是GIS重要的代言人,GIS可以方便地将收集到的信息展示在地图上。而空间分析其实离我们也并不遥远,像大众点评这样的应用已经相当普及,我们可以很方便地找到周边的餐馆。还有地图导航,通过GPS装置收集你的地理位置之后,在地图上找到正确的位置显示,再进一步的实现查询、搜索等功能。

上述仅仅是GIS在大众应用中的一个缩影。GIS发展至今,紧跟IT相关技术的步伐,从单机桌面工具到互联网Web在线应用,再到移动端便携应用;在各类应用需求的驱动下,从简单的制图到二维GIS应用,从2.5D到3D的进步,甚至全空间真三维的突破……GIS在短短几十年中迅速发展、蜕变,GIS应用渗透到各行各业,分别在横向与纵向逐步扩大应用的广度和深度,成为我们创建智慧城市和智慧地球的中坚力量。1.2 什么是WebGIS

WebGIS(网络地理信息系统)是指基于Internet平台,客户端应用软件采用网络协议,运用在Internet上的地理信息系统,即将GIS这门学科所能提供的功能通过互联网展现给用户。顾名思义,WebGIS就是展现于网络上的GIS,是GIS与Web融合的产物。GIS通过Web功能得以扩展,使得GIS冲破专业圈子,真正成为大众化的GIS。如今,网络已成为日常生活中不可或缺的工具,人们可以在网上订餐、购物、查找路线信息、实现定位分析等。地理信息已普及大众,越来越多的人开始使用地理信息服务,享受地理信息所带来的便利与乐趣。

随着技术的不断发展,GIS经历了单机应用向网络应用发展的过程。从本世纪开始, Internet进入了爆发式增长阶段,网络的铺设以及网速的提升都有了大幅度增加,这为WebGIS的发展提供了坚实的大环境。网络环境中的GIS应用从C/S(Client/Server,客户机/服务器)模式向Internet环境下的B/S(Browser/Server,浏览器/服务器)模式发展,并逐步成为GIS应用的主流。相比C/S模式,B/S模式的WebGIS具有部署方便、使用简单、便于推广等天然优势,为地理信息服务的发展奠定了基础。于是,WebGIS应用需求剧增,基于B/S模式的GIS系统越来越多地开始提供服务,并且随着RIA(富客户端)技术、Ajax(动态网页)技术的涌现和成熟,WebGIS具有更好的视觉效果与交互效果,越来越受到广大用户的喜爱。

网络的大发展为人类创造了极大的物质财富和精神财富,手指轻轻一点便可轻易获取各种信息资源。互联网与GIS的融合,成为GIS应用的催化剂,标志着GIS迎来一个新的时代, GIS真正走向大众化,GIS应用全面融入人们的工作与生活,并彰显出巨大的活力。WebGIS激活了GIS大众应用的市场,互联网早已敏锐地嗅到了商机,大量资本与外界力量进驻WebGIS,互联网巨头纷纷跨界布局地图领域,Google地图、百度地图等服务提供商的大规模扩张便是最好的证明。同时,移动互联网进入爆发增长期,移动互联网成功的关键是为用户提供优质便捷的生活服务,地图则是实现移动端增值服务的最佳入口。因此,当移动互联网遇上无处不在的地理信息位置服务,LBS应用市场需求旺盛,移动端必将涌现出更多意想不到的特色应用。随着终端定位能力、网络及资费等外部条件的成熟,位置服务可能会在很多应用上成为标配,更有希望基于位置信息维度重新组织互联网上的海量信息,创新地理信息价值。如今,GIS早已融入人们的日常生活,网络在线地图不再限于导航,人们可以通过地图快速获取周围的景点、餐馆信息,甚至能在同一种应用中实现订餐、订房、支付等一站式服务。有了移动互联网的支撑,地图所承载的应用会更加丰富、多元化,WebGIS的应用将会更加宽泛和深入。

随着新互联网技术的发展,广义网络GIS被赋予了更多的内容。我们所讨论的WebGIS通常为狭义的网络GIS,即仅仅是基于B/S模式,并通过Web浏览器访问的WebGIS。WebGIS的应用非常广泛,可以应用到几乎所有的领域,主要分为行业应用与大众应用。行业应用通常为传统专业领域的应用,如地矿、国土、公安、市政、应急防灾等领域;大众应用则主要为互联网方向服务于人们日常生活的GIS应用,诸如百度地图等网络地图产品(见图1.1),以及旅游、餐饮、购物、公交出行等各类WebGIS应用系统。而公众接触最多的也就是这些大众应用类产品,只是很多时候我们并不清楚这些就是WebGIS应用而已。图1.1 百度地图等在线地图

得益于互联网的发展,WebGIS快速发展前进,开发工具与平台也呈现出百花齐放之势。目前,涌现出大量用于WebGIS二次开发的产品,主要包括开放API、开源与商业WebGIS开发平台等。互联网方向,有百度地图API、天地图API、高德地图API、腾讯地图API、Google地图API等;行业应用方向,有很多诸如GeoServer的开源WebGIS平台,还有中地数码、超图、Esri等GIS厂商提供的专业WebGIS开发平台产品,如MapGIS IGServer、ArcGIS for Server等相关产品。1.3 常见的开源WebGIS平台

WebGIS市场需求旺盛,更多的人开始关注WebGIS应用,很多开发者投身于GISer大军,催生了众多开源GIS项目,推动WebGIS的普及,如表1.1所示。表1.1 部分开源GIS项目列表类型开源GIS项目说明主要用于制图,即在桌面QGIS、uDig、GRASS桌面工具端加载数据并对数据进行编辑GeoServer基于J2EE框GeoServer、MapServer、服务器架,MapServer核心部分基于GeodjangoC语言PostGIS/PostgreSQL、数据库主要用于存储空间数据MySQL SpatialQGIS、OpenLayers、客户端作为客户端开发框架OpenScales、WorldkitJTS、GEOS(几何拓扑操作库)、Shapely、GDAL/OGR 工具集(栅格矢量数据操作库)、Proj4(地图投影库)GeoTools是一款基于Java的开源GIS工具集,允许用户对地理数据进行基本操GeoTools、MapTools中间件作。空间分析功能一般基于中间件实现,或基于OGC WP S实现

1.uDig

uDig是一个开源的桌面应用程序框架(见图1.2),是构建在Eclipse RCP和GeoTools(一个开源的Java GIS工具包)上的桌面GIS。uDig作为一款开源桌面GIS软件,基于Java和Eclipse平台,可以进行shp格式地图文件的编辑和查看;是一个开源空间数据查看器与编辑器,对OpenGIS标准、WebGIS、网络地图服务器和网络功能服务器有特别的加强。图1.2 uDig界面

2.QGIS

QGIS是一个用户界面友好的桌面GIS,可运行在Linux、UNIX、Mac OSX和Windows等平台之上。QGIS是基于Qt(跨平台的图形工具软件包),使用C++语言开发的一个用户界面友好、跨平台的开源版桌面地理信息系统,如图1.3所示。图1.3 QGIS界面

3.GeoServer

GeoServer是OpenGIS Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对数据进行更新、删除、插入操作,通过GeoServer可以比较容易地在用户之间迅速共享地理信息。GeoServer是社区开源项目,可以直接通过社区网站(如中文社区网站http://www.opengeo.cn/)下载相关资料,如图1.4所示。

GeoServer支持OGC标准规范的系列服务,支持PostgreSQL、MySQL等数据库,以及ArcSDE、Shapefile等中间件和文件资源,能够将网络地图输出为JPEG、PNG、KML等多种图片和数据格式,可以运行在任何基于J2EE/Servlet的容器之上,支持多种客户端框架,如OpenLayers等。

4.MapServer

MapServer是美国明尼苏达大学(University of Mi nnesota,UMN)在20世纪90年代利用C语言开发的开源WebGIS项目。图1.4 GeoServer界面

MapServer是一套基于胖服务器端/瘦客户端模式的实时地图发布系统,客户端发送数据请求时,服务器端实时地处理空间数据,并将生成的数据发送给客户端。MapServer的核心部分是C语言编写的地图操作模块,它的许多功能都依赖一些开源或免费的库。MapServer遵循OGC系列规范,可以集成PostGIS和开源数据库PostgreSQL,并对地理空间数据进行存储和SQL查询操作,同时还支持其他客户端API实现地理空间数据的传输与表达。

5.OpenLayers

OpenLayers是一个专为WebGIS客户端开发提供的JavaScript类库包,用于实现地图数据的网络访问。它访问地理空间数据的方法都符合行业标准,支持各种公开的和私有的数据标准和资源。OpenLayers采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。

OpenLayers是一个开源的项目,其设计之意是为互联网客户端提供强大的地图展示功能,包括地图数据显示与相关操作,具有灵活的扩展机制。目前,OpenLayers已经成为一个拥有众多开发者和帮助社区的成熟、流行的框架。目前OpenLayers 2已经升级为OpenLayers 3,可以从其官方网站(http://openLayers.org/)下载相关资源,如图1.5所示。图1.5 OpenLayers官网

6.OpenScaIes

OpenScales是一个基于Flex的优秀的前台地图框架,可以用来开发各种网络版、手机版和桌面版地图程序。

OpenScales是基于ActionScript 3和Flex编写的,能够支持各种标准的地图服务,如WMS、WFS、WMTS、OSM等。它是开源的、免费的客户端开发框架,基于LGPL开源协议,它在FlashPlayer中运行,可以在各个浏览器中使用,具有很好的跨平台特性。OpenScales作为一个开源的GIS客户端框架,具有非常大的应用潜力,可以从其官方网站(http://www.openscales.org/)下载相关资源,如图1.6所示。图1.6 Op enScaIes官网

OpenScales可以看成对OpenLayers的ActionScript翻译,所以在学习OpenScales时可以适当参考OpenLayers的官方教程。相比之下,虽然OpenLayers的教程也是英文的,不过非常详细,提供的示例也远比OpenScales的官方教程丰富。

针对WebGIS应用开发,最具代表性的开源GIS项目有:服务器端为GeoServer与MapServer,客户端为OpenLayers与OpenScales。总的来说,GeoServer的功能要稍强于MapServer,MapServer对WMS的支持更高效,GeoServer则更擅长符合WFS规范的属性查询。

由于不同的GIS开源项目所采用的技术框架不同,根据开发环境可以将主流的WebGIS开源解决方案分成两派,一派是C/C++,另一派是Java。常用的WebGIS全套解决方案如下。(1)基于C/C++的解决方案:MapServer(服务器)+QGIS(桌面软件)+Tomcat(中间件)+PostGIS/MySQL(空间数据库)+OpenLayers(JS)/OpenScales(Flex)(浏览器客户端)。(2)基于Java的解决方案:GeoServer(服务器)+uDig(桌面软件)+Tomcat(中间件)+PostGIS/MySQL(空间数据库)+OpenLayers(JS)/OpenScales(Flex)(浏览器客户端)。

采用开源WebGIS平台进行二次开发,一般需要从客户端、服务器端、数据层三个方面进行设计和实现。(1)客户端:可以选择使用OpenLayers、OpenScales等开源框架,也可以结合互联网方向的在线地图API(即百度地图API等)。(2)服务器端:使用最具代表性的GeoServer或MapServer作为地理信息服务器,基于服务器发布地图数据服务(如OGC的WMS、WFS、WCS等),Web应用程序则通过HTTP请求访问服务器发布的服务。若设计简单的大众化WebGIS应用,可以不使用服务器端开源GIS平台,直接访问第三方提供的数据服务,或者直接使用存储在关系数据库中的POI数据。(3)数据层:数据源可使用公共在线地图服务(如百度地图、天地图、Google地图等,一般将其作为底图),或者GIS服务器发布的地图服务数据,以及开放格式的文件数据等。针对空间数据的存储,一般可选择开源的空间数据库,如使用PostgreSQL作为关系数据库,用其扩展模块PostGIS存储空间数据。

尽管这些开源GIS项目为开发者提供了很多二次开发资源,给广大GISer带来了便利,但只能满足一部分WebGIS开发需求,更多地面向大众应用。目前,GIS开源项目的不足主要表现在:对底图处理能力不足,对空间数据的管理能力不足,空间分析能力较弱,无法实现一体化的系统构建与应用等。针对开源GIS项目的不足,往往需要借助专业的WebGIS开发平台,以满足更多的应用需求。第2章WebGIS开发基础2.1 Web开发基础理论2.1.1 B/S体系架构

Web软件开发通常使用B/S(Browser/Server,浏览器/服务器)架构,这是Web兴起后的一种网络结构模式,是目前网络软件开发的主流趋势。

B/S模式采用开放式的客户/服务器结构,其基本结构一般包括Web服务器、Web页面、Web浏览器和HTTP通信协议等部分,如图2.1所示。HTTP是基于客户/服务器模型的信息传输方式,原意为“请求/响应模型”,即网页文件存放在Web服务器上,客户端以Web浏览器为媒介,通过程序向Web服务器发出请求并访问相应的网页。基于B/S模式的Web应用,一般都是将Web应用程序安装部署在服务器端,客户端直接通过网页浏览器访问Web应用,如网络上常见的门户网站、论坛、商城等。图2.1 Web基本结构

Web应用的经典多层架构为表现层、业务逻辑层、数据访问层、数据源。对应于Web的多层结构,从物理角度划分,依次为数据服务器、Web服务器、客户端(浏览器)三个核心构件,如图2.2所示,其中,Web应用程序主要分为Web客户端与Web服务器端,即通常说的Web前台与Web后台。Web客户端通常指表现层,Web服务器端包括业务逻辑层与数据访问层,目前使用Web Service(Web服务)封装系统业务逻辑功能与数据操作功能已成为主流趋势。整个Web系统开发完成后,将编译后的Web应用程序部署在Web服务器,数据库则部署在数据服务器,用户通过客户端的网页浏览器进行访问。图2.2 Web系统逻辑结构(1)表现层(UI):使用者与整个系统的交互场所。通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见即所得。(2)业务逻辑层(BLL):与系统所对应的业务(领域)逻辑有关,关注于业务规则的制定、业务流程的实现等。业务逻辑层扮演两个不同的角色,对于数据访问层而言是调用者;对于表示层而言,是被调用者。业务逻辑层可以使用Web Service的模式实现。(3)数据访问层(DAL):该层直接操作数据库,主要负责数据库的访问,实现对数据表的Select、Insert、Update、Delete操作。同样可以使用基于Web Service的服务进行封装实现。

分层的Web系统架构设计具有很多优势:开发人员可以只关注整个结构中的其中一层,可以很容易地用新的实现来替换原有的实现,可以降低层与层之间的依赖,有利于标准化和各层逻辑的复用等。基于多层结构设计的Web系统,具备良好的数据兼容性、可移植性,维护方便。随着Web技术的发展,为解决共享难、复用差、跨平台难、业务混乱等诸多应用系统建设问题,Web Service技术应运而生,基于Web Service的服务模式成为Web应用的主流趋势。Web应用也趋向于前后端分离,由此衍生出了Web前端开发与Web后台开发这两种不同类别的技术。

在Web发展过程中,用户需求和技术进步是推动架构进步的原动力。一个Web应用系统在系统架构设计中,要切实满足当前用户需求,同时也要考虑灵活性,因此,Web系统架构的扩展性非常关键。如果每次需求变化都要对系统架构做出重大改动,那么这无疑是一个失败的系统设计。2.1.2 客户端技术

Web前端开发技术包括网页开发技术、客户端交互实现技术等内容。Web前端开发技术的三要素为HTML、CSS和JavaScript,但随着RIA(富客户端)的流行与普及,Flash(Flex)、Silverlight等也非常受欢迎。随着技术的发展,Web前端开发技术的三要素已经演变为现今的HTML5、CSS3和jQuery。

1.HTML

HTML(Hypertext Markup Language)即超文本标记语言,是用于描述网页文档的一种标记语言。它通过在用户文档中加入特定的控制字符或命令,使文档能够按照用户期望的格式输出。HTML语言主要用于客户端的页面设计。HTML作为Internet上通行无阻的语言,简单易用且功能强大,支持不同数据格式的文件嵌入,具有简易性、可扩展性、平台无关性等特点。

HTML文档是使用HTML语言编写的文本文件,扩展名为.htm或.html,用于定义Web页面的内容与显示格式。HTML文档包含文档内容与HTML标记(Tag)两部分,HTML标记基本上是成对出现的,即由一个开始标记和一个结束标记组成。

随着Web技术的发展与应用,HTML不断丰富和规范,形成相应的各个版本。HTML5的第一份正式草案已于2008年1月22日公布,目前仍处于发展阶段,但大部分浏览器已经支持某些HTML5技术。HTML5有两大特点:首先,它强化了Web网页的表现性能;其次,它追加了本地数据库等Web应用的功能。广义论及HTML5时,实际指的是包括HTML、CSS和JavaScript在内的一套技术组合。它希望能够减少浏览器对于需要插件的富互联网应用(RIA)的需求,并提供更多的能有效增强网络应用功能的标准集。

2.CSS

CSS(Cascading Style Sheet)即级联样式表,通常又称为“风格样式表(Style Sheet)”,我们用它来进行网页的风格设计,即显示HTML或XML等文件的样式。比如,如果想让超链接的文字未点击时是蓝色的,当鼠标移上去后文字变成红色的且有下画线,这就是一种风格。通过设置级联样式表,可以统一地控制HTML中各标签的显示样式,能够更有效地控制网页外观。CSS具有精确指定网页元素位置、外观以及创建特殊效果的能力。

有三种方法可以在网页上使用样式表:外部样式、内页样式、行内样式。如果网页链接到外部样式表,为网页所创建的内嵌的或嵌入式样式将扩充或覆盖外部样式表中的指定属性。在设计Web界面时,通常采用CSS+DIV的页面布局方式。与传统的Table布局方式相比, CSS+DIV方式具有代码精简、易重构、网页访问速度快、浏览器兼容性好、搜索引擎优化等特点。

CSS目前最新版本为CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体、字号,拥有对网页对象精确访问的能力,并能够进行初步交互设计,是目前基于文本展示的最优秀的表现设计语言。HTML5也兼容CSS3,使得其应用更加广泛。

3.JavaScript

JavaScript语言的前身为LiveScript。Netscape与Sun合作之后,引进了Java的程序设计思想,将其改名为JavaScript。之所以取名为JavaScript,原因在于JavaScript是一种嵌入HTML文档的、基于对象的语言,语法同Java语言很相似,而且JavaScript的设计使它很容易同Java语言一同工作,还可以充分支持Java的Applet小应用程序。目前,几乎所有浏览器都支持JavaScript语言。

JavaScript是一种通用的、基于原型的、面向对象的语言,属于解释型语言,它的设计目标是在不占用很多系统和网络资源的情况下提供一种可以嵌入不同应用程序的通用代码。它不需要依赖于特定的机器和操作系统,独立于操作平台。

JavaScript语言主要用于创建具有动态性、交互性的Web页面,有如下几个特点。(1)简单性:JavaScript语句可以直接嵌入到HTML文档中,其语句的解析执行由Web浏览器负责,不需要额外的开发环境。(2)基于对象:JavaScript采用面向对象的编程方法,通过设置属性和调用方法来实现所需要的功能。(3)事件驱动:JavaScript采用事件驱动方式,可以对用户的鼠标单击、移动窗口、菜单选择等事件产生响应。(4)平台无关性:JavaScript语言的运行依赖于Web浏览器,与操作系统环境无关。只要客户机能运行支持JavaScript的Web浏览器,就可以运行嵌入了JavaScript的Web页面。(5)安全性:JavaScript语言是通过Web浏览器处理的,不能修改其文件内容。因此,当Web浏览器浏览嵌入了JavaScript的Web页面时,用户无须担心JavaScript会被删除或修改。同时,没有服务器端程序的协同,JavaScript不能在服务器上打开文件或存储信息。

JavaScript功能强大,且非常灵活。如果了解了其特性与适用场合,便能运用自如。JavaScript主要适用于交互式用户界面设计、动态更新页面信息、数据校验、通过Ajax异步访问服务器提取数据等。鉴于JavaScript的优良特性,业界很多个人或组织投入研究与应用,涌现出大量优秀的JavaScript开源框架和插件,让Web开发事半功倍。基于这些开源框架和插件,HTML+CSS+JavaScript的Web应用具有丰富的交互体验效果,可以与Flex、Silverlight等富客户端应用媲美,获得更多Web开发人员的青睐。因此,HTML5+CSS3+JavaScript已成为目前Web前端开发使用最为广泛的主流方式,本教程也基于此开发方式展开介绍。

4.FIex

Flex通常指Adobe Flex,基于其专有的Macromedia Flash平台,它涵盖了支持RIA(Rich Internet Applications)的开发和部署的一系列技术。Flex作为RIA开发的主流方式之一,应用较广。Flex是基于组件的开源开发框架,它使用MXML与ActionScript语言构建富客户端应用系统。其应用系统编译后生成Flash文件,通过Flash Player插件运行,兼容性非常好。Flex继承了Flash在表现层得天独厚的优势,其丰富的交互性和视觉效果吸引了越来越多的Web开发者。

5.SiIverIight

Silverlight是一种融合了微软的多种技术的Web呈现技术,也是RIA开发的主流方式之一。Silverlight提供了一套开发框架,为开发设计人员提供了一个统一的开发应用模型,基于XAML进行交互,使具有不同背景知识的开发设计人员能够更好的协作,高效地创造出能在Windows和Macintosh上运行的内容丰富、界面绚丽的Web应用程序。

6.其他相关技术

另外,基于HTML+CSS+JavaScript的Web客户端开发,通常会涉及XML、DOM、AJAX等相关技术。(1)XML(Extensible Markup Language),可扩展标记语言,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换结构化数据,它与HTML的设计区别是:XML的核心是数据,其重点是数据的内容;而HTML被设计用来显示数据,其重点是数据的显示。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的一种公共语言。(2)DOM(Document Object Model),即文档对象模型,是表示文档(如HTML和XML)和访问、操作构成文档的各种元素的应用程序接口(API)。DOM是JavaScript与页面交互的一种方式,它能够动态修改文档中的节点、元素、属性等。支持JavaScript的所有浏览器一般都支持DOM。在DOM下,HTML文档中的各个节点被视为各种类型的Node对象,每个Node对象都有自己的属性和方法,利用这些属性和方法可以遍历整个文档树。(3)Ajax是Asynchronous JavaScript and XML的缩写。Ajax并不是一门新的语言或技术,它实际上是几种技术按一定的方式组合在一起,在共同协作中发挥各自的作用。Ajax的一个最大的特点是无须刷新页面便可向服务器传输或读写数据(又称为无刷新更新页面),这一特点主要得益于XMLHTTP组件XMLHttpRequest对象,它是一种支持异步请求的技术。只同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作提交给服务器来做,这样既减轻了服务器的负担又加快了响应速度、缩短了用户等待时间。

7.开源框架与插件

随着JavaScript和相关技术在Web开发中的广泛应用,出现了很多JavaScript开源框架,即JavaScript库。其中,jQuery是目前最流行的JavaScript库。jQuery是一个轻量级的js库,兼容CSS3与各种浏览器,它简化了 HTML 与JavaScript之间的操作,使用户能更方便地处理HTML documents、events、实现动画效果,并且可以很方便地为网站提供Ajax交互。除了jQuery之外,还有大量优秀的JavaScript框架和插件,如Prototype、ExtJS、MooTools、Dojo、YUI等。(1)Prototype:是一个致力于简化动态Web应用程序开发、独特的、易用的工具库和最好的Ajax库。(2)ExtJS:是一个用于创建前端用户界面,与后台技术无关的前端Ajax框架,主要用来开发RIA富客户端Ajax应用,具有强大的UI,而且性能不错。(3)MooTools:是一个模块化的、面向对象的JavaScript框架,适合中高级JavaScript开发人员。(4)Dojo:其强大的核心使Web开发更加敏捷,它拥有出色的UI工具库,号称Unbeatable JavaScript Tools,适合企业应用和产品开发,背后有IBM、Sun、BEA等厂商的强大支持。(5)YUI:是Yahoo公司推出的开源JavaScript框架,用于快速开发交互性强、更加稳健的Web应用。

在实际应用中选用这些框架与插件,可以大幅提高开发效率、强化Web应用,使Web前端开发人员更加得心应手。

由于有了WebKit和HTML5的支持,很多Web开发厂商开始转向基于移动设备的Web应用框架,推出了一些移动应用的JavaScript框架:如Yahoo Y UI3.2的Touch版、jQuery的jQueryMobile、ExtJS整合JQTouch,以及Raphael推出的Sencha Touch框架等。2.1.3 服务端技术

Web服务端开发技术,一直以来主要分为两大不同派系:.NET与Java。.NET为微软提供的框架,可以使用ASP.NET进行动态网页开发,后台使用C#语言实现;基于Java技术进行Web应用开发,则主要用J2EE平台体系,使用JSP进行动态网页开发,后台使用Java语言实现。除此之外,还有CGI、PHP、Python等技术。

随着Web Service的兴起,越来越多的人喜欢用Web Service技术,基于面向服务的模式构建Web应用,解决系统集成、异构平台协作、资源共享等问题。Web Service这项技术只有通过日益广泛的应用才能体现出其价值,比较流行的方法是使用.NET和Java两种技术,并且两种实现方法可以进行互操作。

1..NET

基于.NET的Web开发是指使用微软的.NET框架进行开发。.NET框架(.NET Framework)是一个致力于敏捷软件开发、快速应用开发、平台无关性和网络透明化的软件开发平台,它包含很多有助于互联网和内部网应用迅捷开发的技术。

.NET框架是一个多语言组件开发和执行环境,它提供了一个跨语言的统一编程环境。.NET框架的目的是便于开发人员更容易地建立Web应用程序和Web服务,使得Internet上的各应用程序之间,可以使用Web服务进行沟通。从层次结构来看,.NET框架又包括三个主要组成部分:公共语言运行时(CLR)、服务框架(Services Framework),以及上层的两类应用模板—传统的Windows应用程序模板(Win Forms)和基于ASP NET的面向Web的网络应用程序模板(Web Forms和Web Services),如图2.3所示。.NET开发框架在通用语言运行时的基础上,给开发者提供了完善的基础类库、高效的数据库访问技术ADO.NET、网络开发技术ASP.NET等,开发者可以使用多种语言及Visual Studio.NET来快速构建网络应用。

基于.NET的Web开发,我们可以使用成熟且规范的.NET开发框架,遵循.NET技术标准,以便快速开发各种Web应用系统。目前,基于.NET开发框架的Web应用,Web服务器端通常采用C#语言实现系统业务逻辑,或者使用C#语言编写实现系统功能的Web服务;客户端则使用ASP.NET中的相关控件,并结合HTML、CSS、JavaScript等进行开发。

2.Java

基于Java的Web开发,即使用Java技术开发Web应用程序。Java是一种可以编写跨平台应用软件的面向对象的程序设计语言,是由Sun公司推出的Java程序设计语言和Java平台的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,被广泛应用于各个领域。在全球云计算和移动互联网的产业环境下,Java具有更显著的优势和广阔的应用前景。图2.3 .NET框架图

Java编程语言的风格十分接近C、C++语言,它继承了C++语言面向对象技术的核心,是纯面向对象的程序设计语言。Java不同于一般编译执行或解释执行的计算机语言,它首先将源代码编译成二进制字节码,然后依赖于各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处运行”的跨平台特性。

Java平台由Java虚拟机和Java应用编程接口(API)构成。在硬件或操作系统中安装一个Java平台之后,即可运行Java应用程序。Java平台主要分为三个体系,即J2SE(Java2 Platform Standard Edition,Java平台标准版)、J2ME(Java 2 Platform Micro Edition,Java平台微型版)、J2EE(Java 2 Platform Enterprise Edition,Java平台企业版)。J2EE可以帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。J2EE提供Web服务、组件模型、管理和通信API,通常用来实现企业级的面向服务的体系架构和Web应用程序。

J2EE使用多层的分布式应用模型,如图2.4所示,应用逻辑按功能划分为组件,各个应用组件根据它们所在层分布在不同的机器上。该模型通常分四层来实现,也可以按三层来划分,分别如下。(1)客户层:运行在客户计算机上的组件。(2)Web层与业务层:运行在J2EE服务器上的组件。(3)企业信息系统层(EIS):是指运行在EIS服务器上的软件系统,通常为数据库系统等。图2.4 J2E E体系结构

在J2EE的分层应用模型中,客户层组件包括Web方式与桌面应用方式(即应用程序客户端),Web方式通常采用HTML+CSS+JavaScript等技术实现动态网页;而Web层与业务层均位于J2EE服务器,Web层组件可以是JSP页面或Servlet等,业务逻辑层则是对行业应用的业务逻辑进行处理,通常由运行在业务层上的Enterprise Bean完成;对企业EIS层的数据操作,一般通过JDBC等技术来实现。目前,在业务层与数据存储层之间,一般都会增加一个数据持久层,以此来完成业务层与数据存储层的衔接。基于Java的Web开发,通常会综合采用已有的优秀框架构建Web项目,如目前流行的Hibernate、Struts、Spring等框架,既能提高系统开发效率,也便于系统更新维护。

目前常用的Java平台基于Java 1.5,最新版本为甲骨文收购后推出的Java 1.7。Sun公司在推出Java之际就将其作为一种开放的技术,全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。正因如此,Java技术得以广泛应用,开枝散叶,成为主流的程序开发技术。

3.Web Service

随着网络技术、网络运行理念的发展,人们提出一种新的利用网络进行应用集成的解决方案—Web Service。Web Service成为构造分布式、模块化应用程序的最新技术和发展趋势。

所谓Web S ervice(Web服务),是指那种自包含、自描述、模块化的应用程序,这类应用程序能够被发布、定位,并通过Web实现动态地调用。从表面上看,Web服务向外界暴露出一个能够通过Web进行调用的API,你能够用编程的方法通过Web来任意调用这个API,即使用这个应用程序。Web服务主要是为了使原来各自孤立的站点之间的信息能够相互通信、共享而提出的一种接口。Web服务所实现的功能,可以是从简单请求到复杂业务过程的任意功能。一旦一个Web服务被配置完毕,其他的应用程序,包括其他Web服务就能够发现并调用该服务。因此,利用Web服务技术,可以很好地实现服务在Web层次的互操作,并实现服务的整合。

Web服务是基于XML和HTTP的一种服务,如图2.5所示,其通信协议主要基于SOAP,服务的描述采用WSDL,通过UDDI来发现和获得服务的元数据。其中,XML为表示数据的基本格式,Web服务基于XML标准表示结构化数据,并进行数据的传输与交换。图2.5 Web Service体系(1)XML。XML标准是一个基于文本的、遵循W3C规范的标记语言。与HTML使用标签来描述外观和数据不同,XML严格地定义了可移植的结构化数据,它可以作为定义数据描述的语言,如标记语法、词汇、交换格式和通信协议。XML是Web服务中表示数据的基本格式,既与平台无关,也与厂商无关。(2)SOAP。最初为简单对象访问协议(Simple Object Access Protocol),是一个基于XML的、用于在分布式环境下交换信息的轻量级协议,它被设计成在Web上交换结构化的和固化的信息。SOAP在请求者和提供者之间定义了一个通信协议,这样在面向对象的编程环境中,请求者可以在提供者的对象上执行远程方法调用。SOAP的优点在于它完全和厂商无关,与平台、操作系统、目标模型和编程语言之间是互相独立的。(3)WSDL。Web服务描述语言WSDL(Web Services Description Language)是一个提供描述服务方法的XML词汇,用于描述Web Service及其函数、参数和返回值。WSDL规范定义了一个XML词汇表,该词汇表依照请求和响应消息,在服务请求者和服务提供者之间定义了一种契约。我们可以将Web服务定义为软件,这个软件通过描述SOAP消息接口的WSDL文档来提供可重用的应用程序功能,并使用标准的传输协议来进行消息传递。(4)UDDI。UDDI(Universal Description, Discovery and Inte gration,通用描述、发现和集成)协议向Web 服务注册中心定义SOAP接口。如果您有一段代码希望作为Web服务部署,UDDI规范定义了如何将您的服务描述添加至注册中心;如果您在寻找一段提供某种功能的代码,UDDI规范定义了如何查询注册中心以找到您想要的信息。

Web Service技术能够很好地克服异构系统之间平台、语言、协议的差异,实现无缝、松耦合的系统集成。其突出的优点表现在几个方面:实现异构平台间的互通、实现更广泛的软件复用、具有更强大的通信能力。

如今,Web服务已得到广泛的应用,很多Web应用都使用了Web S ervice技术,采用面向服务(如SOA)的架构设计。Web Service主要有SOAP与REST两种形式。(1)基于SOAP的Web Service:即SOAP协议方式。SOAP是在分布式环境中交换信息的简单协议,以XML作为数据传送方式,采用的通信协议可以是HTTP/HTTPS协议,也可以是SMTP/POP3协议,或为一些应用专门设计的特殊通信协议。通常,SOAP被简单理解为SOAP=RPC+HTTP+XML,即SOAP采用HTTP和XML协议,HTTP用于实现其RPC风格的传输,而XML是其编码格式。基于SOAP的Web Service,一般通过服务代理类进行调用。(2)REST风格的Web Service:表述性状态转移(Representational State Transfer,REST)在Web领域已经得到了广泛的接受,它是基于SOAP和WSDL的Web Service的更为简单的替代方法。REST风格的Web Service是一组非常便于理解的URL,它将互联网上的一切都表示为资源,对函数的调用均被转化为对资源的HTTP请求。基于REST风格的Web Service,可直接通过浏览器调用,即基于HTTP协议进行通信,服务端返回XML、JSON(JavaScript Object Notation)等格式数据。

针对REST的特性,可以在JavaScript中大量使用REST风格的Web S ervice,以请求资源的JSON表示形式,并快速将其转化为JavaScript对象,而无须使用传统的服务端开发方式实现。REST服务结合JavaScript的纯客户端开发方式将大幅度降低工程复杂度与代码量,凸显了REST架构设计的优势。目前,大部分Web开发者选用REST服务方案,简单易用,更为灵活。基于SOAP的Web Service功能强大、全面,虽然使用较为复杂,但SOAP作为一个工业标准,具备规范的协议和统一的访问规则,也被应用于很多大型和小型Web系统中,仍然是Web服务应用的重要角色。对于Web开发者来说,目前上述两种方式都是行之有效的方案。基于REST和SOAP的Web服务

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载