有没有办法测试WCF服务实例管理过程?

时间:2013-10-11 11:24:41

标签: c# .net wcf

众所周知,WCF服务可以在几种不同的模式下实例化(PerCallPerSessionSingle实例上下文模式)。开发人员通常将服务实现为单身人士。谈到IIS托管的WCF服务,有没有办法研究创建了多少服务实例,跟踪他们的生命周期来比较不同的实现方法,性能?

2 个答案:

答案 0 :(得分:2)

  

有没有办法研究服务的实例数   创造,追踪他们的一生

我可以想到两种方法:

  1. IInstanceProvider扩展点使您可以通过GetInstance()ReleaseInstance()方法直接管理服务实例生命周期。您可以创建此扩展的自定义实现来执行您请求的度量(但它还必须正确创建服务实例)。 这样可以提供非常准确的测量结果。请注意,InstanceContextMode.Single实际上并未使用IInstanceProvider实施。单例直接传递给ServiceHost构造函数。因此IInstanceProvider只会向您提供PerCallPerSession信息。

  2. ServiceModel Service Performance Counters提供了您要查找的许多统计信息,例如InstancesCall Duration的数量。 这些计数器配置快速,并且在很多情况下足以看到实例化模型之间的性能差异。请注意,这些计数器实际上是在查看ServiceHost的InstanceContext计数而不是实际的服务实例计数。 InstanceContext和服务实例之间通常存在一对一的映射。但是,如果您正在使用Unity或Castle Windsor等依赖注入引擎的WCF扩展,那么它们将提供一个IInstanceProvider实现,允许您更改一对一映射。

  3. 如果你去#1,网上会有许多示例IInstanceProvider实现,但我会从这开始 Carlos Figueira's Blog – IInstanceProvider

答案 1 :(得分:0)

您必须检查WCF消息检查员。看看这个http://code.msdn.microsoft.com/Capturing-WCF-Request-d168060d

使用Message Inspectors,您可以获取详细信息abt请求生命周期,请求计数器,当任何WCF操作超过指定的秒数时捕获转储。 我想这会帮助你。