WebService WCF 简单介绍
常用的4套"分布式"服务框架
当我们使用分布式的时候
1.Webservice
2.WCF
3.Remoting: 作用是:可以通过网络直接获取到对方的dll文件
4.WSE: WCF的前身
Webservice:
本质:xml 注意http socket 都是以流的数据来发送数据 但是流的本质又是xml
注意点: webservice:是创建在提供数据的系统中的
2:系统与webservice之间的交流是根据soap:就是协议 java 和 php 都是一样需要遵循这种协议的
3:元数据:只有通过元数据我们在需要数据的系统中才能知道提供webservice中的方法,获取到数据
WebService总结
使用webService的步骤:
1:创建一个web服务,这个类继承System.Web.Services.WebService
2:注意创建的这个类是相当于是契约,而类中的方法相当于是服务,注意每一个方法都需要贴上[WebMethod]这个标签,才能表示是个服务
3: 调用webservice中的数据的方法:
a:首先我们需要在使用的地方添加服务引用,根据对应的url添加对应的代理类(代理类中有对应的我们需要的方法)
b:创建一个代理类对象 通过代理类对象点出webservice中的方法,获取到数据
代理类中的方法及对应的方法的一些作用:
1:Chanel结尾的:表示是管道,系统与webservice就是根据管道发送和请求数据的
2:Soap结尾的:表示是契约,就是相当于是他们之间进行交流的语言
3:Client结尾的:表示是客户端,我们需要从里面得到我们需要调用的方法数据
4:里面还有一些请求和响应数据的类
WCF总结:
WCF的两种类别:WCF服务库,WCF服务应用程序,唯一的区别就是WCF服务应用帮我们实现了接口,和WCF服务是在IIS中的,所以性能更高
1:wcf是使用面向接口的编程方式,所以我们需要传输数据的方法必须在接口中定义,在另一个类中实现
2:如果我们自己添加服务那么我们必须在wcf中的配置文件中新增一个service节点 设置3个或则2个节点(可以赋值系统生成的,但是注意需要给对应的一些对应的参数数据)
3:ServiceContract标签:表示是契约 OperationContract标签:表示是服务(注意每一自己定义的服务和契约也必须遵守规则)
调用的步骤:
1:创建代理类的对象,通过代理类来调用里面的方法(契约)
2:注意如果我们没有使用代码自动开启服务,那么我们必须先开启服务
3:用代码开启服务的方法:
a:首先创建一个控制台,引用wcf
b:在控制台的配置文件中将wcf中的配置文件复制到控制台中配置文件的configuration下
c:在控制器的min方法中写入一下代码
using (ServiceHost host = new ServiceHost(typeof(MenusOpt))) 注意typeof的意思是创建某个类的对象实例,注意传入的是我们在wcf中的类不是接口 :让系统new 自动设置单例模式
{
host.Open();
Console.WriteLine("开启成功");
Console.ReadKey();
d:打开服务的方法:在文件目录中找到控制器下的bin目录生成的程序exe,服务打开,可以访问wcf不用每次都要先开服务
WCF得3种模式:
1.请求--响应 :在服务器中设置一个休眠时间端
2:数据报模式 :只用于用户请求数据,不用户响应数据 因为设置了数据报的方法的返回值为空
作用:不会影响客户端的线程,就是在我们调用客户端调用服务器的时候不会占用客户端的主线程,(这样用户就可以在从服务器获取数据的时候可以做别的事)
使用方法:在wcf的基础上, 我们只需要在服务中的OperationContract后面加上一个(IsOneWay = true)就可以,例如:[OperationContract(IsOneWay = true)]
使用方法:在wcf的基础上, 我们只需要在服务中的OperationContract后面加上一个(IsOneWay = true)就可以,例如:[OperationContract(IsOneWay = true)]
特别注意:那么设置了数据报模式的服务的返回值必须为空
3:双工通讯(常问):双工通讯就是在客户端(BS)请求或则处理数据的时候,而服务器也在响应处理数据的时候,两个互不干扰,就是不会占用主线程
双工通讯实现需要的步骤:
1:契约中必须加上指定的参数:[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IResult))]
2:所有与wcf有关的服务的定义需要和数据报模式一致[OperationContract(IsOneWay = true)]
具体代码请看:17期第三个月MVC/服务器框架/源码
调用WCF服务的方法
1:首先打开我们创建的一个wcf服务,获取对应的url
2:在别的地方的引用中添加服务引用
浙公网安备 33010602011771号