GIS-基于位置的空间信息服务LBS(7)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lling0309/article/details/102567873

Web Service关键技术

Web Service是由企业发布的为完成其特定应用需求的在线应用服务,其他应用软件能通过internet访问并使用这些在线服务,是一种构建应的操作系统应用程序的普通模型,允许在任何支持网络通信的操作系统中实施和允许。是一种自包含、自描述、模块化的应用,可以发布、定位并能够通过web调用。Web Service是一个应用组件,逻辑性地为其他应用程序提供相应的数据与服务。各个应用程序通过网络协议以及相关规定的标准数据格式来访问web Service,通过Web Service内部执行得到所需的结果。主要的关键技术包括XML、SOAP、WSDL和UDDI等

XML概念

XML:可扩展标记语言(Extensible Markup Language,XML)是Internet环境中跨平台的、依赖于内容的技术。

可以从以下几方面来理解XML

1.XML是一种类似于HTML的标记语言

2.XML是用来描述数据的

3.XML的标记不是在XML中预定义的,用户可以定义自己的标记

4.XML使用文档类型定义或模式来描述数据

XML特点

XML与HTML的简单区别在于:XML用来描述、存储数据,而HTML用来格式化和显示数据,XML特点如下:

1.简洁有效:简单、易学、易用,并容易实现

2.自描述性的:XML文档包含一个文档类型声明,所以XML文档

是自描述的,这样不但人能读懂XML文档,而且计算机也能处理。XML文档中的数据可被任何能够对xml数据进行解析的应用程序所提取、分析和处理,并按照格式显示。

3.灵活性:xml提供一种结构化的数据表示方式,使用户界面分离于结构化数据。既可以只关心数据的逻辑结果,也可以通过样式表等方式来格式化数据的表现,甚至可以用自己的个人样式表来显示各种不同的xml数据

4.高效可扩充:一方面允许使用者发明和使用自己的标签,同时可与他人共享,可延展性大。xml为其他可能出现的标准提供了坚实的基础

XML组成

3部分组成,文档类型定义(document Type Definition ,DTD),即XML的布局语言;可扩展的样式语言(Extensible style Language,XSL),即XML的样式表语言;以及可扩展链接语言(Extensible Link Language,XLL)

DTD

DTD规定了文档的逻辑结果,它可定义文档的语法,而文档的语法反过来也能够让XML语法分析程序确认页面标记使用的合法性。DTD定义了页面的元素、元素的属性及元素和属性间的关系,元素与元素间用起始标记和结束标记来定界。

也可以不使用DTD

例子:

带有 DTD 的 XML 文档实例

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>Don't forget the meeting!</body>
</note>

以上 DTD 解释如下:

!DOCTYPE note (第二行)定义此文档是 note 类型的文档。

!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"

!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型

!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型

!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型

!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型

XSL

用来规定xml文档样式的语言。XSL代表可扩展样式表语言,它是用来理解和样式化XML文档,它可以作为基于XML的样式表语言,就像CSS是基于HTML的样式表语言一样;它是一种标记语言,可以指定浏览器应该如何呈现XML文档。

任务1:编写XSL文件

编写一个名为books.xml文件

内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="books.xsl"?>

<books>

    <book>

        <name>Thinking in Java</name>

        <author>Bruce Eckel </author>

        <publisher>Prentice Hall</publisher>

        <publishyear>2006-2-20</publishyear>

        <pages>1150</pages>

    </book>

    <book>

        <name>Effective Java</name>

        <author>Joshua Bloch</author>

        <publisher>Addison-Wesley Professional</publisher>

        <publishyear>2001-6-05</publishyear>

        <pages>272</pages>

    </book>

    <book>

        <name>Head First Java</name>

        <author>Elisabeth Freeman</author>

        <publisher>O'Reilly Media</publisher>

        <publishyear>2004-11-1</publishyear>

        <pages>678</pages>

    </book>

</books>

