【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout

关于这四个属性,在MSDN中的解释有点敷衍了事。
Open/Close/Receive/Send本是HTTP/TCP/SOCKET的概念,Read/Write Operation则是Web Service的概念。

1.OpenTimeout
客户端与服务端建立连接时,如果超过指定时间都还没完成,就引发TimeoutException。
在TCP通讯中,服务器必须首先准备好侦听端口并在该端口上侦听(Listen),而客户端则必须首先向服务器发出连接(Connect)指令,服务器端收到后作出接受响应(Accept)后连接成功,此后两者就可以互发消息了。
在WCF领域中,类似地,Open()表示建立一个Binding。
测试:拨网线。

2.CloseTimeout
与OpenTimeout类似, CloseTimeout用于关闭一个连接时。
一般情况下,客户端比较随意,不会在意这个超时异常。“Close()是我发出的,我自己决定何时清理资源。”
在服务器就不同了,她必须对客户端负责,不能乱来,在收到Close()成功的响应之前,或收到超时异常之前,不能随意清理与客户端相关的资源。

3.SendTimeout
客户端调用的超时,默认1分钟。每次调用都必须在指定时间内完成,否则将引发TimeoutException。
在TCP通讯中,双方建立连接后,客户端如果需要发送消息给服务端,就发送一个数据包给服务器,服务器收到后必须给出一个响应,客户端收到这个响应后才能宣告发送成功。类似地,服务器也可能主动发送消息给客户端。这两个动作,分别对于客户端和服务器来说,都是发送(Send),而对于另一方来说都是接收(Receive)。
但是,在WCF领域中的SendTimeout中的Send与TCP的Send理念上类似,但是实质上完全不是一回事。SendTimeout中的Send是指客户端发起调用。
在WCF客户端,用proxy.InnerChannel.OperationTimeout可以取到SendTimeout的值。(此处,proxy 是自动生成的服务代理类XxxClient的一个实例)
测试:在服务器的调用处理代码中插入MessageBox.Show(...)或Thread.Sleep(...)。

4.ReceiveTimeout
与SendTimeout同理, ReceiveTimeout中的Receive是指服务器端发起回调(Callback)。只有在双向通讯绑定时适用,如WSDualHttpBinding, NetTcpBinding, NetNamedPipeBinding, ...
ReceiveTimeout是服务器回调(Callback)的超时,默认10分钟。每次回调都必须在指定时间内完成,否则将在服务器端引发TimeoutException。
测试:在客户端的回调处理代码中插入MessageBox.Show(...)或Thread.Sleep(...)。

个人理解:SendTimeout是指客户端发送数据(请求)wcf服务,wcf服务响应(wcf发送回来数据),这两个加起来的总时间。

ReceiveTimeout跟回调有关,并不是指wcf服务响应(wcf发送回来数据)的时间。

WCF三种操作模式请看【转】WCF请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back)

时间: 2024-10-25 17:30:04

【转】WCF OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout的相关文章

第十讲:绑定(信道)

代码 https://yunpan.cn/cPns5DkGnRGNs   密码:3913 绑定简介 从整个基础架构的层次结构上讲,WCF可以分成两个部分:服务模型层和信道层. 服务模型层建立在信道层之上,提供了一个统一的.可扩展的编程模型. 信道层则通过绑定创建的信道栈为消息通道提供了一个传输.处理的通道. 信道(Channel)与信道栈(Channel Stack) 在信道层,若干信道逐个相连,成为一个信道栈.WCF采用基于消息的通信手段,信道栈提供一个消息传输和处理的通道. 我们举个例子:

WCF绑定和行为在普通应用和SilverLight应用一些对比

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 阅读目录 介绍 绑定 行为 普通应用和SilverLight应用区别 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 介绍 WCF是构建和运行互联系统的一系列技术的总称,它是建立在Web Service架构上的一个全新的通信平台.我们可以把它看成是.NET平台上的新一代的Web Service.WCF的绑定和行为可以对提供的服务提供不同的通信方式支持和其

