道歉,如果此之前已经问过,但我已经搜查,并不能找到答案WCF服务 - 在启动时创建多个实例?
我们有一个WCF服务,提供高达100个实例 - 因为有10,000个客户端,但调用是非常快。
我们注意到的唯一性能开销是在第一次调用实例时的性能开销......例如,第一次调用任何实例时(或者在回收之后),与其他调用相比,会有明显的延迟。
有没有办法在IIS启动时“启动”100个实例?从而消除这种开销?
有没有办法找出当前服务上有多少实例“活动/被检测”?
非常感谢, 戴夫。
道歉,如果此之前已经问过,但我已经搜查,并不能找到答案WCF服务 - 在启动时创建多个实例?
我们有一个WCF服务,提供高达100个实例 - 因为有10,000个客户端,但调用是非常快。
我们注意到的唯一性能开销是在第一次调用实例时的性能开销......例如,第一次调用任何实例时(或者在回收之后),与其他调用相比,会有明显的延迟。
有没有办法在IIS启动时“启动”100个实例?从而消除这种开销?
有没有办法找出当前服务上有多少实例“活动/被检测”?
非常感谢, 戴夫。
启动后,您可以通过远程接口从服务器获得服务。
或者,如果您使用自定义托管,也许您可以在服务器启动时将Service实例传递给ServiceHost。
如果您在IIS内托管,那么您将需要一个CustomHostFactory。这里有一篇相当不错的文章。 http://msdn.microsoft.com/en-us/library/bb332338.aspx。
在追踪实例方面,您可以在服务类中增加/减少引用计数。
如果您要寄存在IIS 7.5,那么您一定要查看Application Warmup Module。
当应用程序启动时,您无法启动100个实例。只有当你有单身服务=所有请求都有一个实例时才有可能。您的场景使用每次调用实例,因此每次客户端调用服务时都会创建实例,并在处理调用后进行处理。
要预热您的应用程序使用模块Encrico建议。如果你不使用IIS 7.5,你有另一种选择。创建自定义控制台应用程序来ping您的服务在Windows调度程序中安排此应用程序。
要跟踪运行实例的数量,您可以使用性能计数器。我不确定WCF是否提供了这种计数器,但您始终可以创建自己的计数器并在自定义的ServiceHost类中使用它。
哇 - 看起来很酷的模块!很棒的发现。 – 2010-09-06 10:44:18