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
浅析深究什么是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}" }); }