Служба WCF - единственный экземпляр - статический конструктор

Служба WCF - единственный экземпляр - статический конструктор

Просто хочу подтвердить, что я правильно понял. Если я использую режим единственного экземпляра для службы:

[ServiceBehavior (InstanceContextMode = InstanceContextMode.Single)]

и эта служба вызывает класс из другой сборки, у которой есть статический конструктор, этот конструктор вызывается только при первом вызове службы? Конструктор, о котором я говорю, настраивает изрядное количество карт AutoMapper, и мне нужны эти накладные расходы только при первом вызове службы.

Если продолжить, то если у меня две разные службы, и обе они являются общим классом, правильно ли я считаю, что статический конструктор по-прежнему вызывается только один раз?

Лучшее

Луч

Показать лучший ответ

Если обе службы размещены в одном управляемом приложении (одно и то же приложение doamin), да, ваш статический конструктор будет вызываться один раз! Вы знаете, что можете создать простое приложение, чтобы проверить это и узнать поведение :)

Нет связи между InstanceContextMode и количеством запусков статического конструктора. Статический конструктор вызывается один раз для домена приложения. Поэтому, если ваши службы размещены в одном домене приложения, ваш конструктор будет вызываться один раз. Насколько я понимаю, вы используете конструктор для регистрации конфигурации AutoMapper ... Для меня это не лучший подход. Предполагая, что ваши службы размещены в IIS, вам лучше создать файл Global.asax, а затем запустить регистрационный код сопоставления в методе Application_Start. Конечно, вы можете сначала обернуть его каким-нибудь статическим методом.

Надеюсь, это поможет!