应用程序域为隔离正在运行的应用程序提供了一种灵活而安全的方法。
应用程序域通常由运行时宿主创建和操作。 有时,您可能希望应用程序以编程方式与应用程序域交互,例如想在不停止应用程序运行的情况下卸载某个组件时。
应用程序域使应用程序以及应用程序的数据彼此分离,有助于提高安全性。 单个进程可以运行多个应用程序域,并具有在单独进程中所存在的隔离级别。 在单个进程中运行多个应用程序提高了服务器伸缩性。
应用程序域具有以下特点:
必须先将程序集加载到应用程序域中,然后才能执行该程序集。
一个应用程序域中的错误不会影响在另一个应用程序域中运行的其他代码。
能够在不停止整个进程的情况下停止单个应用程序并卸载代码。 不能卸载单独的程序集或类型,只能卸载整个应用程序域。
程序集构成了基于 .NET 的应用程序的部署、版本控制、重用、激活范围和安全权限的基本单元。程序集以可执行 (.exe) 文件或动态链接库 (.dll) 文件的形式出现,是 .NET Framework 的生成块。它们向公共语言运行库提供了解类型实现所需要的信息。可以将程序集看成是构成逻辑功能单元并为一起工作而生成的类型和资源的集合。
每个程序集中都有一个“程序集清单”。类似于目录,程序集清单包含以下内容:
程序集的标识(其名称和版本)。
文件表,描述组成程序集的所有其他文件,例如包括创建的、.exe 或 .dll 文件所依赖的任何其他程序集,甚至包括位图文件或自述文件。
“程序集引用列表”是所有外部依赖项的一个列表,这些外部依赖项就是一些 .dll 或已由其他人创建而您的应用程序所需的其他文件。程序集引用同时包含对全局对象和私有对象的引用。全局对象驻留在全局程序集缓存中(可供其他应用程序使用的区域,有些类似于 System32 目录)
exe文件也是程序集它和dll的不同是有函数入口 ,比如控制台的 static void Main(){} |