应用程序域(Application Domain)

应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法。

应用程序域通常由运行时宿主创建和操作。 有时,您可能希望应用程序以编程方式与应用程序域交互,例如想在不停止应用程序运行的情况下卸载某个组件时。

应用程序域使应用程序以及应用程序的数据彼此分离,有助于提高安全性。 单个进程可以运行多个应用程序域,并具有在单独进程中所存在的隔离级别。 在单个进程中运行多个应用程序提高了服务器伸缩性。

下面的代码示例创建一个新的应用程序域,然后加载并执行以前生成的程序集 HelloWorld.exe,该程序集存储在驱动器 C 上。

// Create an Application Domain:
System.AppDomain newDomain = System.AppDomain.CreateDomain("NewApplicationDomain");

// Load and execute an assembly:
newDomain.ExecuteAssembly(@"c:\HelloWorld.exe");

// Unload the application domain:
System.AppDomain.Unload(newDomain);

应用程序域具有以下特点:

  • 必须先将程序集加载到应用程序域中,然后才能执行该程序集。
  • 一个应用程序域中的错误不会影响在另一个应用程序域中运行的其他代码。
  • 能够在不停止整个进程的情况下停止单个应用程序并卸载代码。 不能卸载单独的程序集或类型,只能卸载整个应用程序域。
时间: 2024-10-11 03:55:56

应用程序域(Application Domain)的相关文章

进程(process)线程(thread)应用程序域(domain) (from www.sysoft.cc)

进程(process)是windows的一个基本概念,它包括了运行一个程序的需要的所有资源.进程之间是相互独立的,一个进程无法访问另一个进程之间的数据(除非采用分步式计算方式),一个进程运行的失败也不会影响到另一个进程的运行.windows就是利用进程将工作划分为多个工作区域的.进程可以理解为一个程序 的基本边界.解决问题:要解决并发问题,即:使进程独立,就要使每个进程有属于自己的程序段,数据段,进程控制块. 应用程序域(domain),它提供安全通用的处理单元,公共语言运行库可以用它来进行应用

理解AppDomain和AppPool

应用程序池: 这是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置.因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响. 应用程序域: 大家都知道,.net写的程序,都是托管的,何为托管?就是让“其他的程序”来管理,也解析运行,什么又在这里充当“其他程序”呢?这里大体上说是CLR(通用语言运行时),这只是大体上的,准确的在底层是怎么去处理托管程序与操作系统间的关系呢?

.NET中的视图和过滤器 (DefaultView和RowFilter)

ADO.NET中有一层对象,用来创建任意数据源的抽象模型.其中包括DataSet,DataTable,DataRow,DataView,DataRelation等等. 所有这些对象都定义在System.Data名字空间.它们形成一个抽象模型,使得无论针对Windows Form,Web Form还是Web Service进行编程,都可以使用相同的编程接口.在实际应用中,这些对象大多会对诸如SQL Server一类的关系型数据库中的数据进行操作.但是,它们可以处理各种数据,而不管它的物理存储媒介.

.NET面试基础知识

1.    什么是Asp.Net? 答:Asp.Net是一种基于.NET平台下的动态web开发技术,它使用的是codebehind(代码后置技术),可以将前台呈现和后台代码进行有效的分离. 2.    什么是webservice? 答:webservice是一种跨平台的分布式技术,它采用的xml格式数据进行传递,使用了soap协议,可以穿越防火墙(因为是80端口). 3.    Asp.Net和Asp的区别? 答:Asp.Net不仅仅是Asp的简单升级版: Asp使用的是Vbscript语言进行

.net 综合面试题

想换工作的朋友可以试着做一下:1. CLR.CTS.CLS 分别是什么意思? 公共语言运行库,通用类型系统,公共语言规范2. 什么是基元类型? 由编译器直接支持的数据类型称为基元类型. 例如:C#中的int,string等等就是,实际运行过程中被映射为FCL中对应的类型(java中叫做包装类)如:System.Int32,System.String. ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxintro/html/7e4c5921-955d-4b

读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1

读 <.Net 之美>解析.Net Remoting (应用程序域)-Part1 理解 .Net Remoting 前言: 看张子阳老师的文章,总是给自己很大的信心,这个专题基本上以张老师的书为主,我整理书中的主要代码,补充了些自己的理解,希望和大家一起学习:) 背景: 分布式开发是一个重要的方向,前段时间做公司的一个爬虫项目,多个客户端和服务端的交互,使我产生了浓厚的兴趣,WCF.WebService.Socket也是常用 的技术..Net Remoting 在.NetFrameWork 3

通过应用程序域AppDomain加载和卸载程序集

微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有一把,若要获得还需要你费一些心思.我在学习Remoting的时候,就遇到一个扰人的问题,就是Remoting为远程对象仅提供Register的方法,如果你要注销时,只有另辟蹊径.细心的开发员,会发现Visual Studio.Net中的反射机制,同样面临这个问题.你可以找遍MSDN的所有文档,在Assembly类中,你永远只能看到Load方法,却无法寻觅到Unload的踪迹.难道我们装载了程序集后,就不能再将它卸载下来

C# 通过 AppDomain 应用程序域实现程序集动态卸载或加载

AppDomain 表示应用程序域,它是一个应用程序在其中执行的独立环境.每个应用程序只有一个主应用程序域, 但是一个应用程序可以创建多个子应用程序域. 因此可以通过 AppDomain 创建新的应用程序域,在新创建的子应用程序域中加载执行程序集并且在执行完毕后释放程序集资源,来实现系统在运行中程序集的动态加载或卸载,从而达到系统运行中程序集热更新的目的. 主应用程序入口: using Kernel.ServiceAgent; using System; using System.Collect

C#学习笔记----AppDomain应用程序域

使用.Net建立的可执行程序*.exe,并没有直接承载到进程当中,而是承载到应用程序域(AppDomain)当中.应用程序域是.Net引入的一个新概念,它比进程所占用的资源要少,可以被看做是一个轻量级的进程.一个应用程序域可以有多个线程,一个线程也可以穿梭于多个应用程序域. 在一个进程中可以包含多个应用程序域,一个应用程序域可以装在一个可执行程序(*.exe)或者多个程序集(*.dll).这样可以使应用程序域之间实现深度隔离,即使进程中的某个应用程序域出现错误,也不会影响其他应用程序域的正常运作