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

发布于 2024-08-05 01:31:22 字数 789 浏览 5 评论 0原文

看了一些关于Application Domain的文章,深读终于头晕目眩 所以我把问题提交给学科专家。

1) 由于 CLR 在需要时负责创建 AppDomain,是否存在关键的 需要手动创建应用程序域吗?

2)我听说一个应用程序域不能与其他应用程序域共享数据(我 我不确定)。Windows Communication Foundation 的情况怎么样?

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

比如

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

     mscorlib.dll                         mscorlib.dll

     System.dll                           System.dll



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

4)应用程序域中的术语“上下文敏捷对象”指的是什么?

I read some articles about Application Domain.The deep reading finally resulted in whirling
confusion.So I submit the questions to subject experts.

1) As CLR takes care of creating AppDomain as and when needed,could there be a critical
need to go for manual Application Domain Creation ?

2)I heard that one application domain can not share data with other application domain (i
am not sure).What about the case of windows communication foundation ?

3) Normally the basic libraries (system.dll,mscorlib.dll) are loaded in default application domain. can i load them in custom created application domain ? if it is possible,will CLR keep a copy in Default application domain ?

like

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

     mscorlib.dll                         mscorlib.dll

     System.dll                           System.dll



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

4) What is the term context-agile object in application domain referes to?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

栩栩如生 2024-08-12 01:31:22
  1. 当您需要隔离(例如沙箱第 3 方代码)或能够重新加载在执行过程中发生更改的代码时,创建您自己的 AppDomain 有时很有用。 (您无法卸载程序集,但可以卸载AppDomain。)

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

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

  4. 我还没有遇到过这个术语,我记得。

  1. Creating your own AppDomains is useful sometimes when you want isolation (e.g. sandboxing 3rd party code), or the ability to reload code which changes during execution. (You can't unload an assembly, but you can unload an AppDomain.)

  2. Sharing data between AppDomains involves marshalling. The data can either be marshalled by value (i.e. everything gets copied) or by reference if your object derives from MarshalByRefObject. In the latter case, what actually gets through to the other AppDomain is a reference to a proxy object. Anything you do on the proxy is actually done to the real object in the original AppDomain.

  3. Not entirely sure what you mean. You can certainly use all the system assemblies in other AppDomains.

  4. I haven't come across this term, that I can remember.

伴随着你 2024-08-12 01:31:22

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

AppDomains can pass information from one to the other using services, such as WCF as you said in question 2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文