2013-01-02 51 views
0

只是想确认我的理解是正确的。如果我使用单实例模式的服务:WCF服务 - 单实例 - 静态构造函数

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

这个服务调用由具有静态构造函数另一个asssembly类,这个构造只称为第一它的时间服务被称为?我所说的构造函数设置了相当数量的AutoMapper地图,并且我只在第一次调用该服务时需要此开销。

更进一步,如果我有两个不同的服务,他们都是我们的共享类,我是否正确,静态构造函数仍然只调用一次?

最佳

+1

如果两个服务都托管在同一托管应用程序中(同一应用程序doamin),则您的静态构造函数将被调用一次! 你知道你可以做一个简单的应用程序来测试,并知道行为:) – CodeNotFound

回答

0

有InstanceContextMode多少次静态构造函数被触发之间没有任何联系。每个应用程序域调用一次静态构造函数。因此,如果您的服务托管在一个应用程序域内,那么您的构造函数将被调用一次。 据我了解,您使用构造函数来注册AutoMapper配置...对我来说这不是一个好方法。假设你的服务托管在IIS上,你最好创建一个Global.asax文件,然后运行你在Application_Start方法中映射注册码。你可以先把它包装在一些静态方法中。

希望它有帮助!