-- 作者:admin
-- 发布时间:11/9/2004 2:26:00 AM
-- 管窥.net---AppDomain
发信人: walts (小天堂), 信区: DotNET 标 题: 管窥.net---AppDomain 发信站: BBS 水木清华站 (Tue May 8 19:38:25 2001) 什么是应用程序域(AppDomain)? 简单的说AppDomain是.Net环境下的一个概念, 它有一个确切的类型的实现. 可以把一个AppDomain看成一个简单的进程, 但是, 事实上一个Win32进程可以包含多 个AppDomain. 实现AppDomain的基本目的是把一个应用程序和其它的应用程序隔绝开来. 我们知道,Win32进程通过独立的地址空间隔离不同的进程,以确保操作系统和应用程序的 稳定. 但是.Net运行时通过控制每个AppDomain的所有存储空间的使用来完全隔离不同的 AppDomain, 就是说, .Net运行时环境确保了一个AppDomain不会访问其它AppDomain的空间. AppDomain是怎样生成的? AppDomain通常是由宿主(hosts)产生的. 那么什么是宿主呢? 举个例子, Windows Shell, ASP+, IE等等都是宿主. 当在命令行上创建一个.Net 应用程序的时候, 宿主就是Windows Shell, 这个宿主为每个应用程序创建 了AppDomain.当然, AppDomain也可以由.Net应用程序显式产生. 下面这个C#例子就显示创建了一个AppDomain, 同时产生了一个对象的实例, 然后执行这个对象的方法. using System; using System.Runtime.Remoting; public class CAppDomainInfo : MarshalByRefObject { public string GetAppDomainInfo() { return "AppDomain = " + AppDomain.CurrentDomain.FriendlyName; } } public class App { public static int Main() { AppDomain ad = AppDomain.CreateDomain( "csharp's new domain", null, null ); ObjectHandle oh = ad.CreateInstance( "appdomaintest.exe", "CAppDomainInfo" ); CAppDomainInfo adInfo = (CAppDomainInfo)(oh.Unwrap()); string info = adInfo.GetAppDomainInfo(); Console.WriteLine( "AppDomain info: " + info ); return 0; } } 怎么写我自己的.Net宿主(host)? 在.Net SDK中也有一个叫做CorHost的例子. -- ※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.142.76] 上一篇 返回上一页 回到目录 回到页首 下一篇
|