2010-09-06 85 views
3

道歉,如果此之前已经问过,但我已经搜查,并不能找到答案WCF服务 - 在启动时创建多个实例?

我们有一个WCF服务,提供高达100个实例 - 因为有10,000个客户端,但调用是非常快。

我们注意到的唯一性能开销是在第一次调用实例时的性能开销......例如,第一次调用任何实例时(或者在回收之后),与其他调用相比,会有明显的延迟。

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

有没有办法找出当前服务上有多少实例“活动/被检测”?

非常感谢, 戴夫。

回答

2

启动后,您可以通过远程接口从服务器获得服务。

或者,如果您使用自定义托管,也许您可​​以在服务器启动时将Service实例传递给ServiceHost。

如果您在IIS内托管,那么您将需要一个CustomHostFactory。这里有一篇相当不错的文章。 http://msdn.microsoft.com/en-us/library/bb332338.aspx

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

1

如果您要寄存在IIS 7.5,那么您一定要查看Application Warmup Module

+0

哇 - 看起来很酷的模块!很棒的发现。 – 2010-09-06 10:44:18

0

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

要预热您的应用程序使用模块Encrico建议。如果你不使用IIS 7.5,你有另一种选择。创建自定义控制台应用程序来ping您的服务在Windows调度程序中安排此应用程序。

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