0

私の理解が正しいことを確認したいだけです。サービスにシングルインスタンスモードを使用する場合:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

このサービスは、静的コンストラクターを持つ別のアセンブリからクラスを呼び出します。そのコンストラクターは、サービスが最初に呼び出されたときにのみ呼び出されますか?私が話しているコンストラクターは、かなりの数のAutoMapperマップをセットアップします。このオーバーヘッドは、サービスが最初に呼び出されたときにのみ必要です。

これをさらに進めて、2つの異なるサービスがあり、それらが両方とも共有クラスである場合、静的コンストラクターがまだ1回だけ呼び出されることを修正しますか?

一番

レイ

4

1 に答える 1

0

InstanceContextMode と静的コンストラクターの起動回数との間には関係がありません。静的コンストラクターは、アプリケーション ドメインごとに 1 回呼び出されます。したがって、サービスが 1 つのアプリケーション ドメイン内でホストされている場合、コンストラクターは 1 回呼び出されます。私が理解している限り、コンストラクターを使用して AutoMapper 構成を登録しています...私にとっては、良いアプローチではありません。サービスが IIS でホストされていると仮定すると、Global.asax ファイルを作成してから、Application_Start メソッドでマッピング登録コードを実行することをお勧めします。もちろん、最初に静的メソッドでラップすることもできます。

それが役に立てば幸い!

于 2013-01-03T10:41:08.287 に答える