我阅读了一些关于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)应用程序域中的上下文敏捷对象一词是什么意思?
答案 0 :(得分:3)
有时,当您需要隔离(例如沙盒第三方代码)或重新加载执行期间更改的代码时,创建自己的AppDomain非常有用。 (您无法卸载程序集,但可以卸载AppDomain。)
在AppDomains之间共享数据涉及编组。如果对象派生自MarshalByRefObject
,则数据可以按值进行编组(即所有内容都被复制)或通过引用进行编组。在后一种情况下,实际到达另一个AppDomain
的是对代理对象的引用。您在代理上执行的任何操作实际上都是对原始AppDomain
中的真实对象执行的操作。
不完全确定你的意思。您当然可以使用其他AppDomain中的所有系统程序集。
我没有碰到这个词,我记得。
答案 1 :(得分:0)
AppDomains可以使用服务(例如您在问题2中所述的WCF)将信息从一个传递到另一个。