什么叫应用程序域转 应用程序域

什么叫应用程序域?

一应用程序域:

"域",就是范围,环境,边界的意思,那么什么是应用程序域,官方给出的是这样的解释:操作系统和运行库环境通常会在应用程序间提供某种形式的隔离.应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域本质上就就是一种隔离,目的也就是使应用程序中运行的代码不能直接访问其他应用程序中的代码或资源如果你需要访问其他应用程序中的对象时你就可以复制这些对象,或通过代理访问这些对象.

二应用程序域和程序集

应用程序域和程序集之间的关系。在可以执行程序集中所包含的代码之前,必须将程序集加载到应用程序域中。运行普通的应用程序会导致将几个程序集加载到一个应用程序域中。程序集的加载方式决定其实时(JIT) 编译代码是否可以在进程中由多个应用程序域共享,以及该程序集是否可以

从进程中卸载:

1:如果程序集是以非特定于域的形式进行加载,则共享相同安全授权集的所有应用程序域都可以共享相同的 JIT编

译代码,从而减少应用程序所需的内存。但是,程序集则永远不能从进程中卸载。

2:如果程序集不是以非特定于域的形式进行加载,则它必须在加载的每个应用程序域中都是 JIT编译的。但是,通过卸载程序集加载的所有应用程序域,可以从进程中卸载程序集。

三 AppDomain class的使用

在.NET Framework提供了AppDomain类来实现以创建和卸载域、创建域中各类型的实例.那么该类中有哪些方法呢,

下面我们进行简单的介绍:

1:CreateDomain :用于创新的应用程序域,

2:ExecuteAssembly orExecuteAssemblyByName方法:执行应用程序域中的程序集。这是一个实例方法,因此它

可用来执行另一个应用程序域(您拥有对该域的引用)中的代码:

3:CreateInstanceAndUnwrap:在应用程序域中创建指定类型的实例,并返回一个代理。使用此方法以避免将包含创

建的类型的程序集加载到调用程序集.

4:Unload:执行域的正常关闭.只有应用程序域中正在运行的所有线程都已停止或域中不再有运行的线程之后,才卸载

该应用程序域。

四编程例子

以下这个例子显示了如何他创建应用程序域和关闭应用程序域:

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

class Example
{
publicstatic void Main()
{
string callingDomainName =Thread.GetDomain().FriendlyName;

string exeAssembly = Assembly.GetEntryAssembly().FullName;
// 设置一个新的应用程序域
AppDomainSetup a= new AppDomainSetup();
a.ApplicationBase =
System.Environment.CurrentDirectory;
a.DisallowBindingRedirects = false;
a.DisallowCodeDownload = true;
a.ConfigurationFile =
AppDo[]main.CurrentDomain.SetupInformation.ConfigurationFile;

// 创建新的应用程序域

AppDomain b= AppDomain.CreateDomain("b", null, ads);
MarshalByRefType mbrt =
(MarshalByRefType) b.CreateInstanceAndUnwrap(
exeAssembly,
typeof(MarshalByRefType).FullName
);

mbrt.SomeMethod(callingDomainName);

// 关闭应用程序域

AppDomain.Unload(ad2);
try
{
// Call the method again. Note that this time it fails
// because the second AppDomain was unloaded.
mbrt.SomeMethod(callingDomainName);
Console.WriteLine("Sucessful call.");
}
catch(AppDomainUnloadedException)
{
Console.WriteLine("Failed call; this is expected.");
}
}
}
public class MarshalByRefType : MarshalByRefObject
{

//通过代理调用方法

public void SomeMethod(stringcallingDomainName)
{

AppDomainSetup ads =AppDomain.CurrentDomain.SetupInformation;
Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}",
a.ApplicationName,
a.ApplicationBase,
什么叫应用程序域(转) 应用程序域
a.ConfigurationFile
);
Console.WriteLine("Calling from '{0}' to'{1}'.",callingDomainName,

Thread.GetDomain().FriendlName );
}
}

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/278977.html

更多阅读

转载 什么叫亵渎圣灵? 基督教讲章亵渎圣灵

原文地址:什么叫亵渎圣灵?作者:笙花束什么叫亵渎圣灵?圣经描述“亵渎圣灵”是不能得救的罪。所以:相当的一部份人非常恐惧自己会犯亵渎圣灵的罪。那么我们从圣经里来看“什么叫亵渎圣灵”。我们先把耶稣提到的亵渎圣灵的经文找出来。

什么叫一丝不挂,太绝了! 方文山的词太绝了

什么叫一丝不挂,太绝了!中国一丝不挂,太绝了。一、中国40岁以上官员中,超过80%与原配常年没有性生活,他们又不准备离婚。老百姓亲切地把这种现象称为“一不做,二不休”。二、香港的媒体如果不报导真相就会丢饭碗,我们的媒体如果报导真相就

到底什么叫“神回复”? 什么叫后台回复

前两天,我发出一篇文章,想请教网管和广大博友帮忙解释一下,什么叫“神回复”。本来,这些新名词我懂不懂无所谓,因为我已经越来越不懂的这一类新名词了,可是这个桔红色的人头偏偏每天要出现在我的屏幕上,删也删不掉,所以我还是得问问,到底什么

声明:《什么叫应用程序域转 应用程序域》为网友溫楺鴏祢分享!如侵犯到您的合法权益请联系我们删除