• 基础拾遗------webservice详解


    基础拾遗

    基础拾遗------特性详解

    基础拾遗------webservice详解

    基础拾遗------redis详解

    基础拾遗------反射详解

    基础拾遗------委托详解

    基础拾遗------接口详解

    基础拾遗------泛型详解

    基础拾遗-----依赖注入

    基础拾遗-----数据注解与验证

    基础拾遗-----mongoDB操作

    基础拾遗----RabbitMQ

    基础拾遗---CLR

    前言

      工作当中常用的服务接口有三个wcf,webservice和webapi.首先第一个接触的就是webservice,今天大致总结一下。

    1.webservice概念相关

    1.1.Web Service也叫XML Web Service WebService

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

    1.2.XML:(Extensible Markup Language)扩展型可标记语言。

      面向短期的临时数据处理、面向万维网络,是Soap的基础。它被设计的宗旨是描述数据(XML),而非显示数据(HTML)。后面单独博客进行详细介绍。

    1.3.Soap:(Simple Object Access Protocol)简单对象存取协议。

      是XML Web Service 的通信协议。其指导理念是“唯一一个没有发明任何新技术的技术”。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的 调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

    <?xml version="1.0"?>
    <soap:Envelope
    xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
    soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
     
    <soap:Header>
      <m:Trans xmlns:m="http://www.w3schools.com/transaction/"
      soap:mustUnderstand="1">234
      </m:Trans>
    </soap:Header>
     
     
    <soap:Body>
      <m:GetPrice xmlns:m="http://www.w3schools.com/prices">
        <m:Item>Apples</m:Item>
      </m:GetPrice>
    </soap:Body>
    </soap:Envelope>

    1.4.WSDL:(Web Services Description Language) Web服务描述语言

      WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

    • Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。
    • Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。
    • Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。
    • PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
    • Binding - 特定端口类型的具体协议和数据格式规范的绑定。
    • Port - 定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。
    • Service- 相关服务访问点的集合。WSDL文档元素的结构图
    • WSDL 描述了 Web服务的三个基本属性:

      (1)服务所提供的操作

      (2)如何访问服务

      (3)服务位于何处(通过 URL 来确定就 OK 了)

    1.5.UDDI (Universal Description, Discovery, and Integration)

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

    2. .net webservice

      上面的理论知识就算您不清楚,想要使用webservice还是没有任何难度的,不信您往下看。

    2.1.创建webservice(vs2013)

      2.1.1.新建一个webservice项目(文件->新建->项目->C#->Web服务应用程序)

      建完这个工程,我们将看到一个叫ServiceDome.asmx的文件,就先常见webfrom一样它类似与aspx,我们直接打开cs代码文件即可,asmx文件至今没考虑过他有什么用.如果你什么都还没做的话,将看见一个被注释掉的helloworld的WebMethod,把注释去掉,在运行,你就可以得 到最简单的webservice运行实例了.点击"helloworld"将执行其方法.显然,这个函数对我们的意义只在于宏观的了解了下web服务的写 法.

      2.1.2.WebMethodAttribute详解

    [WebMethod(Description="备注信息")]   
      public string HelloWorld()   
      {   
       return "Hello World";   
      } 

      如上,WebMethodAttribute此特性是表示可以从远程 Web 客户端调用该方法。

      其中WebMethod包括以下6个属性

      (1)Description: 

        是对webservice方法描述的信息。就像webservice方法的功能注释,可以让调用者看见的注释。

      (2).EnableSession:

        指示webservice否启动session标志,主要通过cookie完成的,默认false。

    public static int i=0;
    [WebMethod(EnableSession=true)]
    public int Count()
    {
    i=i+1;
    
    return i;
    } 

      如上Count()回和保存的session类似把信息保留下来。

      (3)MessageName:

        主要实现方法重载后的重命名.

    [WebMethod]
    public int Add(int i, int j) {
    return i + j;
    }
    [WebMethod(MessageName="Add2")]
    public int Add(int i, int j, int k) {
    return i + j + k;
    }
    } 

      (4).TransactionOption:

        指示 XML Web services 方法的事务支持。

      (5).CacheDuration:

        Web支持输出高速缓存,这样webservice就不需要执行多遍,可以提高访问效率,而CacheDuration就是指定缓存时间的属性。

    public static int i=0;
    [WebMethod(EnableSession=true,CacheDuration=30)]
    public int Count()
    {
    i=i+1;
    return i;
    }

      (6).BufferResponse:

        配置WebService方法是否等到响应被完全缓冲完,才发送信息给请求端。普通应用要等完全被缓冲完才被发送的!只有当已知 XML Web services 方法将大量数据返回到客户端时,才需要将 BufferResponse 设置为 false。对于少量数据,将 BufferResponse 设置为 true 可提高 XML Web services 的性能。当 BufferResponse 为 false 时,将对 XML Web services 方法禁用 SOAP 扩展名。

    2.2.实现webservice

      特性说完就要说我们的webserviece服务接口的实现了,其实对于他的实现和我们实现一个类没有太大的区别。、

            [WebMethod]
            public string SynCardToDreams(int start, int end)
            {
                try
                {
                    DateTime begin = DateTime.Now;
                    UserSignService userService = new UserSignService();
                    bool ret = userService.SynChroCardToDreams(start, end);
                    DateTime endTime = DateTime.Now;
                    double total = (endTime - begin).TotalMinutes;
                    string retmsg = ret ? "同步成功" : "同步失败";
                    return "本次同步用时 " + total + "分钟;" + retmsg;
    
                }
                catch (Exception ex)
                {
                    return "同步失败:" + ex.ToString();
                }
    
            }

    2.3.调用webservice

    在要使用服务的项目处右击添加服务引用

    然后在程序当中直接实例化调用此方法即可:

      //调用方法
        TestServiceReference.TestServiceSoapClient testService = new TestServiceReference.TestServiceSoapClient();
        int result = testService.Add(1, 2);

    前端调用

    <script type="text/javascript">
        $(function () {
            $.ajax({
                type: 'POST',
                url: 'TestService.asmx/ADD',
                data: '{ A: 4,B:4}',
                dataType: 'json',
                contentType: "application/json",
                success: function (data) {
                    alert(data.d);
                }
            });
        });
    </script>

     3.修改webservice服务地址:

    3.1修改配置文件

    <?xml version="1.0" encoding="utf-8" ?>  
    <configuration>  
        <configSections>  
        </configSections>  
        <system.serviceModel>  
            <bindings>  
                <basicHttpBinding>  
                    <binding name="PointStoreServiceSoap" />  
                </basicHttpBinding>  
            </bindings>  
            <client>  
                <endpoint address="http://localhost:25548/WebServiceDom.asmx"  
                    binding="basicHttpBinding" bindingConfiguration="PointStoreServiceSoap"  
                    contract="PointStoreService.PointStoreServiceSoap" name="PointStoreServiceSoap" />  
            </client>  
        </system.serviceModel>  
    </configuration> 
  • 相关阅读:
    OpenCV程序在生产环境中运行
    C#调用C++导出(dllexport)方法
    IIS7.5 GZip配置
    wcf学习笔记--初识wcf
    Greenplum installation guide
    Cloudera 5.8.2 Installation guide
    WPF DataGrid 合并单元格
    wpf DataGrid CheckBox列全选
    WPF button 圆角制作
    WPF passwordbox 圆角制作
  • 原文地址:https://www.cnblogs.com/wyl1924/p/5726035.html
Copyright © 2020-2023  润新知