データベースから読み取り、結果を返す WCF サービスを作成しました。パフォーマンス上の理由から、サービスの起動時にテーブルをキャッシュしたいと思います (これは Windows サービスの OnStart で発生します)。しかし、WCF にはコンストラクターのようなものはありません (そうですか?) ので、私が思いついた最善の方法は、Init() 関数を作成し、次のように呼び出すことです。
protected override void OnStart(string[] args)
{
mServiceHost = new ServiceHost(typeof(DLSService.DLSService), new Uri("http://localhost:8000/DLS"));
mServiceHost.AddServiceEndpoint(typeof(DLSService.IDLSService), new BasicHttpBinding(), "ServicesHost");
((DLSService.DLSService)mServiceHost.SingletonInstance).Init();
mServiceHost.Open();
}
しかし、SingletonInstance を使用して正しい型にキャストすることは、私にはそれほど優雅に思えません。WCF でコンストラクターのような機能を実現するためのよりエレガントな方法はありますか?