操作系统进程通过使用各不相同的内存地址空间来提供隔离。尽管它是有效的,但也是代价昂贵的,并且不能达到大型 Web 服务器所需要的数量。与其相比,公共语言运行时通过管理在应用程序域中运行的代码的内存使用来强制进行应用程序隔离。这样就确保它不会访问应用程序域以外的内存。需要注意的是,只有类型安全的代码才能以这种方式管理(当在应用程序域中加载不安全代码时,运行时不能保证隔离)。
互操作性 是否可以在 .NET 框架程序中使用 COM 对象? 是。您现在部署的任何 COM 组件都可以在托管代码中使用。通常情况下,所需的调整是完全自动进行的。
特别是,可以使用运行时可调用包装 (RCW) 从 .NET 框架访问 COM 组件。此包装将 COM 组件提供的 COM 接口转换为与 .NET 框架兼容的接口。对于 OLE 自动化接口,RCW 可以从类型库中自动生成;对于非 OLE 自动化接口,开发人员可以编写自定义 RCW,手动将 COM 接口提供的类型映射为与 .NET 框架兼容的类型。
是否可以在 COM 程序中使用 .NET 框架组件? 是。您现在创建的托管类型都可以通过 COM 访问。通常情况下,所需的配置是完全自动进行的。托管开发环境的某些新特性不能在 COM 中访问。例如,不能在 COM 中使用静态方法和参数化构造函数。一般,提前确定给定类型所针对的用户是一种较好的办法。如果类型需要在 COM 中使用,您将被限制在使用 COM 可访问的特性。
默认情况下,托管类型可能是可见的,也可能是不可见的,这由用于编写托管类型的语言决定。
特别是,可以使用 COM 可调用包装 (CCW) 从 COM 访问 .NET 框架组件。这与 RCW(请参阅上一个问题)相似,但它们的方向相反。同样,如果 .NET 框架开发工具不能自动生成包装,或者如果自动方式不是您所需要的,则可以开发自定义的 CCW。
为什么在网络共享驱动器中运行代码时会发生安全异常? 默认安全策略仅给来自本地 Intranet 区域的代码授予有限的权限。这个区域是由 Internet Explorer 安全设置定义的,它们应该配置为与企业内部的本地网络相匹配。由于由 UNC 或映射驱动器(例如使用 NET USE 命令)命名的文件都需要在本地网络上发送,因此它们也在本地 Intranet 区域中。
基于证据的安全性是如何与 Windows 2000 安全性配合工作的? 基于证据的安全性(基于授权码)能与 Windows 2000 安全性(基于登录身份标识)配合工作。例如,要访问一个文件,托管代码必须具有代码访问安全文件权限,也必须在具有 NTFS 文件访问权限的登录身份标识下运行。.NET 框架中包括的托管库也为基于角色的安全性提供了类。这些都使应用程序能够与 Windows 登录身份标识及用户组配合工作。