我开发的客户端应用程序调用具有多个版本的产品,我的客户可以一个接一个地加载不同版本的产品。
为了在以前的版本中支持这一点,我为每次用户选择版本创建了应用程序域。
这是正确的方法吗?我有其他选择吗?
已编辑: 多个版本 - 多个 dll
谢谢你!
我开发的客户端应用程序调用具有多个版本的产品,我的客户可以一个接一个地加载不同版本的产品。
为了在以前的版本中支持这一点,我为每次用户选择版本创建了应用程序域。
这是正确的方法吗?我有其他选择吗?
已编辑: 多个版本 - 多个 dll
谢谢你!
如果不同版本的产品驻留在不同的 DLL 中,那么是的,AppDomain 是正确的方法。
尽管请确保您不会将 DLL 泄漏到您的主域。
此外,运行一些测试以确保您不会泄漏内存。
更新
另一种方法是在另一个进程中加载 DLL 并使用 RPC 或服务调用。我想这对您的应用程序来说有点过头了。
我不认为产品必须驻留在不同的 AppDomain 中。这样做的主要原因是什么?您是否希望您的应用程序能够卸载特定的 dll,并在运行时加载相同 dll 的新版本?如果不是...我不明白拥有应用程序域的原因是什么。
当您想保证在卸载程序集时可以释放程序集本身分配的内存时,通常会使用 AppDomain。它在某些类型的应用程序中很有意义。IIS 使用 AppDomains 来管理它正在运行的所有应用程序(以便将应用程序分开)。
为什么不对产品的所有版本使用通用接口,并在内部存储有关产品本身的信息(属性或任何您喜欢的方式)?