.NET组件化开发技术基础
.NET平台的组件即“程序集”
- “程序集”是.NEFramework中基本的软件模块,它可以包容数目不限的“类型”,其常见的载体为一个或多个dll文件,也可以是一个可独立执行的EXE文件
- 一个Assembly可包含多个Namespace
- 一个项目如果需要使用特定程序集中的类型,需要添加对此程序集的“引用(Reference)”。
关于引用
- 在项目结点上右击,从弹出菜中选择“添加引用”
- 当被添加引用的项目位于同一解决方案时,推荐直接引用项目
- 只有程序集文件(dll或exe文件时),通过“Browse”按钮添加引用。
程序集的内部结构
- 分为单文件程序集和多文件程序集
- .NET编译器将程序员编写的代码转换为IL指令
- 放在程序集文件中的元数据,表明这个程序集的版本号,由谁开发,其中定义了多少个类型,每种类型又定义了多少成员......
组件设计时的“对外接口最小化”原则
- 一个程序集中,可以放置任意多个类
- 仅有需要为外界所使用的类,才设置为“公有”的
- 设置为公有的供外部使用的类,其公有成员“越少越好”,这样的类易于使用和维护。
组件之间的“依赖性”
- 包容于某组件内部的类,如果需要调用另一个组件中的类实现的功能,则称为“组件依赖”。
- 我们使用“耦合性”这个术语来描述“组件依赖”。
- 如果某个组建内部代码频繁地调用另一个组件中的代码,我们说这两个组件之间具有“强耦合性”。
- 设计各组件时,尽量减少组件之间过强的耦合性。
组件间的依赖关系
- 实际开发中,通常设计“单向”的组件依赖关系。
- 具有相同的抽象级别 的多个组件组成一个“层”,层之间的依赖关系,也是单向的。
- 组件化多层架构,是当前软件系统最常见的架构。
避免出现组件循环依赖的情况
- 可以使用在组件间移动类的方式,将相互依赖的类移到同一个组件中,从而断开组件之间的循环依赖。
组件的版本
- 组件化开发时,应该高度注意组件的版本一致性的问题,否则,系统可能会出现很难排查的BUG。
- VS使用NuGet从网络上检索、安装和配置组件,已成为主流的组件管理方式。