内容简介
《.NET框架设计 模式、配置、工具》总结了框架设计的整体思路和经验,包含了常见应用框架设计的模式、框架灵活性的配置和框架工具的支持,有助于读者了解框架设计的核心思想,加深对框架设计的理解,快速掌握框架设计的技巧,并在研究其他框架时能够做到举一反三。 《.NET框架设计 模式、配置、工具》适用于.NET程序员、架构师、项目经理、技术总监、应用层开发者、框架学习者和和对框架设计感兴趣的读者。
作者简介
王清培(Plen Wang),培元教育咨询公司创始人、架构师、高级讲师,微软C# MVP。对企业级分布式系统、大型电子商务系统有着丰富的设计开发经验。一直是应用框架模式、企业级应用架构模式、重构、领域驱动设计方向的研究者和实践者,长期在博客中分享技术经验,连续三届获得全国IT技术博客大赛50强,有着极强的技术钻研精神,并坚持毫保留地将经验分享出来。 曾任职北美的电子商务巨头公司美国新蛋网,从事平台的重构和设计工作。目前就职于国内的上市在线旅游企业携程旅行网,负责框架、服务相关的设计开发工作,以及培元的课程教育和企业培训。
内页插图
目录
第1章 框架设计的基本概念
1.1 框架
1.1.1 框架的通常作用及层面
1.1.2 框架的生命周期
1.2 框架设计
1.2.1 确定问题域和识别变化点
1.2.2 选择合适的架构模式、配置变化数据、可视化管理
1.3 框架设计核心三元素:模式、配置和工具
1.3.1 框架模式
1.3.2 框架配置
1.3.3 框架工具
1.3.4 总结
第2章 C#、.NET Library高级应用
2.1 重温C#--灵活运用各元素
2.1.1 类、继承、接口
2.1.2 字段、属性、常量、枚举
2.1.3 方法、委托、事件
2.1.4 泛型、协变/逆变、类型推断
2.1.5 扩展方法
2.1.6 部分类、部分方法
2.1.7 特性、元数据
2.1.8 反射、代码对象模型、动态编译、动态缓存
2.2 面向C#设计模式的关键技术
2.2.1 创建型--工厂模式、工厂规则注入、委托工厂
2.2.2 行为型--观察者模式、基于事件的观察者
2.2.3 结构型--桥接模式、扩展方法
2.3 编码时应注意防御性、稳定性和性能
2.3.1 常被忽视的防御性判断
2.3.2 避免直接返回NULL,保持80%的稳定性
2.3.3 空对象模式和扩展方法的NULL验证
2.3.4 注重性能的编码方式
2.4 单元测试、可测试性代码、持续重构
2.4.1 单元测试的重要性及核心意义
2.4.2 可测试性代码的重点
2.4.3 类中受保护方法的测试
2.4.4 基于完善的单元测试用例
2.4.5 TDD的优势
2.5 第三方库是可插拨的、依赖库的版本
2.5.1 依赖抽象接口
2.5.2 依赖库的版本
第3章 框架模式--框架的精髓
3.1 提供程序模式
3.1.1 问题域和基本模型
3.1.2 相关的设计模式
3.1.3 实例
3.1.4 总结
3.2 链式编程模式
3.2.1 问题域和基本模型
3.2.2 实例--非扩展方法实现链式编程模式
3.2.3 实例--扩展方法实现链式编程模式
3.2.4 配置带有算法的逻辑并将逻辑算法作为配置保存
3.2.5 链式编程模式在领域模型中的价值
3.2.6 总结
3.3 管道模式
3.3.1 问题域和基本模型
3.3.2 实例
3.3.3 自治管道与约定管道的区别
3.3.4 总结
3.4 逻辑上下文模式
3.4.1 上下文相关概念
3.4.2 问题域和基础模型
3.4.3 实例
3.4.4 总结
3.5 钝化程序模式
3.5.1 问题域及基础模型
3.5.2 实例
3.5.3 总结
3.6 规则外挂模式
3.6.1 问题域及基础模型
3.6.2 调整逻辑架构--分离业务逻辑于业务规则
3.6.3 实例
3.6.4 总结
3.7 语句组件模式
3.7.1 问题域和基础模型
3.7.2 实例
3.7.3 总结
3.8 面向契约式模式
3.8.1 问题域和基础模型
3.8.2 契约条目检查器
3.8.3 面向查询的契约文件
3.8.4 实例
3.8.5 总结
3.9 异步消息事件驱动模式
3.9.1 问题域及基础模型
3.9.2 相关的设计模式
3.9.3 实例
3.9.4 总结
3.10 总线消息路由模式
3.10.1 问题域及基础模型
3.10.2 实例
3.10.3 总结
3.11 元数据及元数据缓存池模式
3.11.1 问题域及基础模型
3.11.2 元数据的生成方式
3.11.3 实例
3.11.4 总结
第4章 配置化--提高灵活性及扩展性
4.1 配置内容及存放位置
4.1.1 配置内容
4.1.2 存放位置
4.2 配置的领域概念及文档对象模型
4.2.1 传统领域信息配置项
4.2.2 设计具有领域概念的配置项
4.2.3 配置相关的文档对象模型(DOM)
4.3 动态代码配置
4.3.1 模板引擎介绍
4.3.2 动态代码配置
第5章 工具--可视化使用
5.1 设计时工具
5.1.1 自动代码生成
5.1.2 暴露框架中的某个工具支撑库
5.2 运行时工具特性
5.2.1 脚本引擎
5.2.2 执行上下文
5.2.3 可插拔
第6章 框架设计总结
精彩书摘
2.3.4注重性能的编码方式 在编写代码时,要保持资源释放的警惕性,时刻提醒自己如何提高性能,至少要做到减少无辜资源的浪费。要做到上述几点,其实最重要的就是资源的释放,不及时释放资源极易导致服务器内存被吃光的危险。 这里我们介绍几种资源使用和释放的方法,只要适当地运用,就可以大大减少内存出问题的可能性。 1。在对象使用时再实例化 对象在使用时再实例化,而不是在类加载的时候就实例化。可以把实例化的工作放在构造函数中或者初始化的方法中,如果不是及时需要的对象,建议使用延迟加载的方式。 2.在对象不使用时及时设置为NULL 当对象不需要再使用时,应该在第一时间内将其设置为NULL,这样可以方便GC:及时地回收该对象所占用的内存。 .NETGc算法用的并不是“引用计数”,而是“标记与清除”,所以你不必担心你所设置为NuLL的对象是否会被及时地回收。“标记与清除”算法是从应用程序域的根对象开始计算一个对象可达树。显然,如果是不能够被访问的对象就会被.NETGc认为是垃圾,将被回收掉。而“引用计算”算法,是计算每个对象的引用计数,所以哪怕这个对象有任何一个引用关系存在,都不会被释放掉,这种算法经常会导致内存泄漏。而.NETGC的“标记与清除”算法不会管你的引用关系,哪怕有一群对象彼此互相连接,但是这群对象是孤立的,从应用程序域根对象开始计算可达树,只要中问断开了与这群对象的可达,那么这群对象同样会被.NETGc回收。 3.使用IDisposable接口来声明有重要资源需要及时释放 IDisposable接口是用来声明该对象内部有重要的资源需要在不使用时及时释放的,像数据库连接、消息池对象,这些都是很重要、很有限的系统资源。如果稍微使用不当,这些关键性的对象会立马让系统整体瘫痪、内存吃光或者cPul00%处理中,而你为了定位具体是哪个对象在使用时出了问题,就不得不使用WinDebug,之类的工具去仔细地查看对象的内存状态和cPu状态。 尤其是当对象使用到了本地非托管资源时,一定要记住及时地实现IDisposable接口,而使用者也一定要及时地调用IDisposable.Dispose()方法或者使用using()语句来自动地释放资源。 2.4单元测试、可测试性代码、持续重构 本节将介绍单元测试的意义,让大家明白重构是需要单元测试作为保障才得以实施的。大部分开发人员不明白单元测试的意义,也不懂得如何去写单元测试,所以也就谈不上把重构运用到项目的开发中去。 本节将循序渐进地勾画出重构与单元测试之间的艺术性,让大家彻底明白单元测试技术的重要性。 为了更好地理解本节内容,我们最好带着以下问题来阅读。 第一,你是否曾想过对某段逻辑进行重构,但是不敢改? 第二,你是否曾抱着很多设计模式、重构模式满怀信心地准备进行大面积的代码修改,结果却是无法下手对以往代码做任何微小修改?是不是会觉得自己所学的这些技术没有什么实际用处,从而导致你对学习失去了信心? 第三,你是否无法深刻理解敏捷开发到底改变了现在开发的哪些方面,到底敏捷在哪里? 第四,你是否无法明白别人所说的“持续重构出核心领域模型”的过程到底是怎样的? 如果你有上述疑问,那么学习本节内容之后,这些问题就会迎刃而解。 2.4.1单元测试的重要性及核心意义 首先需要说明的是,单元测试并不只是为了验证你目前所写的代码有没有问题,它更为重要的作用是,你一次编写好的测试用例是否可以在日后随时随地地运行,来验证你本次所修改的代码是否影响到了以往的业务逻辑。单元测试是一种保证你所写的代码在整个生命周期中都不会出BUG的防护墙,是具有重要价值的软件过程制品之一。 正是因为可以在日后随时随地保证代码的质量,所以我们就可以随时随地地进行重构,而不需要害怕自己的修改是否会使以往的代码出现BuG。毕竟大部分情况下我们都是在维护一个大型的系统,大型系统的生命周期很漫长,中间会有新功能的添加和旧功能的重构,所以单元测试是非常需要的,应该引起重视。如果没有单元测试,很难保证代码在一两年之后还是清晰的,那就百谈不卜“价值”二字了。 ……
前言/序言
.NET框架设计 模式、配置、工具 epub pdf mobi txt 电子书 下载 2024
.NET框架设计 模式、配置、工具 下载 epub mobi pdf txt 电子书 2024