【问题标题】:WCF Service - Single Instance - Static constructorWCF 服务 - 单实例 - 静态构造函数
【发布时间】:2013-01-02 16:41:01
【问题描述】:

只是想确认我的理解是正确的。如果我对服务使用单实例模式:

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]

并且该服务从另一个具有静态构造函数的程序集调用一个类,该构造函数仅在第一次调用服务时才被调用?我所说的构造函数设置了相当多的 AutoMapper 映射,我只希望在第一次调用服务时产生这个开销。

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

最好的

【问题讨论】:

  • 如果两个服务都托管在同一个托管应用程序(同一个应用程序域)中,是的,您的静态构造函数将被调用一次!你知道你可以制作一个简单的应用程序来测试它并了解行为:)

标签: wcf c#-4.0 static-libraries static-members


【解决方案1】:

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

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 2015-08-06
    • 1970-01-01
    • 2013-03-05
    • 2014-08-25
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多