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)] 
   特别注意:那么设置了数据报模式的服务的返回值必须为空
 
 
3:双工通讯(常问):双工通讯就是在客户端(BS)请求或则处理数据的时候,而服务器也在响应处理数据的时候,两个互不干扰,就是不会占用主线程
  双工通讯实现需要的步骤:
  1:契约中必须加上指定的参数:[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IResult))]
   2:所有与wcf有关的服务的定义需要和数据报模式一致[OperationContract(IsOneWay = true)]
   具体代码请看:17期第三个月MVC/服务器框架/源码
 
调用WCF服务的方法
1:首先打开我们创建的一个wcf服务,获取对应的url
2:在别的地方的引用中添加服务引用
   
    
 
   
 
 

posted on 2015-05-10 17:13  阿兴的平凡世界  阅读(147)  评论(0)    收藏  举报

导航