一点通分析WCF Stream对象

开发 后端
WCF随着不断的进步,WCF Stream对象的性能也不断的提高,文章主要介绍了Stream对象的基本操作,希望对大家有帮助。

WCF还是比较常用的,于是我研究了一下WCF Stream对象,在这里拿出来和大家分享一下,希望对大家有用。由于Stream操作受到绑定的限制,只能使用BasicHttpBinding,NetTcpBinding以及绑定,因此必然会影响服务实例的激活类型,最主要的是对Session模式的影响。首先BasicHttpBinding并不支持Session模式的激活类型。NetTcpBinding以及NetNamedPipeBinding绑定虽然支持Session模式,但是由于WCF Stream对象操作不支持可靠消息传递,即不能将ReliableSession设置为true。因此在定义服务契约的SessionMode时,不能将其值设置为SessionMode.Required,否则会抛出异常。

#T# WCF Stream对象操作(指TransferMode不为Buffered)本身并不支持Session模式。即使我们在使用NetTcpBinding时,将服务契约的SessionMode设置为Allowed,并将服务的InstanceContextMode设置为PerSession,服务的执行方式仍然是PerCall方式。(如果不是Stream操作,这样的设置服务应为PerSession模式)因此,在执行Stream操作时,即使按照Session模式对服务进行设置,如果我们通过OperationContext.Current.SessionId去获得会话ID,其值应该为空。

此外,由于传输的Stream对象较大,可能会消耗过长的时间,因而建议增大绑定的SendTimeout属性值。例如设置为10分钟。编程方式设置为:

  1. binding.SendTimeout=TimeSpan.FromMinutes(10); 

配置文件的设置方式为:

  1. <binding……sendTimeout="00:10:00"/> 

注意,对绑定的相关设置必须要求服务端与客户端的配置一致。***实践是均通过配置文件进行设置。例如在我的应用程序中是这样设置的:

  1. <basicHttpBinding> 
  2. <bindingnamebindingname="DocumentExplorerServiceBinding" 
  3. sendTimeout="00:10:00" 
  4. transferMode="Streamed" 
  5. messageEncoding="Text" 
  6. textEncoding="utf-8" 
  7. maxReceivedMessageSize="9223372036854775807"> 
  8. </binding> 
  9. </basicHttpBinding> 
责任编辑:田树 来源: 博客
相关推荐

2009-11-05 14:47:35

WCF Stream对

2009-11-06 10:54:19

WCF服务方式

2009-12-15 14:27:30

Ruby存取器

2009-11-05 15:00:26

WCF Stream

2009-12-31 13:45:13

Silverlight

2009-11-03 09:09:19

VB.NET类

2009-12-15 10:31:30

Ruby rails页

2009-12-24 17:10:42

WPF动画类

2009-10-22 09:29:23

CLR是什么

2009-11-06 16:35:56

WCF Stream对

2009-11-02 16:30:29

VB.NET构造器

2009-12-17 09:14:14

Ruby on Rai

2009-10-28 14:30:16

VB.NET RmDi

2009-11-04 14:37:40

ADO.NET XML

2009-11-10 17:04:29

VB.NET基础知识

2009-11-06 13:33:56

WCF Dispatc

2017-09-27 13:42:42

数据库MySQL断电恢复

2009-10-26 10:12:14

VB.NET操作MsA

2009-11-02 11:22:59

VB.NET文本文件操

2011-02-15 09:06:57

企业网络管理CISCO 3550交交换机端口
点赞
收藏

51CTO技术栈公众号