ASP.NET - 上下文敏捷对象,应用程序域中的数据共享概念?

时间:2009-09-22 21:34:56

标签: asp.net clr appdomain

我阅读了一些关于Application Domain的文章。深度阅读最终导致了旋转 混淆。所以我向主题专家提交问题。

1)由于CLR负责在需要时创建AppDomain,因此可能存在关键问题 需要手动创建应用程序域吗?

2)我听说一个应用程序域无法与其他应用程序域共享数据(i 我不确定。。关于Windows通信基础的情况怎么样?

3)通常,基本库(system.dll,mscorlib.dll)在默认应用程序域中加载。我可以加载自定义创建的应用程序域吗?如果可能,CLR会在默认应用程序域中保留一份副本吗?

 ------------------                   ----------------
    Default AppDomain                    Custom Appdomain
   -------------------                   ----------------

     mscorlib.dll                         mscorlib.dll

     System.dll                           System.dll



     .....                                .......
    -----------------                    -----------------

4)应用程序域中的上下文敏捷对象一词是什么意思?

2 个答案:

答案 0 :(得分:3)

  1. 有时,当您需要隔离(例如沙盒第三方代码)或重新加载执行期间更改的代码时,创建自己的AppDomain非常有用。 (您无法卸载程序集,但可以卸载AppDomain。)

  2. 在AppDomains之间共享数据涉及编组。如果对象派生自MarshalByRefObject,则数据可以按值进行编组(即所有内容都被复制)或通过引用进行编组。在后一种情况下,实际到达另一个AppDomain的是对代理对象的引用。您在代理上执行的任何操作实际上都是对原始AppDomain中的真实对象执行的操作。

  3. 不完全确定你的意思。您当然可以使用其他AppDomain中的所有系统程序集。

  4. 我没有碰到这个词,我记得。

答案 1 :(得分:0)

AppDomains可以使用服务(例如您在问题2中所述的WCF)将信息从一个传递到另一个。