是否可以通过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";
}
答案 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的百分比”。
答案 2 :(得分:1)
不,使用WCF测试客户端是不可能的。如果您有Visual Studio Ultimate,则可以使用负载测试/性能测试来测试限制。
答案 3 :(得分:0)
如果您的公司有LoadRunner(hp产品)的副本,您将能够构建足够的假交易来实际测试限制。
在我们的案例中,我们实际构建了一个多实例,多线程程序,用1000多个并发(假)用户来抨击我们的Web服务,每个用户上传40个文件。只有到那时我们才能看到节流开始生效。
顺便说一句,我们尝试了一系列不同的组合,看看我们是否可以调整设置并提高性能,但最终,我们能够让我们的Web服务运行的最快速度是在限制的默认设置下。换句话说,根本没有限制,只是让WCF管理流量和队列。很奇怪,是吗?