应用程序域(App Domain)

.NET的AppDomain提供了一种逻辑隔离机制,用于实现安全性、可靠性、版本控制和程序集卸载。每个应用程序都有自己的AppDomain,它们共享同一地址空间,但可以通过透明代理实现跨域调用。AppDomain的隔离特性可以防止一个应用程序中的错误影响其他程序,允许在不关闭进程的情况下卸载代码,并控制代码的权限。程序集加载方式决定了它们是否可共享或卸载。线程可以跨应用程序域执行,与AppDomain不是一对一的关系。
摘要由CSDN通过智能技术生成

应用程序域

操作系统和运行时环境通常会在应用程序间提供某种形式的隔离。例如,Windows使用进程来隔离应用程序。为确保在一个应用程序中运行的代码不会对其他不相关的应用程序产生不良影响,用进程进行隔离,再通过IPC或者其他的方式进行进程间通信。

其实.NET的应用程序域诞生的初衷有点这个意思,用AppDomain进行隔离。应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行时宿主创建,运行时宿主负责在运行应用程序之前引导公共语言运行时。

(如何使用应用程序域来提供程序集之间的隔离?

托管代码必须先通过一个验证过程,然后才能运行(除非管理员已授权跳过该验证)。此验证过程将验证以下内容:这些代码是否会尝试访问无效的内存地址?是否会尝试执行某些导致进程(该代码运行时所在的进程)无法正常进行的其他操作?通过此验证测试的代码将被认为是类型安全的。由于公共语言运行时能够验证代码是否为类型安全的代码,所以它可以提供与进程边界一样大的隔离级别,而其性能开销则要低得多。

应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行时可使用该单元提供应用程序之间的隔离。您可以在单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。

隔离应用程序对于应用程序安全也是十分重要的。例如,您可以在单个浏览器进程中运行几个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值