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

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

说完WebGIS,看看Web Service

LBS应用服务需要高效的信息整合模型,实现这种模型首选的技术平台则是Web Service

近几年,internet的迅猛发展使其成为全球信息传递与共享的巨大的资料库。越来越多的的网络环境下的Web应用系统被建立起来,利用HTML、CGI等Web技术可以轻松地在internet环境下实现电子商务、电子政务等多种应用。然而这些应用可能分布在不同的地理位置,使用不同的数据组织形式和操作系统平台,加上应用不同所造成的的数据不一致性,使得如何将这些高度分布的数据集中起来并得以充分利用成为急需解决的问题。

随着网络技术,网络运行理念的发展,人们提出一种新的利用网络进行应用集成的解决方案——Web Service。

Web Service,就是基于Web的服务。它使用Web方式,接收和响应外部系统的某种请求。例如,我们可以提供一个用于查询天气信息的Web Service,然后可以用任何支持Web Servicede 客户端连接到这个Service进行查询,因此,直观来讲Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API,调用这个Web service的应用程序称为客户。

在工作模式上,基于HTTP传输协议,主要使用xml格式进行数据交换。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成网页。

可以把Web Service看作是web服务器上的应用,而web服务器看作是web Service运行时所必需的容器。

1.Web Service定义

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

百度地图的web服务API:http://lbsyun.baidu.com/index.php?title=webapi

2.Web Service特点:

互操作性

Web Service通过Soap实现相互访问,任意两个Web Service之间都可以进行交互,不需要不同协议之间的相互转换。Web Service能用任何语言编写,在调用时也不必考虑Web service是用何种语言进行编写的。

松散耦合

源于对象,组件技术,一个Web service的内部实现即便是发生变更,调用者也感觉不到。对于调用者来说,只要web service的调用接口没有变化,Web Service所做的任何更改,对调用者来说都是透明的,

使用标准协议规范

作为web service,其所有公共的协约使用的都是完全开放的标准协议进行描述、传输和交换。与一般对象相比,其界面调用比较规范化,使得机器更易于理解。这些协议都是完全免费的规范,所以任意一方都可以进行实现。

高度可靠的集成能力

采用的是简单的,易理解的标准web协议作为组件界面描述和协同描述规范,完全屏蔽了不同软件平台相互之间的差异。

跨防火墙通信

在三层架构-客户端、逻辑中间层和数据库服务器中,位于中间层的web service完全可以直接使用像.net这样的soap客户端,同样也可以调用自己开发的soap客户端,把它和应用程序连接起来。这样不仅缩短了开发周期,还可以减少代码复杂度,增强应用程序的可维护性。

软件和数据重用

web service不仅可以重用代码,也可以重用代码背后的数据。使用web service的用户不需要从第三方购买,安装软件组件,再在应用程序中调用这些组件,而只要直接调用远端的web service或把几个应用程序的功能集成起来就可以了。使用web service可以把软件和各个组件整合一起,为使用者提供一个统一,友好的界面。

在以下情况下最好不要使用web service

单机应用程序

局域网的一些应用程序

3.web service应用

开发环境

VS2019

任务:

写个web service查询天气预报

步骤

1.新建winform窗体应用程序

2.添加web 引用,网址如下:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

3.添加控件

4.添加调用天气预报服务代码,获取省份列表

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                cn.com.webxml.www.WeatherWebService mWeatherWebService = new cn.com.webxml.www.WeatherWebService();
                string[] mCity = mWeatherWebService.getSupportCity(comboBox1.Text);

                int mCount = mCity.Length - 1;

                comboBox2.Items.Clear();
                for (int mI = 0; mI <= mCount; mI++)
                {
                    comboBox2.Items.Add(mCity[mI].Remove(mCity[mI].IndexOf("(")));

                }
                comboBox2.SelectedIndex = 0;
            }
            catch
            {

            }

        }
 


5.根据所选择的省份显示城市列表

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                cn.com.webxml.www.WeatherWebService mWeatherWebService = new cn.com.webxml.www.WeatherWebService();
                string[] mCity = mWeatherWebService.getSupportCity(comboBox1.Text);

                int mCount = mCity.Length - 1;

                comboBox2.Items.Clear();
                for (int mI = 0; mI <= mCount; mI++)
                {
                    comboBox2.Items.Add(mCity[mI].Remove(mCity[mI].IndexOf("(")));

                }
                comboBox2.SelectedIndex = 0;
            }
            catch
            {

            }

        }

6.根据所选择城市显示天气信息

 private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string[] WeatherOfCity = GetWeather(comboBox2.Items[comboBox2.SelectedIndex].ToString());

                label1.Text = WeatherOfCity[0].ToString();
                label2.Text = WeatherOfCity[1].ToString();
                label3.Text = WeatherOfCity[10].ToString();

                //今天
              
                label4.Text = WeatherOfCity[6].ToString() + WeatherOfCity[5].ToString() + WeatherOfCity[7].ToString();
                label5.Text = WeatherOfCity[11].ToString();

                //明天
                
                label6.Text = WeatherOfCity[13].ToString() + WeatherOfCity[12].ToString() + WeatherOfCity[14].ToString();

                //后天
               
                label7.Text = WeatherOfCity[18].ToString() + WeatherOfCity[17].ToString() + WeatherOfCity[19].ToString();

                //城市说明及图片
                
                label8.Text = WeatherOfCity[22].ToString();

                //预计时间
                label9.Text = "预报时间:" + WeatherOfCity[4].ToString();

            }
            catch
            {

            }
        }

7.效果如图

猜你喜欢

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