複数のバージョンを持つ製品を呼び出すクライアントアプリケーションを開発し、顧客は製品のさまざまなバージョンを次々にロードできます。
以前のバージョンでそれをサポートするために、ユーザーがバージョンを選択するたびにアプリケーションドメインを作成しました。
それは正しい方法ですか?代替手段はありますか?
編集済み: 複数のバージョン-複数のdll
ありがとう!
複数のバージョンを持つ製品を呼び出すクライアントアプリケーションを開発し、顧客は製品のさまざまなバージョンを次々にロードできます。
以前のバージョンでそれをサポートするために、ユーザーがバージョンを選択するたびにアプリケーションドメインを作成しました。
それは正しい方法ですか?代替手段はありますか?
編集済み: 複数のバージョン-複数のdll
ありがとう!
異なるバージョンの製品が異なるDLLに存在する場合、そうです、AppDomainはそれを行う正しい方法です。
ただし、DLLをメインドメインにリークしないように注意してください。
また、いくつかのテストを実行して、メモリがリークしないことを確認します。
アップデート
別の方法は、DLLを別のプロセスにロードし、RPCまたはサービス呼び出しを使用することです。私はそれがあなたのアプリケーションにとってやり過ぎだと思います。
製品が異なるAppDomainに存在する必要はないと思います。そのようにする主な理由は何ですか?アプリで特定のdllをアンロードし、実行中に同じdllの新しいバージョンをロードできるようにしますか?そうでない場合...アプリドメインを持つ理由がわかりません。
AppDomainsは通常、アセンブリがアンロードされたときにアセンブリ自体によって割り当てられたメモリが解放されることを保証する場合に使用されます。一部の種類のアプリでは意味があります。IISは、AppDomainsを使用して、実行中のすべてのアプリケーションを管理します(アプリケーションが分離されるようにします)。
製品のすべてのバージョンに共通のインターフェースを使用して、製品自体に関する情報を内部に保存してみませんか(適切な方法または好きな方法で)?