共享程序集名的要求是它必须是全局唯一的,必须可以保护该名称。其他人不能使用这个名称创建程序集。
Com使用区局唯一标识符(GUID)解决了第一个问题,.NET程序集的强名都可以解决。
强名有下列项目组成:
- 程序集本身的名称
- 版本号
- 公钥保证强名称是独一无二的
- 文化
对于加密,可以分为对称加密和公钥/私钥加密。
在创建共享组件时,必须使用公钥/私钥对。编译器把公钥写入程序集清单,创建属于该程序集的所有文件的散列表,用私钥标记这个散列表。私钥不存储在程序集中,这样就可以确保没有人能修改该程序集。签名可以用公钥来验证。
全局程序集的缓存工具gacutil及其选项/i安装到全局程序集缓存中。