【问题标题】:Dll management in .Net.Net 中的 DLL 管理
【发布时间】:2012-08-05 07:05:42
【问题描述】:

我开发了调用具有多个版本的产品的客户端应用程序,我的客户可以一个接一个地加载不同版本的产品。

为了支持以前的版本,我在每次用户选择版本时都创建了应用程序域。

这是正确的方法吗?我有其他选择吗?

已编辑: 多个版本 - 多个 dll

谢谢!

【问题讨论】:

    标签: c# applicationdomain


    【解决方案1】:

    我认为产品不必驻留在不同的 AppDomain 中。这样做的主要原因是什么?您是否希望您的应用程序能够卸载特定的 dll,并在运行时加载相同 dll 的新版本?如果不是...我不明白拥有 App Domains 的原因是什么。

    AppDomains 通常用于保证卸载程序集时可以释放程序集本身分配的内存。它在某些类型的应用程序中很有意义。 IIS 使用 AppDomains 来管理它正在运行的所有应用程序(以便将应用程序分开)。

    为什么不对产品的所有版本使用一个通用接口,并在内部存储有关产品本身的信息(属性或任何您喜欢的方式)?

    【讨论】:

    • 用户必须能够在运行时通过更改为新产品来更改整套dll。
    • 但是为什么它必须更改 dll 集呢?我不明白。我很确定,您可以一次加载所有对象的定义,并且根据用户的选择 - 只使用需要的那个。
    • 因为当前版本和以前的版本对客户来说也代表了价值,因为新版本可能不是改进而是针对特定问题改变功能,用户可以在不同版本之间进行游戏以查看区别。
    【解决方案2】:

    如果不同版本的产品驻留在不同的 DLL 中,那么是的,AppDomain 是正确的做法。

    尽管确保您不会将 DLL 泄漏到您的主域。

    另外,运行一些测试以确保您不会泄漏内存。

    更新

    另一种方法是在另一个进程中加载​​ DLL 并使用 RPC 或服务调用。我想这对您的应用程序来说有点过头了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 2011-05-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多