zoukankan      html  css  js  c++  java
  • Web Service及其构成

    Web Service是什么

    简单来说Web Service就是在Web上提供的一套数据API,是基于SOAP协议的,主要用于解耦和重用。

    资料都在说Web Service用到三种技术或规则:WSDL、SOAP、UDDI。撇开枯燥的定义我的理解就是:

    WSDL文档对Web Servvice的功能以及访问细节进行文档描述,然后寄存在UDDI容器(比如IIS、TOMCAT等WEB服务器),客户端通过SOAP协议与服务器进行通讯。

    • WSDL:Web Service描述语言,提供详细的接口说明;
    • SOAP:简单对象访问协议,它是在HTTP协议基础上一个基于XML的协议,负责Web Service通讯;
    • UDDI:注册中心,服务提供者需发布服务到注册中心,客户使用服务需到注册中心查询并发现服务;

    WSDL结构

    WSDL的构成,为了方便理解可以分为WHAT、HOW、WHERE,如下图

    WHAT部分:

    1. 端口类型(接口)定义
      端口类型(Port type)的定义是一个Web服务合约的基石。可以把端口想象成一个入口场所。一个Web服务合约可以拥有一个或多个端口“类型”。每个端口类型本质上代表一个技术接口或接入点。其实把“端口类型定义”称作“接口定义”会更容易理解点。
    2. 操作定义
      一个Web服务想要被另一个程序所使用,它就需要暴露可以被外部消费的能力或功能。这些能力或功能就被称为操作,并且被表示为操作定义(operation definition)。一个端口类型可以作为相关操作集合的容器。
    3. 消息定义
      当一个Web服务被通过它的一个操作调用的时候,消费者程序需要与之交换数据,才能使该Web服务可以执行所请求的功能。消息地鞥一(message definition)本质上就建立了数据进行传输的一个“迷你结构”。
      存在如下3种类型的消息定义:
      • 输入(Input):由一个消费者程序发送到Web服务的消息,输入参数;
      • 输出(Output):由Web服务发送到消费者程序的消息,输出参数;
      • 故障(Fault):由Web服务发送到消费者程序的出错通知消息,异常信息;
    4. 类型定义
      一个给定的输入、输出或故障消息需要拥有一个预先定义的数据结构。这就像JAVA、.NET里的数据类型是相似的,但这些数据类型是与语言平台无关的。数据类型是由XML Schema文档来定义的,XML Schema既可以在WSDL文档直接定义也可以试用import引入。

    HOW部分:

    1. 端口类型绑定描述
      用来详细描述可以被消费者程序来调用以及同Web服务交互的通信技术。
      端口类型(接口)定义可以同一个或多个绑定定义进行关联,每一个绑定定义都包含下面两条信息:
      • 消息协议绑定(Messaging Protocol Binding):定义一种技术或产业标准(消息协议),用来指定在发送者打包以及接收者解包时需要遵循的消息格式;
      • 传输协议绑定(Transport Protocol Binding):定义在网络中消息应当被如何传输的通信技术(传输协议);
    2. 操作绑定定义
      操作绑定定义(operating binding definition)表示与端口类型绑定的类型相同的绑定定义,唯一的区别是它只和操作相关。如果操作并没有指定该绑定,那么它会从他的上层端口类型继承绑定的位置。
    3. 消息绑定定义
      与操作绑定类似,消息绑定定义(Message binding definition)同样表示一种细粒度的绑定定义,而在这里是同某个输入、输出或故障消息相关的。如果消息相关的绑定没有被提供,那么消息就会从它的上层操作或它的上层端口类型(如果操作绑定也不存在的话)来继承绑定位置。

    WHERE部分:

    1. 服务定义
      服务定义(service definition)就是简单地把相关的端口(端点)定义组合起来。
    2. 端口(端点)定义
      每个绑定定义都需要同一个端口定义(prot definition,有时也被称为端点定义)相关联,它仅仅是作为地址定义的一个容器。同一端口定义可以被不同的端口类型、操作或消息绑定定义所使用。
    3. 地址定义
      地址定义(address definition)会建立一个物理网络地址。基于用来访问该地址定义的端口类型,操作、或消息绑定所定义的通信技术(传输协议)不同,实际的地址可以是Web URL、邮件地址或是某种其他类型的传输相关地址。

    WSDL实例

    使用.net建立Web Service,接口如下:

    /// <summary>
    /// Summary description for Service1
    /// </summary>
    [WebService(Namespace = "http://oseye.net/test/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {
    
        [WebMethod]
        public string SayHello(string name,int age)
        {
            return "Hello ,My name is "+name+".I'm "+age;
        }
    }

    在浏览器中预览如下图:

    点击服务说明,打开WSDL描述如下图:


    出处:http://www.zhaiqianfeng.com    
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    CodingSouls团队-个人博客(八)
    CodingSouls团队-个人博客(七 )
    vuedraggable
    idea创建springboot(脚手架创建)
    线上环境解决nginx访问laravel除了根目录全是404的问题
    前端使用工具网站
    阿里云内容协作平台(ccp)的基本使用
    photoshop CS6修改启动界面
    laravel 增强代码提示功能插件(barryvdh / laravel-ide-helper)
    laravel代码调试工具(laravel/telescope)
  • 原文地址:https://www.cnblogs.com/zhaiqianfeng/p/4617708.html
Copyright © 2011-2022 走看看