您好,欢迎访问三七文档
本章主要介绍SuperMapiServer以客户端开发工具包SuperMapiClientforJavaScript的主要特点,以及进行客户端开发需要的基本知识。1REST介绍REST:表述状态转移(RepresentionalStateTransfer),是RoyThomasFielding(HTTP规范的主要编写者之一)博士在2000年他的博士论文中提出来的一种软件架构风格,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。REST并不是一个标准,而是通过表述(Representional)来描述传输状态的一种原则。其宗旨是从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表述。获得这些表述致使这些应用程序转变了其状态。随着不断获取资源的表述,客户端应用不断地在转变着其状态。目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC相对比,更加简洁,越来越多的Web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。1.1REST的原则要理解RESTful架构,最好的方法就是去理解RepresentationalStateTransfer这个词组到底是什么意思,它的每一个词代表了什么涵义。1、REST的名称“表述性状态转化”中,省略了主语。“表述性”其实指的是“资源”(Resources)的“表述性”。所谓“资源”,就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。所谓上网,就是与互联网上一系列的资源互动,调用它的URI2、表述:Representation,资源是一种信息实体,它可以有多种外在表现形式。我们把资源具体呈现出来的形式,叫做它的Representation。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。3、状态转化(StateTransfer);互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转化”(StateTransfer)。而这种转化是建立在表述之上的,所以就是“表述状态转化。4、CRUD:客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。即CRUD(增加create,查询Retrieve,更新update,删除delete)5、无状态通信:首先,需要着重强调的是,虽然REST包含无状态性(statelessness)的观念,但这并不是说暴露功能的应用不能有状态——事实上,在大部分情况下这会导致整个做法没有任何用处。REST要求状态要么被放入资源状态中,要么保存在客户端上。或者换句话说,服务器端不能保持除了单次请求之外的,任何与其通信的客户端的通信状态。这样做的最直接的理由就是可伸缩性——如果服务器需要保持客户端状态,那么大量的客户端交互会严重影响服务器的内存可用空间(footprint)。(注意,要做到无状态通信往往需要需要一些重新设计——不能简单地将一些session状态绑缚在URI上,然后就宣称这个应用是RESTful。)但除此以外,其它方面可能显得更为重要:无状态约束使服务器的变化对客户端是不可见的,因为在两次连续的请求中,客户端并不依赖于同一台服务器。一个客户端从某台服务器上收到一份包含链接的文档,当它要做一些处理时,这台服务器宕掉了,可能是硬盘坏掉而被拿去修理,可能是软件需要升级重启——如果这个客户端访问了从这台服务器接收的链接,它不会察觉到后台的服务器已经改变了。1.2REST的特点REST是一种架构,而不是一个规范。在REST架构中,服务器是无状态的,也就是说服务器不会保存任何与客户端的会话状态信息。所有的状态信息只能放在双方沟通的Message(消息)中。REST架构是幂等的,对于相同的请求,服务器返回的结果也是相同的,因此服务器端返回的结果是可以缓存的,既可以存在客户端也可以存在代理服务器端。REST是一种典型的Client-Server架构,但是强调瘦服务器端,服务器端只应该处理跟数据有关的操作,所有有关显示的工作都应该放在客户端。2JavaScript开发基础什么是JavaScript:简单的说它是一种运行在客户端的脚本语言,结构简单,使用方便,其代码可以直接放入HTML文档中,可以直接在支持JavaScript的浏览器中运行。JavaScript使得网页制作的交互性更强,更生动和灵活。当在浏览网页时做了某种操作就产生一个事件,JavaScript所编写的程序对相应的事件做出反应。JavaScript语言的特点1)脚本编写语言--基于对象的语言JavaScript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个简易的开发过程。它的基本结构形式与C、C++、VB、Delphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起,从而方便用户的使用操作。JavaScript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。2)简单性JavaScript的简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计,从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。3)安全性JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。4)动态性JavaScript是动态的,它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(HomePage)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。5)跨平台性JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。从而实现了“编写一次,走遍天下”的梦想。实际上JavaScript最杰出之处在于可以用很小的程序做大量的事。无须有高性能的电脑,软件仅需一个字处理软件及一浏览器,无须WEB服务器通道,通过自己的电脑即可完成所有的事情。综合所述JavaScript是一种新的描述语言,它可以被箝入到HTML的文件之中。JavaScript语言可以做到回应使用者的需求事件(如:form的输入),而不用任何的网路来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给伺服端(server)处理,再传回来的过程,而直接可以被客户端(client)的应用程式所处理。3JSON介绍JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。JSON语法规则JSON语法是JavaScript对象表示语法的子集。数据在名称/值对中,例如:firstName:John“JSON值:可以是数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true或false)、数组(在方括号中)、对象(在花括号中)、NullJSON的结构JSON简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。1)对象:对象在js中表示为“,-”括起来的内容,数据结构为{key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。2)数组:数组在js中是中括号“*+”括起来的内容,数据结构为[java,javascript,vb,...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。经过对象、数组2种结构就可以组合成复杂的数据结构了。3.1JSON格式应用掌握了JSON格式之后,在JavaScript中使用它就很简单了。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。1)赋值给变量例如本页代码,可以创建一个新的JavaScript变量,然后将JSON格式的数据字符串直接赋值给它varpeople={programmers:[{firstName:Brett,lastName:McLaughlin,email:aaaa},{firstName:Jason,lastName:Hunter,email:bbbb}]};3.1JSON格式应用2)访问数据如前页所示,尽管看起来不明显,但是上面的长字符串实际上只是一个数组;将这个数组放进JavaScript变量之后,就可以很轻松地访问它。实际上,只需用点号表示法来表示数组元素。所以,要想访问programmers列表的第一个条目的姓氏,只需在JavaScript中使用下面这样的代码:people.programmers[0].lastName;注意,数组索引是从零开始的。所以,这行代码首先访问people变量中的数据;然后移动到称为programmers的条目,再移动到第一个记录([0]);最后,访问lastName键的值。结果是字符串值“McLaughlin”。利用这样的语法,可以处理任何JSON格式的数据,而不需要使用任何额外的JavaScript工具包或API。4SuperMapiServer服务式GIS平台介绍SuperMapiServer是超图软件开发的一款服务式GIS开发平台,该产品通过服务的方式,面向网络客户端提供与专业GIS桌面产品相同功能的GIS服务;能够管理、发布和无缝聚合多源服务,包括REST服务、OGC服务(WMS、WMTS、WFS、WCS、WPS、CSW)等;支持多种类型客户端访问;支持分布式环境下的数据管理、编辑和分析等GIS功能;提供从客户端到服务器端的多层次扩展的面向服务GIS的开发框架。4.1iServer服务能力SuperMapiServer默认提供7种类型的服务,分别是地图服务,数据服务,交通网络分析服务,空间分析服务,交通换乘分析服务,三维服务和三维分析服务。每一种类型的服务具备一定的GIS功能运算能力。4.1.1地图服务SuperMapiServer发布的地图服务,能够对GIS数据进行如下功能操作:1、地图操作:如地图浏览、缩放、平移等2、专题图制作:将GIS数据的专题信息上图,通过多种类型的专题图,如单值专题图,点密度专题图等对专题数据
本文标题:01-开发基础
链接地址:https://www.777doc.com/doc-6265406 .html