Today's Objectives
“基于组件编程有很多优势:代码重用,团队支持,多语言开发和独立更新。在1990年,COM是微软流行的基于组件开发的模型。.NET替代了COM,提供了一个全新模型:语言独立的,注册自由,版本明确的……”
基于组件的开发
什么是组件?
组件== 编译后实体
在.NET中,组件== Assembly (exe / .dll)
组件与物理打包相关……
多层应用程序设计是一个很好的表现组件的例子:
创建组件
在VS .NET中创建Class Library,class libraries 将被编译成DLLs
Internal 关键字
使用internal关键字来限制访问
任何被标识为internal的项只能被组件内部的类访问
在组件外部没有权限访问……
版本
版本号:
major.minor.build.revision
AssemblyInfo.cs中的属性可以控制
在编译时被设置到Assembly中
默认情况下,版本号在每次build时都会改变
谁来控制版本?
你来!
你来决定何时应该改变版本号(任何时候)
你需要保证在不同版本中的兼容性(如果需要)
默认情况下,.NET & CLR 会忽略版本号
如果.EXE 需要.DLL,那么任何版本的.DLL都可以
如果组件有强命名/强名称( strong name ),那么
如果.EXE 提及需要 1.0.3 .12 版本的.DLL,那么它必须查找到1.0.3.12 版本的.DLL…
强命名(Strong Name)?
Assembly 在.NET 的命名有四部分:
friendly, human readable name
culture
version #
public key token
Assembly 如果有公钥token,那么它有强命名——这表示它被私钥数字签名过
强命名的好处?
安全性,组件无法篡改!
组件的多个版本可以共存!
应用程序可以使用它建立时的组件版本,而不是第一个找到的DLL。