.NET 应用程序域?
为了提升windows系统的稳定性与可靠性,windows通过进程来实现。所有的可执行代码、数据以及其他资源都被包含在进程中,
不允许其他进程对它进行访问(除非有足够的权限)。对于.NET应用程序,还进一步引入另一种隔离机制AppDomain。
CLR加载的时候将创建三个AppDomain:系统应用程序域、共享应用程序域以及默认应用程序域。使用WinDbg.exe和!dumpdomain
命令可以看到CLR创建的应用程序域如下:
0:000> .loadby sos.dll clr
0:000> !dumpdomain
*********************************************************************
* Symbols can not be loaded because symbol path is not initialized. *
* *
* The Symbol Path can be set by: *
* using the _NT_SYMBOL_PATH environment variable. *
* using the -y <symbol_path> argument when starting the debugger. *
* using .sympath and .sympath+ *
*********************************************************************
PDB symbol for clr.dll not loaded
--------------------------------------
System Domain: 50820f60
LowFrequencyHeap: 50821284
HighFrequencyHeap: 508212cc
StubHeap: 50821314
Stage: OPEN
Name: None
--------------------------------------
Shared Domain: 50820c08
LowFrequencyHeap: 50821284
HighFrequencyHeap: 508212cc
StubHeap: 50821314
Stage: OPEN
Name: None
Assembly: 00726b38 [C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll]
ClassLoader: 0072a3b8
Module Name
79571000 C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
--------------------------------------
Domain 1: 006d7000
LowFrequencyHeap: 006d7454
HighFrequencyHeap: 006d749c
StubHeap: 006d74e4
Stage: OPEN
Name: CApp.exe
Assembly: 00726b38 [C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll]
ClassLoader: 0072a3b8
SecurityDescriptor: 00726aa0
Module Name
=79571000 C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
在进程中有三个应用程序域:System、Shared、Domain 1。这个三个程序域的主要作用:
1、系统应用程序员
1)创建其他两个应用程序域(共享应用程序域和默认应用程序域)
2)将mscorlib.dll加载到共享应用程序域中
3)记录进程中所有其他的应用程序域,包括提供加载/卸载应用程序域等功能
4)记录字符串池中的字符串常量,因此允许任意字符串在每个进程中都存在一个副本。
5)初始化特定类型的异常,例如内存耗尽异常等
2、共享应用程序域
在共享应用程序域中包含与应用程序域无关的代码。mscorlib.dll将被加载到应用程序域中,
此外还包含在System命名空间中的一些基本类型。
3、默认应用程序域
.NET程序在默认应用程序域中运行。位于默认应用程序域中的所有代码都只有在这个域才是有效的。
任何跨域应用程序域的访问操作都必须通过.NET远程对象来进行。
宿主如何使用AppDomain?
1、可执行应用程序
控制台UI应用程序、NT Service应用程序、windows窗体应用程序和 WPF应用程序都是自寄宿应用程序的例子。
它们都有托管EXE文件。
2、ASP.NET web窗体和web应用程序
ASP.NET作为一个ISAPI DLL(ASPNet_ISAPI.dll)实现。客户端首次请求一个由ASP.NET ISAPI DLL处理的URL时,
ASP.NET会加载CLR。客户端请求一个web应用程序时,ASP.NET判断这是不是第一次请求。
如果是,ASP.NET会告诉CLR为该WEB应用程序创建一个新的AppDomain。每个web应用程序都按照它的虚拟根目录来标识。
.NET 应用程序域?的更多相关文章
- 【.net 深呼吸】跨应用程序域执行程序集
应用程序域,你在网上可以查到它的定义,凡是概念性的东西,大伙儿只需要会搜索就行,内容看了就罢,不用去记忆,更不用去背,“名词解释”是大学考试里面最无聊最没水平的题型. 简单地说,应用程序域让你可以在一 ...
- .NET应用程序域
在.NET平台下,可执行程序并没有直接承载在Windows进程中,而非托管程序是直接承载的..NET可执行程序承载在进程的一个逻辑分区中,称之为应用程序域(AppDomain).一个进程可以包含多个应 ...
- 读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
读 <.Net 之美>解析.Net Remoting (应用程序域)-Part1 理解 .Net Remoting 前言: 看张子阳老师的文章,总是给自己很大的信心,这个专题基本上以张老师 ...
- 跨应用程序域(AppDomain)的单例(Singleton)实现
转载自: 跨应用程序域(AppDomain)的单例(Singleton)实现 - CorePlex代码库 - CorePlex官方网站,Visual Studio插件,代码大全,代码仓库,代码整理,分 ...
- C#学习笔记----AppDomain应用程序域
使用.Net建立的可执行程序*.exe,并没有直接承载到进程当中,而是承载到应用程序域(AppDomain)当中.应用程序域是.Net引入的一个新概念,它比进程所占用的资源要少,可以被看做是一个轻量级 ...
- [转]C#综合揭秘——细说进程、应用程序域与上下文之间的关系
引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作.虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高 ...
- [ActionScript 3.0] AS3.0 Loader加载子swf时是否需要指定新的应用程序域ApplicationDomain
实际应用中, Loader加载子swf时是否需要指定新的应用程序域ApplicationDomain,需要择情况而定. 1.如果在本地将项目位置添加到flashplayer受信任位置(上一篇文章所述) ...
- [ActionScript 3.0] AS3 深入理解Flash的 应用程序域Application Domains
简介 网上有很多flash,通常都不需要显示的使用应用程序域,因为默认的应用程序域就够用了.其实复杂的情况下需要用到应用程序域,比如说有两个不同的swf,一个是旧版本的,一个是新版的,这两个文件里的类 ...
- 应用程序域(Application Domain)
应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法. 应用程序域通常由运行时宿主创建和操作. 有时,您可能希望应用程序以编程方式与应用程序域交互,例如想在不停止应用程序运行的情况下卸载某个组 ...
- AppDomain 应用程序域
应用程序域 一.什么是应用程序域? 应用程序域 (application domain) (AppDomain) 一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点 ...
随机推荐
- 验证码插件代码:image.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- zabbix安装配置agent程序之agent配置文件详解
安装zabbix-agent http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/ 下载:zabbix-agent-3.2.0-1.el6.x86_64.r ...
- NOIP 合唱队形
描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…, ...
- sublime text3配置ctrl+鼠标左键进行函数跳转【转】
本文转载自:https://blog.csdn.net/shangdibaozi/article/details/77503426 点击Preferences->Browse Packages进 ...
- 【I/O】File常见用法总结
java.io.File file可能是一个文件或者文件夹. 获取目录列表(全部/过滤) import java.io.File; import java.io.FilenameFilter; imp ...
- HUE中Oozie执行Hive脚本
Oozie执行hive,传入参数1. 新建一个workflow 2. 拖入一个hive2 3. hive脚本如下 CREATE TABLE IF NOT EXISTS spider_tmp.org_i ...
- SpiralOrderTraverse,螺旋遍历二叉树,利用两个栈
问题描述:s型遍历二叉树,或者反s型遍历二叉树 算法分析:层序遍历二叉树只需要一个队列,因为每一层都是从左往右遍历,而s型遍历二叉树就要用两个栈了,因为每次方向相反. public static vo ...
- Codeforces Round #365 (Div. 2) D.Mishka and Interesting sum 树状数组+离线
D. Mishka and Interesting sum time limit per test 3.5 seconds memory limit per test 256 megabytes in ...
- LeetCode第[1]题(Java):Two Sum (俩数和为目标数的下标)——EASY
题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...
- selenium学习笔记(xpath和css定位)
简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代码: 这个是xpath #!/usr/bin/env python # -*- coding: utf_8 - ...