详谈WCF返回值处理方法

WCF返回值集成开发环境包括许多新的和改进的用于提高工作效率的功能。IDE 还进行了重新设计,从而向开发人员提供对.NET Framework 组件的直接访问。下面就这个问题进行解释说明。

保留要进行流处理的数据的参数必须是方法中的唯一参数。如:要对输入消息进行处理,则该操作必须正好具有一个输入参数。同样,如果要对输出消息进行流处理,则该操作鼻息正好具有一个输出参数或一个WCF返回值。#t#

参数和返回值的类型中至少有一个必须是Stream,Message或IXmlSerializable.

2.适用场景

 
 
  1. [ServiceContract]  
  2.  
  3. interface IMyContract  
  4.  
  5. {  
  6.  
  7. [OperationContract]  
  8.  
  9. Stream StreamReply1( );  
  10.  
  11. [OperationContract]  
  12.  
  13. void StreamReply2(out Stream stream);  
  14.  
  15. [OperationContract]  
  16.  
  17. void StreamRequest(Stream stream);  
  18.  
  19. [OperationContract(IsOneWay = true)]  
  20.  
  21. void OneWayStream(Stream stream);  
  22.  

3. 流处理机制在特定的绑定协议中才能使用,目前是BasicHttpBinding,NetTcpBinding,和NetNamedPipeBinding支持流处理模型。但是在默认情况下,WCF禁止流处理模式。
流传输模式使用TransferMode进行配置,TransferMode为枚举类型:

 
 
  1. public enum TransferMode  
  2. {Buffered = 0 ,Streamed =1,StreamedRequest =2,StreamedResponse =3 }  

4.WCF返回值配置文件中定义流传输模式:

 
 
  1. <basicHttpBinding>   
  2. <binding name="basicHttpBinding" receiveTimeout="10:10:10" transferMode="Streamed"   
  3. maxReceivedMessageSize="200000" />   
  4. </basicHttpBinding>   
  5. <netTcpBinding>   
  6. <binding name="netTcpBinding" receiveTimeout="10:10:10" transferMode="Streamed" maxReceivedMessageSize="200000" /> </netTcpBinding> 
THE END