WebService简介

一些博客地址:

WCF、WebAPI、WCFREST、WebService之间的区别:

http://www.cnblogs.com/markli/p/4460564.html

04SOA架构设计经验分享—架构、职责、数据一致性

http://www.cnblogs.com/wangiqngpei557/p/4486177.html

WebService登陆验证四种方式:

http://www.cnblogs.com/zuowj/p/4981919.html

前端解决跨域问题的8种方案

https://blog.csdn.net/weixin_39939012/article/details/83822126
View Code

浅析深究什么是SOA:http://blog.vsharing.com/fengjicheng/A1059842.html

SOA:面向服务架构,是构造分布式系统的方法论,也会提供一些标准、工具。

 

 什么是分布式?以前只能一台电脑做的事,现在可以多态服务器一起协作。

在.NET 中怎么做法哦分布式?

  1、队列

  2、第三方存储

  3、DB

WebService是寄宿在IIS,也就是必须在网站项目。

HTTP协议、SOA协议:

  1、Http传输信道,A服务器到B服务器,数据是什么格式传递的

  2、XML的数据格式,Http传输协议得到的有用数据

  3、SOA协议,封装格式:在分布式的环境中,描述了如何做数据交换的一个轻量级协议

  4、WSDL,属于WebService的标配,标准化描述服务,方便调用的

  5、UDDI,根据描述查找服务的机制

可以新建一个WebService的服务。诗意asmx类型的文件。

 public class MyWebService : System.Web.Services.WebService
 {
     [WebMethod]
     public string HelloWorld()
     {
         return "Hello World";
     }

}

这个[WebMethod]是一定要加上的。

在浏览器上面浏览的是这个结果,点击对应的方法,就可以进行测试了。

 

 

 

 服务端调用WebService,添加服务引用,基于svcUtil.exe生成的,与WSDL生成的一个代理,屏蔽服务调用的复杂性。

单元测试:

  1、测试方法

  2、回归测试

  3、断言Assert

 

 WebServ安全认证:

  1、Form认证,windows认证

  2、在服务里面增加账号密码认证。

 

 WebService的方法没有重载。

3、SoapHeader验证:

 

/// <summary>
/// Header:分配个加密钥  账号密码加密
/// 
/// </summary>
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 this.UserName.Contains("Bingle") && this.PassWord.Contains("123456");
    }

}


[WebMethod]
[SoapHeader("SoapHeaderProp")]
public string GetInfo(int id, string name)
{
    if (!this.SoapHeaderProp.Validate())
    {
        throw new SoapException("身份验证失败", SoapException.ClientFaultCode);
    }
    return Newtonsoft.Json.JsonConvert.SerializeObject(new
    {
        Id = id,
        Name = name,
        Remark = $"This is {id} {name}"
    });
}
View Code

 

posted @ 2019-09-22 00:31  冰乐  阅读(747)  评论(0编辑  收藏  举报