黑马程序员技术交流社区

标题: 应用程序域是做什么用的? [打印本页]

作者: 陈凯    时间: 2013-1-3 23:49
标题: 应用程序域是做什么用的?
应用程序域是做什么用的?
作者: 王晨    时间: 2013-1-4 10:44
概念:
应用程序域 一种边界,它由
公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置)。应用程序域有助于将在一个应用程序中创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。在一个单独的进程中可以存在多个应用程序域。

一个进程可以包涵多个应用程序域,一个应用程序域可以包涵多个程序集
应用程序域的好处
       1.创建进程的开销要比创建一个应用程序域的开销要大的多,所以创建多个域在进程
       2.错误隔离,一个应用程序域如果崩溃,只会影响其所在的应用程序域,而不会影响其他应用程序域。


作者: 希望的曙光    时间: 2013-1-4 13:44
应用程序域概念(Application Domain,简App Domain)

我们知道.NET程序都是运行在托管环境(managed environment),但是操作系统只提供了进程(Process),而进程呢又只是提供了内存的控制。所以我们创建的.NET程序是无法直接在进程中运行的,那怎么办呢?这个时候应用程序域作为中介的角色出现了,它能够运行非托管进程和托管进程之上所以我们的WINFROM、WENFROM,控制台应用程序或是程序集都是运行在一个应用程序域中。

单独的库程序集是不能被直接运行的(库程序集即.dll的文件),它必须和一个可执行程序集文件一起启动(可执行程序集即.exe)。当可执行文件加载完毕时,.NET会在当前进程中创建一个应用程序域称为默认域,域的名称和程序集的名称相同,它不能被销毁直至进程销毁。

那C#不是运行在托管环境下的吗?那应用程序域是允许访问加载的程序集的Net Runtime所提供的服务。

一个进程可以包涵多个应用程序域,一个应用程序域可以包涵多个程序集,那有什么好处呢?就是好处1.创建进程的开销要比创建一个应用程序域的开销要大的多,所以创建多个域在进程2.错误隔离,一个应用程序域如果崩溃,只会影响其所在的应用程序域,而不会影响其他应用程序域。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2