注意:声明xml文件是<?xml version="1.0" encoding="UTF-8"?>,其中endcing="UTF-8"是编码格式。

          通过<?xml-stylesheet type="text/xsl" href="books.xsl"?>引入xsl样式表文件。

编写XSL样式表

创建一个名为books.xsl的文件,将books.xml文件转换成HTML格式。

内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">

        <html>

            <head>

               <title>编程书籍列表</title>

           </head>

           <body>

                   <h2>My books list</h2>

                   <table border="1" cellspacing="0" cellspadding="0">

                          <tr>

                                <th>Book</th>

                                <th>Author</th>

                                <th>Publisher</th>

                          </tr>

                          <xsl:for-each select="books/book">

                                <tr>

                                        <td><xsl:value-of select="name"/></td>

                                        <td><xsl:value-of select="author"/></td>

                                        <td><xsl:value-of select="publisher"/></td>

                                </tr>

                          </xsl:for-each>

                   </table>

             </body>

        </html>

    </xsl:template>

</xsl:stylesheet>

实现效果

                        
 

SOAP

简单对象访问协议(Simple Object Access Protocol,SOAP)是web service的通信协议,它描述了一种在分散的或分布式的环境中如何交换信息的轻量级协议。SOAP是一个基于XML的协议,所以使用SOAP可以在不同的计算机体系结构、不同的技术平台、不同的语言和不同的操作系统之间通信。

概念:规定了如何将程序数据表示为XML,以及如何使用SOAP进行远程过程调用。

REST

相对而言,SOAP协议属于复杂的、重量级的协议,当前随着Web2.0的兴起,表述性状态转移(Representational State Transfer,REST)逐步成为一个流行的架构风格。REST是一种轻量级的Web Service架构风格,其实现和操作比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST架构尤其适用于完全无状态的CRUD(Create、Read、Update、Delete,创建、读取、更新、删除)操作。

WSDL
概念

Web Service描述语言(Web Service Description Language,WSDL)是一个描述web Service功能的协议,是由微软和IBM联合开发的。WSDL描述了Web Service所采用的协议和格式

            

类型:数据类型定义的容器,定义了在web service中使用的所有xml元素的名字、类型等其他信息。

消息:通信消息的数据结构的抽象类型化定义。

操作:对服务所支持的操作的抽象描述

端口类型:对于某个访问入口点类型所支持的一个web Service、可被执行的操作的抽象几何,这些操作可以由一个或多个服务访问点来支持。

绑定:特定端口类型的具体协议和数据格式规范的绑定,为每个端口定义消息格式和协议细节

端口:定义为协议/数据格式绑定与具体web访问地址组合的单个服务访问点。

服务:相关服务访问点的集合

UDDI

UDDI是一种用于描述、发现、集成Web Service的技术,它是Web Service协议栈的一个重要部分。通过UDDI,企业可以根据自己的需要动态查找并使用Web服务,也可以将自己的Web服务动态地发布到UDDI注册中心,供其他用户使用。编写

任务:

1.编写helloworld的web service,并查看生成的WSDL文件

参考网址:https://www.cnblogs.com/LYF1997/p/7880553.html

2.调用该web service,仿照上节课的内容

3.利用百度地图web服务API获取辽宁工程技术大学北校区(阜新市细河区玉龙路88号)的经纬度坐标

参考网址:http://lbsyun.baidu.com/index.php?title=webapi

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        private const String BAIDU_APP_KEY = "ia3FiNM1dlGm2uOnLbXko8PMIO7CyCHc";
        private const String a = "阜新市细河区玉龙路88号";


        static void Main(string[] args)
        {
            WebClient client = new WebClient();
            string json = client.DownloadString("http://api.map.baidu.com/geocoder?address=" + a + "&output=json&key=" + BAIDU_APP_KEY);
            client.Encoding = UTF8Encoding.UTF8;
            Console.WriteLine(json);
            Console.ReadKey();
        }
    }
}

实现效果

猜你喜欢

转载自blog.csdn.net/lling0309/article/details/102567873