0

Unity、Prism を使用して分離アプリケーションを構築しています。

私が心配している問題は、サービスにおけるリソース管理です。例で説明するのは簡単です: ある種のデータを提供するインターフェイス IDataRetriever があると想像してください。実装はインスタンスとして登録されます。このインターフェイスの実装は、ファイル (FileDataRetriever)、Sql Server (SqlServerDataRetriever)、さらには単純な辞書など、あらゆるものに基づくことができます。使用する具体的な実装が構成されます (おそらく構成ファイルを使用しますが、問題ではありません)。

アプリケーションが作業を終了すると、サービスの実装に応じて、リソースを解放する必要がある場合があります (接続を閉じる、ファイルを閉じるなど) またはしない場合があります (辞書を使用する場合など)。リソースを解放する必要があります 2.具体的な実装にリソースの割り当て解除が必要かどうか。

ブートストラップが IDisposable を実装し、各サービスで IDisposable の実装をチェックし、すべてのモジュールに対して Dispose を呼び出すシナリオを考えることができます (これは、すべてのモジュールが IDisposable も実装する必要があることを意味します) が、正しくないように見えます。そのようなものを処理する方法(複雑すぎる)?

4

1 に答える 1

1

データ リトリーバーが操作を終了したらすぐにリソースを解放できる (そして実際にはそれが望ましい) と判断することもできます。この場合、リソースの解放はGetData、クライアント コードが使用する抽象化の一部であるメソッドまたは同等のメソッドへの呼び出しで暗黙的に行われます。

または、データを取得するまでリソースを解放したくない場合はRelease、抽象化で または同等のメソッドを公開する必要があります。サービスがこのメソッドを必要としない場合にこのメソッドを強制的に実装するのは面倒なので、このメソッドを別のインターフェイスに配置して、適切なサービスに対してのみ実装することができます。

その後、クライアント コードは、挿入されたサービスが適切なタイミングでこのインターフェイスを実装していることを確認し、必要に応じてReleaseメソッドを呼び出すことができます。

于 2013-05-04T09:22:05.410 に答える