zoukankan      html  css  js  c++  java
  • 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、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; 
          }
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      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())));
          }
      • 1
      • 2
      • 3
      • 4
      • 5

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

      运行结果

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

       
  • 相关阅读:
    Karma: 3
    Karma:2. 集成 Karma 和 mocha 进行单元测试
    Android Eclipseproject开发中的常见调试问题(二)android.os.NetworkOnMainThreadException 异常的解决的方法
    CSDN日报20170226——《你离心想事成仅仅差一个计划》
    重装linuxserver简易流程
    移动端 h5开发相关内容总结——CSS篇
    Oracle学习笔记(6)——函数
    Spark学习
    Android教你怎样一步步打造通用适配器
    C语言学习
  • 原文地址:https://www.cnblogs.com/hyshareex/p/9370565.html
Copyright © 2011-2022 走看看