作为深受编程人员爱戴和尊敬的编程专家,微软.NET开发团队的顾问,本书作者Jeffrey Richter针对开发各种应用程序(如Web Form、Windows Form和Web服务、Microsoft SQL Server解决方案、控制台应用程序、NT Service)的开发人员,深入揭示了公共语言运行库(CLR)和.NET Framework.,演示了如何将这些知识应用到实际开发。全书分5部分,共24章。第Ⅰ部分讲述CLR基础,第Ⅱ部分介绍类型的使用,第Ⅲ部分说明类型的设计,第Ⅳ部分介绍基本类型,第Ⅴ部分讲述CLR实用特性。 \r\n 通过本书的阅读,读者可以掌握CLR精髓,轻松、高效地创建高性能应用程序。
第Ⅰ部分 CLR基础 \r\n 第1章 CLR的执行模型\r\n 第2章 生成、打包、部署和管理应用程序及类型 \r\n 第3章 共享程序集和强命名程序集\r\n第Ⅱ部分 类型的使用 \r\n 第4章 类型基础\r\n 第5章 基元、引用和值类型 \r\n第Ⅲ部分 类型的设计 \r\n 第6章 类型和成员基础\r\n 第7章 常量和字段\r\n 第8章 方法:构造器、操作符、转换操作符和参数 \r\n 第9章 属性\r\n 第10章 事件\r\n第Ⅳ部分 基本类型 \r\n 第11章 字符、字符串和文本\r\n 第12章 枚举类型和位标志\r\n 第13章 数组\r\n 第14章 接口\r\n 第15章 委托\r\n 第16章 泛型\r\n 第17章 自定义属性\r\n 第18章 可空值类型\r\n第Ⅴ部分 CLR实用特性 \r\n 第19章 异常\r\n 第20章 自动内存管理(垃圾收集)\r\n 第21章 CLR寄宿和应用程序域 \r\n 第22章 程序集的加载与反射 \r\n 第23章 执行异步操作\r\n 第24章 线程同步
CLR之美
“合抱之木,生于毫末;九层之台,起于垒土”,整个.Net大厦建筑的基础技术上讲就是CLR,它不仅仅是.Net的运行环境,也是.Net程序员所看到的操作系统环境、网络环境和设备环境。CLR是庞大而复杂的,不过同样因为这点决定了上层.Net应用的绚丽多彩。
CLR给我们带来了JIT、垃圾回收、MSIL、Meta Data、Application Domain等一系列新的概念,它们共同协作,合力打造了一个与非托管代码完全不同的一个新的开发环境,其中每一个组件如何和谐地与其他组件协作,平稳地运行.Net应用,只有拨开CLR,才能看得清楚。学习和深入了解CLR对于用.Net平台开发高质量的应用和系统软件都有弥足珍贵的重要意义,但如果想深入了解CLR的执行过程,需要跳出贯有的思维方式加以考虑,也就是要采用自下而上的方式分析。要从CLR的执行结果入手分析各种.Net语言的代码如何经过CLR变成程序集。对于多数.Net开发人员而言,面对每天都打交道的这个CLR,就像是一个旅者来到一座没有任何交通指示的繁华城市面前一样,贸然走入无疑会迷失和淹没在这一片繁华之中。
感谢Jeffrey先生毫无保留地把他与CLR团队多年来朝夕相处所积累的精华沉淀到这本书中。全书以极为严格的条理,借助C#语言,循序渐进地通过各种功能表像剖析每一个CLR功能组件,用丰富和翔实的示例启发读者如何写出.Net程序员与CLR和谐奏鸣的高质量软件。
与其他绝大多数.Net书籍围绕某个.Net语言本身不同,Jeff先生更多的是把具体的.Net语言作为一个隐含内容给出(有兴趣的读者可以参考本书的姊妹篇《CLR via C++/CLI》),其中介绍的每个内容更多地围绕着CLR来给出。本书只是用上层开发人员所熟悉的C#语言作为功能描述的入口,通过分析IL来揭示CLR的运行本质。本书清晰而明确地给出了.Net Framework中的关键技术的运行方式,其中很多技术即使在MSDN和.Net Framework SDK中也很难找到详细的介绍,如下内容在书中进行了重点展开:
.Net Framework的结构是如何设计的?相较于以往的COM时代,在这种设计下开发、使用和部署.Net应用程序有何重大变化?
一段.Net语言程序是如何转变成IL的?这些IL又是采用何种方式保存,并被CLR提交给不同的运行宿主进程执行的?执行过程中托管代码和非托管代码又是CLR通过何种控制实现的,系统层面的处理器和内存又是如何通过CLR和.Net环境联系到一起。
为什么要为程序集配置元信息(Meta Data),这些元信息在执行过程中是如何被CLR所使用的?作为应用.Net应用的开发人员,我们如何生成和使用这些元信息。
开发中使用的各种数据类型是如何被CLR辨识的,之后他们是如何被CLR所管理和组织的,进而为应用的执行提供支持。
类、各种类成员是如何被CLR拼装的,面向对象技术所采用的封装、继承、多态和各种抽象从.Net语言代码翻译到IL的过程是怎样的,所有的类成员和类方法最后又是如何在CLR的控制下组合成一个个可以执行的实例被执行的。
异常处理的底层实现是怎么样的?如何实现结构化的异常处理?根据CLR异常实现的原理确定应用该怎么设计,才能更好的捕捉能力所及且有应该处理的异常。
内存回收机制的原理是如何的?怎样更好的根据该机制的实现原理控制各类对象的使用,保证我们设计的应用轻装前进。
什么是反射机制?CLR是如何实现的。
什么是多线程?根据CLR的多线程执行特点,怎样才可以写出高效、可控的.Net多线程应用。
如何通过接口和范型定义并更好的重用已有算法
如果通过代理声明、使用回调函数
如何定义和使用属性(Attribute),并且在应用中发现属性定义的内容
不仅如此,Jeff先生根据自己的经验,在必要的关键之处适当地提醒读者可能遇到的陷阱,同时也考虑到应用情形的不同,对同一功能实现给出多种多样的解决办法。本书面向.Net Framework 2.0和C# 编译器8.0,因此个人觉得有点遗憾,Jeffrey先生没有把范型和委托的内容详细展开。但我相信,在了;理解了类及其成员的拼接过程后,再参考相关资料,读者可以自己了解这些特性的CLR实现过程。但即便如此,本人认为仅仅多线程部分一章的介绍实际上对于读者而言,已经很有技术意义了,
此外,本人非常喜欢Jeffrey先生的写作风格,总是一个设问之后紧接着给出答案,读起来每每感到好像正与Jeff先生促膝而谈。本书
Jeffrey Richter是全球有盛誉的技术作家,Wintellect公司的创办人之一。该公司专门从事培训、调试和咨询,帮助客户构建更好、更快的软件。
无封面