WebService 工作原理及实例教程

一、WebService到底是什么?

先来看下标准的定义:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

其实,一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

还可以从多个角度来理解WebService,从表面看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

二、WebService平台技术

SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)三者构成了WebService的三要素。下面,详细阐述这三大技术:
* #### SOAP
WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。
SOAP协议组成:
SOAP协议 = HTTP协议 + XML数据格式
SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。

  • WSDL

    好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。
    WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。

  • UDDI

    UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

三、WebService调用原理

WebService调用原理.png

实现一个完整的Web服务工作流程:
  • Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册;

  • Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;

  • Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;

  • 利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;

  • Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。

四、WebService实例教程

以.Net创建WebService服务为例:
1. 启动VisualStudio(本教程用VisualStudio2017为例),新建网站项目;

新建网站项目

2.选择新建ASP.NET 空网站,点击“确定”,继续;

新建ASP.NET 空网站

3.点击新建的项目名称 右键–>添加–>添加新项;

选择添加新项

4.在添加新项列表中选择Web服务(ASMX),点击“确定”, 继续;

选择Web服务(ASMX)

5.在webservice.cs中添加自定义测试功能代码;

添加自定义测试功能

    //自定义测试功能
    [WebMethod(Description = "返回两数之和")]
    public int GetSum(int a, int b)
    {
        return a + b; 
    }

6.我们开始运行一下WebService.asmx文件;

运行一下WebService.asmx文件

如果运行的效果和上面的截图一致,那么你的WebService运行正确,现在记住这个服务地址(即浏览器中的地址)。接下来,我们一起看看在ASP.NET网站中如何调用这个服务呢?

我们,继续!

7.和第二步一样,新建一个空网站项目;

8.点击新建的项目名称 右键–>添加–>添加新项,在添加新项列表中选择Web窗体,点击“确定”, 继续;

新建Web窗体

9.在新建的Add.aspx页面中 ,在工具箱中拖出三个控件:textbox1,textbox2,label分别用来显示 整数a,整数b,计算的和用label显示。

添加控件

那么,如何添加Web服务呢?

10.选中你的网站项目,右键–>添加服务引用;

添加服务引用

11.将你的服务地址(教程中的第六步)复制到地址栏中,点击“转到”—>打开服务“WebService”—>点击“确定”按钮,同时留意命名空间;

添加服务

12.添加服务后,如果你的目录结构是这样的,那么你成功添加服务了!

目录

13.我们在Add.aspx中添加一个按钮控件,并在对应的Add.aspx.cs文件中添加对应业务逻辑,实例化创建一个服务对象:

    protected void Button1_Click(object sender, EventArgs e)
    {
        ServiceReference1.WebServiceSoap ws = new ServiceReference1.WebServiceSoapClient();
        Label1.Text = Convert.ToString(ws.GetSum(Convert.ToInt32(TextBox1.Text.Trim()), Convert.ToInt32(TextBox2.Text.Trim())));
    }

14.现在运行我们的Add.aspx页面:

运行结果

运行两个数,点击“调用WebService按钮”,输出结果为3,我们成功啦!!

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页