zoukankan      html  css  js  c++  java
  • WebService

    Web Service

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

    WebService:寄宿在IIS,也就是必须在网站项目
    五大对象

    1. Http传输信道,A服务器到B服务器,数据是什么格式传递的
    2. XML的数据格式---Http传输解析得到的有用数据
    3. SOAP协议---封装格式:在分布式的环境中,描述了如何做数据交换的一个轻量级协议
    4. WSDL:属于webservice的标配,标准化描述服务,方便调用
    5. UDDI:根据描述查找服务的机制

    WebService创建

    1.搜索asmx创建webservice
    2.在MVC路由配置中为WebService指定路由

    忽略以Remote开头的文件物理路径

    WebService调用

    1.在页面上访问remote文件夹下的WebService 即可看到可以访问的方法

    注意:

    • 在WebService中想要方法生效需要在方法上添加[WebMethod]特性
    • 在WebService中方法不能重载

    查看wsdl

    2.在程序中访问

    • 在程序中添加服务引用,分别输入服务地址和命名空间

      在程序中即可看到
      并在程序中生成了一堆代码
      在程序中正式调用,使用后需要释放

    WebService身份验证

    Web Service身份验证,网上已有许多的相关文章,总结起来有:基于自定义SoapHeader验证、Form验证、集成Windows身份验证、服务方法加入一个或几个验证参数等等
    这里只介绍基于自定义SoapHeader验证

    • 自定义SoapHeader
        public class CustomSoapHeader:System.Web.Services.Protocols.SoapHeader
        {
            private string userName = string.Empty;
            private string passWord = string.Empty;
            public CustomSoapHeader()//必须有一个无参数的构造函数
            { }
    
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="userName">用户名</param>
            /// <param name="passWord">密码</param>
            public CustomSoapHeader(string userName, string passWord)
            {
                this.userName = userName;
                this.passWord = passWord;
            }
    
            /// <summary>
            /// 获取或设置用户用户名
            /// </summary>
            public string UserName
            {
                get { return userName; }
                set { this.userName = value; }
            }
    
            /// <summary>
            /// 获取或设置用户密码
            /// </summary>
            public string PassWord
            {
                get { return passWord; }
                set { this.passWord = value; }
            }
            public bool Validate()
            {
                return true;//验证逻辑代码
            }
        }
    
    • 在服务方法上添加验证
        /// <summary>
        /// MyWebService 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
        // [System.Web.Script.Services.ScriptService]
        public class MyWebService : System.Web.Services.WebService
        {
            public CustomSoapHeader soapHeader { get; set; }
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
            [WebMethod][SoapHeader("soapHeader")]
            public int Plus(int x, int y)
            {
                if (soapHeader.Validate())
                {
                    return 0;
                }
                return x + y;
            }
            public string Info()
            {
                return JsonConvert.SerializeObject(new {Name="name",Remark="Hello World!" });
            }
        }
    
    • 调用方传入验证信息
                    using (WebServiceTest.MyWebServiceSoapClient client = new WebServiceTest.MyWebServiceSoapClient())
                    {
                        var a = client.HelloWorld();
                        var header = new WebServiceTest.CustomSoapHeader();
                        Console.WriteLine(client.Plus(header, 12, 34));
                        Console.WriteLine(client.Plus(header, 12, 34));
                        Console.WriteLine(a);
                    }
    

    其他验证方法:https://www.cnblogs.com/zuowj/p/4981919.html

  • 相关阅读:
    报错:require_once cannot allocate memory----php,以前自己弄的稍微有点特殊的开发环境
    wget下载整个网站---比较实用--比如抓取Smarty的document
    Linux必须会的命令---也是以前记录的,ctrl+z fg 啥的 jobs 比较实用
    最全的ORACLE-SQL笔记
    UML十四图打油诗记忆法
    Spring整合Hibernate总结
    MyEclipse6.5优化
    windows XP 各个文件夹详细介绍
    hibernate所需jar包
    struts2所需的jar包
  • 原文地址:https://www.cnblogs.com/Dewumu/p/12155286.html
Copyright © 2011-2022 走看看