WCF服务调用与普通HTTP请求区别

用WCF技术也有一段时间了,只知道引用服务地址后调用里面的方法就行了.之前也没有思考wcf里面的一些东西,现在才对WCF里的一些产生疑惑,比如,为什么会有代理类,为什么要有绑定,信道又是干啥用的. 今天结合传统的浏览器请求讲讲我个人的见解,至于WCF的基本技术点,什么信道,ChannelFactory,ClientBase之类的我就不管了. 由于技术有限,不对的地方欢迎批评. 那我们就传统浏览器的例子解释WCF里的一些技术名词(WCF服务以IIS为宿主环境) 信道 当们我在浏览器里输入地址,按下

http伪造,(asp的)好用,成功!

<% Dim WinHttp Set WinHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1") '设置参数 WinHttp.SetTimeouts 60000, 60000, 60000, 3000 '设置操作超时时间 'WinHttp.SetTimeouts resolveTimeout, connectTimeout, sendTimeout, receiveTimeout 'resolveTimeout = 10

C# 网络连接中异常断线的处理:ReceiveTimeout, SendTimeout 及 KeepAliveValues(设置心跳)

C# 网络连接中异常断线的处理:ReceiveTimeout, SendTimeout 及 KeepAliveValues(设置心跳) 在使用 TcpClient 网络连接中常常会发生客户端连接异常断开, 服务端需要设置检测手段进行这种异常的处理: 1.对于短连接, 通过对 Socket 属性ReceiveTimeout 和 SendTimeout 设置适当的值, 当在进行读/写时超时, 则会产生 SocketException 异常, 通过检查这个异常并进行处理. 如下服务端连接处理代码示例:

WCF入门(一)--Request Entity Too large 传输的数据量过大

通过WCF进行数据的查询或者添加的时候,如果数据量过大,一般会报出如下的错误: 1.已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的MaxReceivedMessageSize 属性. 2.远程服务器返回了意外反应(413)Request Entity too large. 3.远程服务器返回了意外反应(400)Bad Request. 具体的解决方案: 服务端返回数据给客户端报错 在客户端的配置文件中,主要修改maxReceivedMessageSize <

[转]使用代码去描述WCF配置文件

转自:使用代码去描述WCF配置文件 在应用程序部署的时候,WCF客户端因为服务器地址的变化,需要修改程序配置文件的地址URL,手动修改很不方便,还会造成错误,所以尽量把描述WCF配置文件的配置使用代码方式进行描述,通过在软件中输入服务器IP地址的方式,动态修改访问的URL,这样比较方便,也不会出错,导致程序运行异常. 下面我将一个WCF部署文件采用代码方式描述: WCF客户端的配置文件: <?xml version="1.0" encoding="utf-8"

解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接

开发中所用的数据需要通过WCF进行数据传输,结果就遇到了WCF大量传输问题 也就是提示System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接 网上解决方案都是千篇一律互相转发的,并且没有明确的解决方案或者按照,各个博客中的解决方案都没能解决这个问题. 为此我整整浪费了一天时间用来解决这个问题,而且用了最笨的办法一点点的尝试网上所查到的方案.对于精研WCF来说的这可能是一个小问题,但是对于仅仅了解wcf,一知半解的会很困惑.将解决方案贴出来希望能帮

WCF客户端配置以及代理-----基于DDD领域驱动设计的WCF+EF+WPF分层框架(4)

写在最前面:转载请注明出处 目录置顶: 关于项目--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(1) 架构搭建--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(2) WCF服务端具体实现---------基于DDD领域驱动设计的WCF+EF+WPF分层框架(3) WCF客户端配置以及代理-----基于DDD领域驱动设计的WCF+EF+WPF分层框架(4) Domain具体实现------------基于DD