是否可以通过Wcf Test客户端测试WCF限制行为?

时间:2014-01-24 08:37:50

标签: c# .net wcf throttling

是否可以通过Wcftest客户端测试WCF限制行为?

如果是,那么如何?

我在ServiceHost下面有一段代码

 ServiceThrottlingBehavior stb = _servicehost.Description.Behaviors.Find<ServiceThrottlingBehavior>();
        if (stb == null)
        {
            stb = new ServiceThrottlingBehavior();
            stb.MaxConcurrentCalls = 1;
            stb.MaxConcurrentInstances = 1;
            stb.MaxConcurrentSessions = 1;
            _servicehost.Description.Behaviors.Add(stb);
        }

我的服务有一个方法,例如:

    public string ThrottlingCheck()
    {
        Thread.Sleep(new TimeSpan(0, 0, 0, 5, 0));//5 seconds
        return "Invoke Complete";
    }

4 个答案:

答案 0 :(得分:4)

如果您使用“web”绑定,则可以使用开源soapUI / loadUI测试工具。

SoapUI是一个免费的开源跨平台功能测试解决方案。借助易于使用的图形界面和企业级功能,SoapUI使您可以轻松快速地创建和执行自动功能,回归,合规性和负载测试。

参考:
http://www.soapui.org/
http://www.soapui.org/Load-Testing/using-loadui-for-loadtesting.html

答案 1 :(得分:2)

由于您的请求需要5秒钟,您可以通过使用两个WCF测试客户端或在同一个WCF客户端中打开两个选项卡,同时调用两个操作来轻松测试。

集成测试肯定是检查此行为的更好选择。

此外,如果您想检查行为是否真的应用于您的服务,您可以使用WCF诊断程序,例如WCF计数器,尤其是“最大并发XXX的百分比”。

enter image description here

答案 2 :(得分:1)

不,使用WCF测试客户端是不可能的。如果您有Visual Studio Ultimate,则可以使用负载测试/性能测试来测试限制。

http://blogs.msdn.com/b/rickrain/archive/2009/06/26/wcf-instancing-concurrency-and-throttling-part-3.aspx?Redirected=true

答案 3 :(得分:0)

如果您的公司有LoadRunner(hp产品)的副本,您将能够构建足够的假交易来实际测试限制。

在我们的案例中,我们实际构建了一个多实例,多线程程序,用1000多个并发(假)用户来抨击我们的Web服务,每个用户上传40个文件。只有到那时我们才能看到节流开始生效。

顺便说一句,我们尝试了一系列不同的组合,看看我们是否可以调整设置并提高性能,但最终,我们能够让我们的Web服务运行的最快速度是在限制的默认设置下。换句话说,根本没有限制,只是让WCF管理流量和队列。很奇怪,是吗?