質問: 掲題の件、WCFサービスのクラスでシングルトンのクラスを利用しようとしています。 その場合、AサービスでシングルトンのクラスSを生成した後、 Bサービスで再びSのインスタンスを取得した場合、Aサービスで取得したSのインスタンスと Bサービスで取得したSのインスタンスは同一のインスタンスとなりますか? WCFサービスが動作するJavaでいうとTomcat上で動作しているイメージがあるので、 上記のような場合、どうなるのか知りたいです。 なお、ここで言っているシングルトンのクラスとはWCFサービスのシングルトンサービスの ことではありません。例えば、InstanceContextMode.PerCallやPerSessionのサービス内で シングルトンクラスを利用した場合の話になります。 よろしくお願いいたします。
回答: 単純に`static`フィールドを利用してシングルトンパターンを実装している場合の動作ということでしょうか。これは各サービスのホスティング状況によります。 `static`フィールドのスコープは`AppDomain`ですので、`AppDomain`もしくはより上位のホスティングしているプロセス(IISであればワーカープロセス)が変化している場合は値が共有されません。IISの同じアプリケーション上にサービスを配置して1サーバーで動作させる場合であれば、プロセスがリサイクルされると値がリセットされることなります。これは標準設定だと20分ごとに発生します。 ですので数分間有効な簡単なキャッシュ程度であれば通常のシングルトンパターンを利用できますが、確実性を求めるのであればDBその他のバックエンドを利用した方が良いです。