.NET Framework 应用程序域(appdomain)

.NET Framework的应用程序域提供了一个独立的执行环境,用于创建可卸载的工具或组件。全局程序集缓存是计算机级别的代码存储区,用于共享多个应用程序的程序集。AppDomain用于隔离数据,确保安全性,而跨域通信则需要MarshalByRefObject对象。目前应用场景较少,更多知识将在后续实践中补充。
摘要由CSDN通过智能技术生成

官方文档地址:https://docs.microsoft.com/zh-cn/dotnet/framework/app-domains

解释--表示应用程序域,它是一个应用程序在其中执行的独立环境。

用处--如果要创建将托管公共语言运行时的应用程序、要创建以编程方式卸载的工具/代码或要创建可以动态卸载和重载的可插入组件,需要创建自己的应用程序域。

(详解:https://docs.microsoft.com/zh-cn/dotnet/framework/app-domains/application-domains

补充:全局程序集缓存

安装了公共语言运行时的每台计算机均具有计算机范围的代码缓存,称为全局程序集缓存。 全局程序集缓存中存储专门指定给由计算机中若干应用程序共享的程序集。

只能在需要时才通过将程序集安装到全局程序集缓存中来共享程序集。 一般原则是:程序集依赖项保持专用,并将程序集放在应用程序目录中,除非明确要求共享该程序集。 另外,无需为了使 COM 互操作或非托管代码可以访问程序集而将程序集安装到全局程序集缓存。(亲测:程序集的安装需要安装强类型程序集,且不能在使用进程中被卸载(教程:https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/sign-strong-name))

感觉AppDomain的作用是为了隔断数据,保证一个安全性。这个功能可以通过代码的健壮性来进行一个弥补。

总的来说这块的东西暂时用的不多,没有实际的经验。待有经验后补充。

补充:要想跨应用程序域通信,则需要MarshalByRefObject对象抑或是继承了他的类的对象

下面是官网DEMO

using System;
using System.Reflection;
using System.Threading;

class Module1
{
    public static void Main()
    {
        // Get and display the friendly name of the default AppDomain.
        string callingDomainName = Thread.GetDomain().FriendlyName;
        Console.WriteLine(callingDomainName);

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>