以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  管窥.net---AppDomain  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11853)


--  作者: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]
上一篇
返回上一页
回到目录
回到页首
下一篇



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
37.109ms