WCF并发&的SendTimeout

时间:2012-03-06 07:10:19

标签: wcf concurrency send

我遇到了一个关于WCF并发性的奇怪问题。的SendTimeout。

这是我的测试程序:

WCF服务: 使用net.Tcp绑定,设置InstanceContextMode = InstanceContextMode.PerSession,ConcurrencyMode = ConcurrencyMode.Multiple

这意味着服务将使用多个theads来处理客户端的请求。

测试结果已经改进了,我启动了20个线程来通过同一个通信通道调用服务的方法。

服务方法非常简单:

public void GetData(int threadID)

客户端将使用其threadID调用此方法,服务将输出客户端&的线程ID。服务本身。

这是服务的输出:

At:3/6/2012 2:51:12 PM开始处理线程:7420,服务器线程ID:3948

At:3/6/2012 2:51:42 PM开始处理线程:3600,服务器线程ID:3948

At:3/6/2012 2:52:12 PM开始处理线程:6804,服务器线程ID:3948

At:3/6/2012 2:52:14 PM开始处理线程:5840,服务器线程ID:540

At:3/6/2012 2:52:15 PM开始处理线程:5688,服务器线程ID:4000

At:3/6/2012 2:52:16 PM开始处理线程:6220,服务器线程ID:5556

At:3/6/2012 2:52:17 PM开始处理线程:6332,服务器线程ID:3380

At:3/6/2012 2:52:18 PM开始处理线程:7788,服务器线程ID:548

At:3/6/2012 2:52:19 PM开始处理线程:7060,服务器线程ID:6060

At:3/6/2012 2:52:20 PM开始处理线程:4724,服务器线程ID:3836

At:3/6/2012 2:52:21 PM开始处理线程:6728,服务器线程ID:420

At:3/6/2012 2:52:22 PM开始处理线程:7984,服务器线程ID:6036

At:3/6/2012 2:52:23 PM开始处理线程:580,服务器线程ID:3012

At:3/6/2012 2:52:24 PM开始处理线程:2412,服务器线程ID:5472

At:3/6/2012 2:52:25 PM开始处理线程:2664,服务器线程ID:172

At:3/6/2012 2:52:26 PM开始处理线程:6820,服务器线程ID:5500

At:3/6/2012 2:52:27 PM开始处理线程:3340,服务器线程ID:1056

At:3/6/2012 2:52:28 PM开始处理线程:6584,服务器线程ID:3052

At:3/6/2012 2:52:29 PM开始处理线程:6156,服务器线程ID:5784

At:3/6/2012 2:52:30 PM开始处理线程:6756,服务器线程ID:724

但是......当我将客户端的sendTimeout从默认00:01:00设置为00:10:00时,会发生奇怪的事情,结果是这样的:

At:3/6/2012 2:57:31 PM开始处理线程:3660,服务器线程ID:5376

At:3/6/2012 2:58:01 PM开始处理线程:6576,服务器线程ID:5376

At:3/6/2012 2:58:31 PM开始处理线程:7720,服务器线程ID:5376

At:3/6/2012 2:59:01 PM开始处理线程:8148,服务器线程ID:5376

At:3/6/2012 2:59:31 PM开始处理线程:7356,服务器线程ID:5376

At:3/6/2012 3:00:01 PM开始处理线程:8060,服务器线程ID:5376

At:3/6/2012 3:00:31 PM开始处理线程:6512,服务器线程ID:5376

At:3/6/2012 3:01:01 PM开始处理线程:8004,服务器线程ID:5376

At:3/6/2012 3:01:31 PM开始处理线程:7444,服务器线程ID:5376

At:3/6/2012 3:02:01 PM开始处理线程:5564,服务器线程ID:5376

At:3/6/2012 3:02:31 PM开始处理线程:7788,服务器线程ID:5376

At:3/6/2012 3:03:01 PM开始处理线程:6584,服务器线程ID:5376

At:3/6/2012 3:03:31 PM开始处理线程:5488,服务器线程ID:5376

At:3/6/2012 3:04:01 PM开始处理线程:356,服务器线程ID:5376

At:3/6/2012 3:04:32 PM开始处理线程:7912,服务器线程ID:5376

At:3/6/2012 3:05:02 PM开始处理线程:700,服务器线程ID:5376

At:3/6/2012 3:05:32 PM开始处理线程:7484,服务器线程ID:5376

At:3/6/2012 3:06:02 PM开始处理线程:3960,服务器线程ID:5376

似乎servcie现在只使用一个线程来处理客户端的请求。 sendTimeout和amp;之间有什么关系吗?并发? 或者它与WCF的内部处理机制有关?

0 个答案:

没有答案