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