WCF服务-启动时创建多个实例?

WCF服务-启动时创建多个实例?,wcf,multiple-instances,Wcf,Multiple Instances,如果以前有人问过,我会道歉,但我已经搜索过了,找不到答案 我们有一个WCF服务,提供多达100个实例,因为有10000个客户端,但调用非常快 我们注意到的唯一性能开销是对实例的第一次调用…例如。与任何其他调用相比,第一次调用任何实例(或循环使用后)都会有明显的延迟 有没有办法在IIS启动时“启动”100个实例?这样就消除了这种开销 有没有办法找出一个服务上当前有多少实例处于“活动/未激活”状态 非常感谢,, Dave。启动后,您可以通过远程接口从服务器上删除该服务 或者,如果您使用的是自定义托管

如果以前有人问过,我会道歉,但我已经搜索过了,找不到答案

我们有一个WCF服务,提供多达100个实例,因为有10000个客户端,但调用非常快

我们注意到的唯一性能开销是对实例的第一次调用…例如。与任何其他调用相比,第一次调用任何实例(或循环使用后)都会有明显的延迟

有没有办法在IIS启动时“启动”100个实例?这样就消除了这种开销

有没有办法找出一个服务上当前有多少实例处于“活动/未激活”状态

非常感谢,,
Dave。

启动后,您可以通过远程接口从服务器上删除该服务

或者,如果您使用的是自定义托管,则可以在服务器启动时将服务类的实例传递给ServiceHost

如果您在IIS中托管,则需要CustomHostFactory。这里有一篇关于如何做到这一点的相当好的文章


在跟踪实例方面,您可以只增加/减少服务类中的引用计数

如果您在iis7.5上托管,您一定要查看。

当应用程序启动时,您不能启动100个实例。只有当所有请求都有singleton service=一个实例时,才有可能。您的场景使用每次调用实例,因此每次客户端调用服务时都会创建实例,并在处理调用后释放实例

要预热应用程序,请使用模块Encrio。如果您不使用IIS 7.5,您还有另一个选择。创建自定义控制台应用程序以ping您的服务。在Windows计划程序中计划此应用程序

要跟踪正在运行的实例数,可以使用性能计数器。我不确定WCF是否提供这种开箱即用的计数器,但您始终可以创建自己的计数器,并在自定义ServiceHost类中使用它