首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET基础:应用程序域AppDomain

在 CLR 里、AppDomain就是用来实现代码隔离的,每一个AppDomain可以单独创建、运行、卸载。...AppDomain和其他概念之间的关系 1、AppDomain vs 进程Process AppDomain被创建在Process中,一个Process内可以有多个AppDomain。...每个AppDomain引用到某个类型的时候需要把相应的assembly在各自的AppDomain中初始化。因此,每个AppDomain会单独保持一个类的静态变量。...4、AppDomain vs 对象object 任何对象只能属于一个AppDomainAppDomain用来隔离对象。...三、在新AppDomain中创建对象 上文已经说了创建AppDomain了,但是创建的新AppDomain却是不包含任何对象的,只是一个空壳子。那么如何在新的AppDomain中创建对象呢?

1.1K60
您找到你想要的搜索结果了吗?
是的
没有找到

.NET简谈组件程序设计之(AppDomain应用程序域)

[王清培版权所有,转载请给出署名] .NET应用程序域(AppDomain)是我们所有.NET应用程序的逻辑宿主容器。初次接触会感觉到AppDomain离我们日常开发比较远,不常用到。...其实.NET的应用程序域诞生的初衷有点这个意思,用AppDomain进行隔离错误异常。...那么.NET为我们提供了AppDomain的概念,它是程序在进程中的逻辑宿主。既然是逻辑宿主,那么他们还是共享同一地址空间。在系统的托管堆中还是不分AppDomain的概念的。...//创建新的应用程序域 Console.WriteLine("default appdomain name:\n" + AppDomain.CurrentDomain.FriendlyName...); AppDomain newdomain = AppDomain.CreateDomain("newadddomain"); object refobject

26130

.Net Remoting(应用程序域) - Part.1

通常的编程情况下下,我们几乎从不需要对AppDomain进行操作,这里我们仅看几个本文会用到的、有助于理解和调试Remoting的常见操作: 1.获取当前运行的代码所在的应用程序域,可以使用AppDomain...回答这个问题之前,我们再来看下面另一种情况: 在新建应用程序域中创建对象 我们看看如何 创建一个新的AppDomain,然后在这个新的AppDomain中创建DemoClass对象。...你可能会想,这还不简单,把上面的例子稍微改改不就OK了: // 在新AppDomain中创建一个对象 static void Test2() { AppDomain currentDomain...而实际上,只要是跨越AppDomain的访问,都属于Remoting。不管这两个AppDomain位于同一进程中,不同进程中,还是不同机器上。...但是如果从AppDomain的角度来看,服务端的AppDomain仅仅是提供了一个实际提供服务的远程对象的运行环境。

58020

ILRuntime热更新

ref、out:传送门 GC(generational garbage collector):基于代的垃圾回收器 appdomain:CLR COM服务器初始化时会创建一个AppDomain。...AppDomain是一组程序集的逻 辑容器。CLR初始化时创建的第一个AppDomain称为“默认AppDomain”,这个默认的AppDomain 只有在Windows进程终止时才会被销毁。...除了默认 AppDomain,正在使用非托管COM接口方法 或托管类型方法的宿主还可要求CLR创建额外的 AppDomainAppDomain是为了提供隔离而设计 的。...所以如此看来注册行为就是把键值对存储到redirectMap的过程 appdomain.RegisterCLRMethodRedirection(i, CreateInstance);...参考博客:传送门 appdomain.LoadAssembly:将需要热更的dll加载到解释器中。第一个填入dll以及pdb,这里的pdb应该是dll对应的一些标志符号。

2.3K30

解析.NET对象的跨应用程序域访问(上篇)

1.AppDomain概述:       AppDomain类似与系统的进程,进程是有操作系统进行创建,AppDomain是由CLR进行创建。...如上图所示,一个对象正好存放在一个AppDomain种,值也一样。一个AppDomain中的对象引用必须是引用同一AppDomain中的对象,AppDomain的行为就好像拥有自己私有的地址空间。...如果两个AppDomain需要使用一个类型,必须为每个AppDomain分别初始化和分配一次类型。必须为各个用到类型的AppDomain分别加载和初始化一次类型的方法和程序集。...2.AppDomain核心对象解析:      上面介绍了一些AppDomain的基本概念,接下来我们来简单了解一下AppDomain的相关操作和核心对象。...在.NET种可以通过System.AppDomain类型访问AppDomain。在这里我们具体了解一下System.AppDomain类型的方法和属性。

98450

Asp.net管道模型(管线模型)之一发不可收拾

AppDomain不是进程,一个进程可以拥有一个或多个AppDomain,其中必须有一个默认的AppDomain。 也许这里您会有这样的疑问:AppDomain是线程吗?...(通常含一个线程池,里面有多个可重用的线程);AppDomain与线程是多对多关系,但某一个时刻一个线程只能处理一个AppDomain,而AppDomain可以由多个线程同时处理(并发)。...从运行程序时的过程是这样的:系统首先分配一段内存地址空间然后把控制权交给了CLR生成默认AppDomain,然后将程序集加载到默认AppDomain中,程序正式运行(系统在托管堆中没有AppDomain...AppDomain创建AppDomain并将该虚拟目录的程序集加载到AppDomain中(虚拟目录中可能不止一个程序集,而默认AppDomain会将整个虚拟目录下的所有程序集加载到AppDomain上)...,如果该虚拟目录的AppDomain已存在就直接使用该AppDomain,如果虚拟目录的程序集发生变化(包括web.config变化),就会新建一个AppDomain再将以变化的程序集加载到新的AppDomain

2.3K90

《CLR via C#》笔记:第4部分 核心机制(3)

AppDomain CLR COM服务器初始化时会创建一个AppDomainAppDomain是一组程序集的逻辑容器。...下面总结了AppDomain的具体功能: 1、一个AppDomain的代码不能直接访问另一个AppDomain代码创建的对象。 2、AppDomain可以卸载。...但指定卸载AppDomain中的程序集不可以。 3、AppDomain可以单独维护。 4、AppDomain可以单独配置。...卸载AppDomain会导致CLR卸载AppDomain中的所有程序集,还会释放AppDomain的 Loader堆。卸载AppDomain的办法是调用AppDomain的静态Unload方法。...调用AppDomain.Unload方法的线程将继续运行;对AppDomain.Unload的调用是同步进行的。 监视AppDomain 宿主应用程序可监视AppDomain消耗的资源。

78810
领券