ASP.NET - 上下文敏捷对象,应用程序域中的数据共享概念?
Posted
技术标签:
【中文标题】ASP.NET - 上下文敏捷对象,应用程序域中的数据共享概念?【英文标题】:ASP.NET - context-agile object,Data sharing concept in application domain? 【发布时间】:2009-09-22 21:34:56 【问题描述】:看了一些关于Application Domain的文章,深读终于翻来覆去 困惑。所以我将问题提交给学科专家。
1) 由于 CLR 负责在需要时创建 AppDomain,因此是否存在关键问题 需要手动创建应用程序域吗?
2)我听说一个应用程序域不能与其他应用程序域共享数据(我 不确定)。windows通信基金会的案例呢?
3) 通常,基本库(system.dll、mscorlib.dll)加载在默认应用程序域中。我可以将它们加载到自定义创建的应用程序域中吗?如果可能,CLR 会在默认应用程序域中保留一份副本吗?
喜欢
------------------ ----------------
Default AppDomain Custom Appdomain
------------------- ----------------
mscorlib.dll mscorlib.dll
System.dll System.dll
..... .......
----------------- -----------------
4) 应用领域中的上下文敏捷对象指的是什么?
【问题讨论】:
【参考方案1】:当您需要隔离(例如沙箱化第 3 方代码)或重新加载执行期间发生更改的代码的能力时,有时创建自己的 AppDomain 很有用。 (您无法卸载程序集,但可以卸载 AppDomain。)
在 AppDomain 之间共享数据涉及编组。如果您的对象派生自MarshalByRefObject
,则数据可以按值(即所有内容都被复制)或通过引用进行编组。在后一种情况下,实际上 传递到另一个AppDomain
的是对代理对象的引用。您在代理上所做的任何事情实际上都是对原始AppDomain
中的真实对象进行的。
不完全确定您的意思。您当然可以使用其他 AppDomain 中的所有系统程序集。
我没遇到过这个词,我记得。
【讨论】:
【参考方案2】:AppDomains 可以使用服务将信息从一个传递到另一个,例如您在问题 2 中所说的 WCF。
【讨论】:
以上是关于ASP.NET - 上下文敏捷对象,应用程序域中的数据共享概念?的主要内容,如果未能解决你的问题,请参考以下文章
[译] ASP.NET 生命周期 – ASP.NET 上下文对象
[译] ASP.NET 生命周期 – ASP.NET 上下文对象