GetNext()
メソッドが呼び出されるたびにコードを返す必要があるサービスがあります。そのために、インターフェイスを実装するいくつかのコード プロバイダーがあります。ServiceHost の開始と終了の間、および各サービス呼び出しに対して、同じコード プロバイダーを使用する必要があります。各呼び出しでコード プロバイダーのインスタンスを 1 つ作成することは避けたいと思います。
IInstanceProvider と ServiceHostFactory を使用するソリューションでは、サービスの構築中にパラメーターを渡すことができます。私は WCF について詳しい知識がないため、そこで何が起こっているのかを完全には理解していなかったのかもしれません。最終的に静的ファクトリを実装し、サービスの実装で次のように使用しました。
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode = InstanceContextMode.PerCall)]
public class CodeService : ICodeService
{
public string GetNext()
{
return CodeProviderFactory.GetCodeProvider().GetNextCode();
}
}
必要に応じて、必要なコードのタイプをファクトリに渡し、構成 DB またはファイルから取得することでこれを拡張できますが、それは重要ではありません。これは、コード プロバイダーのインスタンスを 1 つだけ持つための最善の方法ですか?そうでない場合、正しい (つまり、よりエレガントで、パフォーマンスが高く、保守しやすい) ソリューションは何でしょうか? また、コード プロバイダーのインスタンスが 1 つしかないという懸念は正当なものですか?