.NET Framework使用加密对象支持内部服务。这些对象还作为管理代码提供给需要加密支持的开发人员。如何指定安全性?如果要对组合运行时的行为进行修改,根据程序员的需要,可以作出声明式安全或强迫式安全的修改。声明式安全使程序员可以直接在组合代码的元数据中为组合指定安全需求。许可请求和所有其它形式的声明式安全是在代码中是作为定置属性指定的。类,属性和方法的注释用于优化许可。例如,声明式安全可用于类的调用者在调用方法前检查调用者是否被已知地行商签名过,或有一个特定的强名。由于声明属性是组合元数据的一部分,所以组合的安全需求易于辨别。可以使用工具对组合进行扫描,以发现哪些方法需要某些许可,哪些方法断言了某些许可。当被请求的活动和许可在编译时是知道时,声明式检查可作为选择的解决方案之一。例如,如果方法总是检查对C:temp的写访问许可,那么许可检查就会从声明中得到好处。另一方面,如果被请求的具有访问权的位置发生了变化,那么强迫式安全也许是一个比较好的解决方案。强迫式安全直接在代码中实现。程序员通过程序采取安全活动,并且根据安全堆栈的状态决定是给予还是拒绝许可。例如,当一个方法请求访问一个特定的文件时,如果调用者(或方法的任何一个调用者)没有被给予必需的许可权限,那么请求失败。因为强迫式安全是通过程序实现的,所以满足了动态需求。如果你需要对一个特定文件的访问许可,但该许可还要根据其它信息发生变化,那么,强迫式安全就是可选的解决方案。