首页>参考读物>计算机科学与技术>软件与程序设计

.NET之美:.NET关键技术深入解析
作者 : 张子阳 著
出版日期 : 2014-01-03
ISBN : 978-7-111-44532-6
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 444
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是.NET程序员进阶修炼的必读之作,拥有多年开发经验的资深.NET技术专家对C#和.NET中实用的、关键的和难以理解的知识点进行了深入解析,旨在帮助读者在尽可能短的时间内以尽可能低的学习成本去掌握那些最应该被掌握的知识。书中的每个知识点都辅之以精心设计的案例,易于理解,实践性强。
全书共17章,分为两个部分:第一部分(1-5章)主要讲解了C#语言中的一些关键知识点,如类型、泛型、委托、事件、对象、LINQ等;第二部分则对.NET中的关键知识点进行了深入地剖析,如程序集、流和序列化、加密与解密、网络编程、.NET Remoting、在.NET中操作XML、.NET应用程序配置、基于角色的安全性、反射、多线程、对象生存期与垃圾回收等。

图书特色

封面:
资深.NET技术专家多年开发经验结晶,悉数对C#和.NET中实用的、关键的和难以理解的知识点进行了深入解析,尽显.NET之美
每个知识点都辅之以精心设计的案例,理论与实践并重,是修炼为高级.NET程序员必读的著作之一

封底:
.NET从发布至今,已经超过了11个年头,每一个版本都会为满足时代要求而不断演进和革新,新特性越来越多,功能也越来越强大,与之相应的,.NET程序员想精通.NET的门槛和学习成本也越来越高。面对C#和.NET中的大量功能特性,哪些是关键的,哪些是实用的,哪些是不常用的,哪些是难理解或可能会被理解错误的,没有太多经验的中初级.NET程序员是很难把握的,要把这些问题搞清楚,需要不断地去探索和付出相对较高的时间成本。本书作者在.NET领域浸淫多年,深知初级.NET程序员们在修炼成为高级.NET程序员的道路上一定会遇到这些问题,于是根据自己的多年积累和经验,对C#和.NET中的技术知识点进行了梳理,把其中那些最为实用、十分关键和比较难懂的知识点筛选了出来,并进行了深入分析。

部分知识点列举如下:
C#中的值类型、引用类型、对象判等、对象复制、不可变类型等;
C#中的泛型、委托、事件、对象的筛选和排序、LINQ等;
.NET平台中的CIL、BCL、FCL、CTS、CLS、CLR、CLI等;
程序集、流和序列化、加密与解密、网络编程、.NET Remoting等;
在.NET中操作XML、.NET应用程序配置、基于角色的安全性、反射、多线程、对象生存期与垃圾回收等 ……

前:
本书不是一本大而全的.NET书籍,它放弃了一些过于基础和入门的内容,例如类型声明、循环语句、访问修饰符等,因为这些内容已经充斥于各种.NET书籍中了;也放弃了一些过于艰深的内容,例如代码访问安全性、并行编程等,因为它们几乎很少用到。而将重点集中在一些既常见又不好理解的主题上,例如.NET的架构、委托和事件、反射、网络编程等。


张子阳 资深.NET开发工程师和架构师, 精通C#和.NET相关技术,有8年.NET开发经验。对Web开发也有深入的研究,熟悉ASP.NET MVC等技术。活跃于博客园等技术社区,博客园资深.NET专家,有非常高的知名度,曾参与了《C#揭秘》一书的翻译和《博客园精华集》的编写,现担任深圳软商科技CTO。

图书前言

为什么要写这本书
  我一直认为写总结是学习的最好方式之一,因为总结的过程中也是一个不断思考的过程,可以让你的领悟更加深刻。作为一名.NET开发人员,有很多关键的知识点是必须掌握的,否则就会遇到很多障碍。不善于总结的人很难成为一名合格的.NET工程师。我就习惯将所遇到的各种知识点尽可能地研究透彻,然后总结成文章。起初,我将一些文章发表在了我的博客上,出乎意料的是大部分的文章都很受欢迎。有不少朋友留言或者发邮件给我,鼓励我出一本关于.NET的书。我想如果我的文章能帮助到更多的朋友,那么出一本又何妨?于是,就有了现在这本书。
  写书需要很高的技巧,对于一个技术或者知识点,自己理解它或许还算容易,但把自己理解的内容写出来让别人也能理解却不是一件容易的事情。书中的每个章节,我都尽量采用循序渐进的方式进行讲解,由一个看似简单、微不足道的知识点进行切入,随后不断延伸,从而展开整个主题。这种方式对于一些朋友来说可能稍嫌累赘,但对于大多数朋友来说会更容易接受。
  微软推出.NET已经有很多年了,现在市场已经不乏.NET的书籍,很多.NET开发人员的枕边案头已经堆放了不止一本的.NET书籍。因此,在本书中,我不想去重复一些简单基础的内容,因为很多书中都会涉及这方面的知识,例如类型声明、语法、循环语句等;也不想去写一些高深莫测几乎永远也用不到的特性和功能,例如代码访问安全性和一些很底层的东西。本书选择的主题,大多是关键、重要且不是很好理解的,相信认真学完本书,应该就可以帮你打通 “.NET任督二脉”了。
  .NET在过去十年当中的发展可谓是日新月异,经历了多次重要版本更新。2002推出了.NET的第一个版本1.0;2005年推出了.NET 2.0,2.0的最大变化就是引入了泛型,同时新增了大量的类型;2006年推出了.NET 3.0,并预装在Vista操作系统中,3.0主要引入了WF、WCF、WPF几项技术; 2007年推出了.NET3.5,3.5中最激动人心的变化就是引入了LINQ,LINQ的推出在很大程度上改变了以前程序员编程的习惯和方式;2010年.NET迎来了4.0版本,其中的主要革新是加入了动态编程、并行计算、默认参数、协变和逆变;目前,最先的版本是.NET 4.5,于2012年发布,4.5是对4.0的一个就地更新。展望未来,.NET还会不断地变化和发展,函数式编程、并行计算、动态特性都有可能成为.NET继续延伸的方向。
  显然,本书不可能涉及所有这些版本中引入的新特性,很多的单一主题就足够写一整本书了。但是,这本书将会帮助你奠定一个良好的.NET功底,有了这个功底以后,再去学习这些琳琅满目的新特性,就会变得得心应手了。
读者对象
  本书的读者对象是已经入门且正在向中高级进阶的.NET开发人员,包括:
   .NET 工程师
   由其他技术转向学习.NET的技术人员
   学习.NET的高校学生
  开设相关课程的大专院校的师生
如何阅读本书
  本书分为两大部分:
  第一部分为C#语言,C#是为.NET而生的语言,该部分重点讲解了类型基础、泛型、委托、LINQ几个部分。
  第二部分为.NET平台,共挑选了11个.NET中的重点主题进行讲解。
  本书各章的知识点是相对独立的,因此学习其中一个章并不需要你通读前面的所有章节,可以自由地选择感兴趣和薄弱的环节进行阅读。
勘误和支持
  由于我的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果在书中发现错误或疏漏,可以发送邮件至JimmyZhang@SoftComz.com与我联系,我会将勘误发表在我的博客上http://jimmyzhang.cnblogs.com。同时,如果在阅读中遇到任何问题,也可以给我发送邮件与我进行讨论。
致谢
  首先要感谢那些鼓励我出一本书的朋友们,如果不是一次次看到你们的留言、电子邮件、手机短信催促我出一本书,我是很难下定决心的。
  感谢机械工业出版社华章分社的编辑杨福川老师,当我提出出版一本书的时候,你给了我最大的支持。感谢机械工业出版社华章分社的姜影编辑,在写作的过程中不断修缮我的稿件,显著提升了我的文字水平和稿件的质量。
  感谢.NET社区―博客园cnblogs,通过这个平台我认识了非常多的.NET行业的朋友,与你们交流是一件很幸福的事。
  最后感谢我的家人,尤其是我的妻子,在编写本书的过程中,牺牲了很多照顾和陪伴你们的时间。
  谨以此书献给众多热爱.NET的朋友们!

张子阳(JimmyZhang)
于中国深圳

上架指导

计算机\程序设计

封底文字

认识张子阳是从拜读他在博客园上发表的ASP.NET系列文章开始,他把ASP.NET内核这样枯燥难懂的知识以通俗易懂的方式写了出来,被很多人誉为“学习ASP.NET的必读之作”,我很佩服他。这本书延续了他“深入浅出,化难为易”写作水平和风格,将.NET的很多底层知识诠释得淋漓尽致,让很多想学习这些知识的朋友不再苦苦地硬啃《CLR via C#》等大部头,相信这本书一定会成为技术人员在学习.NET过程中不可多得的佳作。
——汪洋 资深.NET技术专家和架构师/《.NET应用架构设计:原则、模式与实践》作者

如果你也像我一样是一个武侠迷的话,你应该知道,要练就一门让自己独步江湖的武功,“修炼心法”比“操练招式”更加重要,心法修炼的是内功,没有内功支撑的招式只是花拳绣腿。同为IT技术书籍作者,我深知目前市场上充斥的绝大部分.NET技术图书均为“招式速成手册”,但是本书则不同,它是一本招式和心法并重的武功秘笈,它不仅会教给你很多.NET编程方面的实用技巧,你还会详细讲解很多.NET Framework底层的原理。希望修炼这本秘笈的朋友们都能成为“大内高手”。
——蒋金楠 资深.NET技术专家/《Asp.NET MVC框架揭秘》作者
.NET从发布至今,已经超过了11个年头,每一个版本都会为满足时代要求而不断演进和革新,新特性越来越多,功能也越来越强大,与之相应的,.NET程序员想精通.NET的门槛和学习成本也越来越高。面对C#和.NET中的大量功能特性,哪些是关键的,哪些是实用的,哪些是不常用的,哪些是难理解或可能会被理解错误的,没有太多经验的中初级.NET程序员是很难把握的,要把这些问题搞清楚,需要不断地去探索和付出相对较高的时间成本。本书作者在.NET领域浸淫多年,深知初级.NET程序员们在修炼成为高级.NET程序员的道路上一定会遇到这些问题,于是根据自己的多年积累和经验,对C#和.NET中的所有技术知识点进行了梳理,把其中那些最为实用、十分关键和比较难懂的知识点筛选了出来,并进行了深入分析。
部分知识点列举如下:
(1) C#中的值类型、引用类型、对象判等、对象复制、不可变类型等;
(2) C#中的泛型、委托、事件、对象的筛选和排序、LINQ等;
(3) .NET平台中的CIL、BCL、FCL、CTS、CLS、CLR、CLI等;
(4) 程序集、流和序列化、加密与解密、网络编程、.NET Remoting等;
(5) 在.NET中操作XML、.NET应用程序配置、基于角色的安全性、反射、多线程、对象生存期与垃圾回收等
……

作者简介

张子阳 著:暂无简介

图书目录

第一部分 C#语言基础
第1章 C#类型基础 2
1.1 值类型和引用类型 2
1.1.1 值类型 2
1.1.2 引用类型 5
1.1.3 简单类型 6
1.1.4 装箱和拆箱 7
1.2 对象判等 8
1.2.1 引用类型判等 9
1.2.2 简单值类型判等 10
1.2.3 复杂值类型判等 12
1.3 对象复制 14
1.3.1 浅度复制 14
1.3.2 深度复制 17
1.4 不可变类型 19
1.4.1 从类型设计谈起,Class还是Struct 19
1.4.2 数据不一致的问题 20
1.4.3 常量性和原子性 20
1.4.4 避免外部类型对类型内部的访问 21
1.5 本章小结 23
第2章 C#中的泛型 24
2.1 理解泛型 24
2.1.1 为什么要有泛型 24
2.1.2 类型参数约束 27
2.1.3 泛型方法 31
2.2 泛型与集合类型 32
2.2.1 避免隐式的装箱和拆箱 32
2.2.2 编译时的类型安全 34
2.2.3 使用泛型的一个小技巧 34
2.3 本章小结 35
第3章 C#中的委托和事件 36
3.1 理解委托 36
3.1.1 将方法作为方法的参数 36
3.1.2 将方法绑定到委托 39
3.1.3 委托与接口 41
3.2 事件的由来 42
3.2.1 更好的封装性 42
3.2.2 限制类型能力 45
3.3 委托的编译代码 47
3.4 .NET框架中的委托和事件 48
3.4.1 示例说明 48
3.4.2 Observer设计模式简介 49
3.4.3 实现示例的Observer设计模式 50
3.4.4 .NET框架中的委托与事件 51
3.5 委托进阶 53
3.5.1 为什么委托定义的返回值通常都为void 53
3.5.2 如何让事件只允许一个客户订阅 54
3.5.3 获得多个返回值与异常处理 56
3.6 订阅者方法超时的处理 60
3.7 委托和方法的异步调用 64
3.8 不使用委托实现Observer模式 69
3.8.1 设计思想概述 69
3.8.2 Observer模式的接口定义 70
3.8.3 Observer模式的实现 72
3.8.4 推模式和拉模式 74
3.8.5 推模式和拉模式的区别 79
3.9 本章小结 79
第4章 对象的筛选和排序 80
4.1 对象的筛选 80
4.1.1 基于拼装SQL的筛选 80
4.1.2 基于对象的筛选 84
4.1.3 事件探查器 89
4.2 对象的排序 89
4.2.1 简单排序—对固定属性的默认排序 90
4.2.2 高级排序—多个属性组合排序 92
4.2.3 页面调用 96
4.3 本章小结 96
第5章 LINQ 97
5.1 LINQ预备知识 98
5.1.1 泛型和委托 98
5.1.2 隐式类型的局部变量 100
5.1.3 匿名类型 101
5.1.4 扩展方法 102
5.1.5 匿名方法和Lambda表达式 104
5.2 集合 107
5.2.1 理解集合 107
5.2.2 创建集合类 108
5.2.3 实现IEnumerable接口 113
5.3 LINQ查询 115
5.3.1 LINQ to Objects 115
5.3.2 查询表达式 116
5.3.3 延迟加载 117
5.3.4 混合使用LINQ to Objects 120
5.4 LINQ查询运算符 121
5.4.1 返回IEnumerable 121
5.4.2 返回其他序列类型 127
5.4.3 返回序列中元素 127
5.4.4 返回标量值 129
5.4.5 其他方法 130
5.5 本章小结 130
第二部分 .NET框架
第6章 认识.NET平台 132
6.1 引子 132
6.2 CIL—公共中间语言 133
6.3 BCL和FCL 136
6.3.1 BCL—基类库 136
6.3.2 FCL—框架类库 140
6.4 CTS—公共类型系统 140
6.5 CLS—公共语言规范 141
6.6 CLR—公共语言运行时 143
6.6.1 程序集概述 143
6.6.2 运行程序集 145
6.7 CLI—公共语言基础 147
6.8 本章小结 147
第7章 程序集 148
7.1 程序集详探 148
7.1.1 程序集模块 148
7.1.2 清单和元数据 151
7.1.3 程序集资源 153
7.2 强名称程序集 159
7.2.1 非强名称程序集的问题 159
7.2.2 强名称的定义 161
7.2.3 为程序集赋予强名称 162
7.2.4 防篡改和数字签名 163
7.2.5 全局程序集缓存 165
7.2.6 延迟签名 167
7.3 本章小结 168
第8章 流和序列化 169
8.1 文件 169
8.1.1 不同视角下的文件 169
8.1.2 位、字节和字节数组 170
8.2 流 171
8.2.1 关于流的类比 171
8.2.2 使用流进行文件复制 172
8.2.3 流的类型体系 175
8.3 序列化 180
8.3.1 基本操作 180
8.3.2 事件响应 183
8.3.3 自定义序列化过程 186
8.4 本章小结 188
第9章 .NET中的加密和解密 189
9.1 加密和解密的相关概念 189
9.1.1 散列运算 190
9.1.2 对称加密 191
9.1.3 非对称加密 192
9.1.4 数字签名 194
9.1.5 综合实现 195
9.1.6 证书机制 195
9.2 .NET对加密和解密的支持 196
9.2.1 散列运算 196
9.2.2 对称加密和解密 198
9.2.3 非对称加密 201
9.3 本章小结 206
第10章 网络编程 207
10.1 网络编程基本概念 207
10.1.1 面向连接的传输协议—TCP 207
10.1.2 即时通信程序的三种模式 209
10.2 基本操作 211
10.2.1 服务端对端口进行侦听 211
10.2.2 客户端与服务端连接 212
10.2.3 服务端获取客户端连接 215
10.3 同步传输字符串 218
10.3.1 客户端发送,服务端接收并输出 218
10.3.2 服务端回发,客户端接收并输出 224
10.3 中英文字符大小和文本边界问题 226
10.4.1 ASCII、UTF8、Unicode编码下的中英文字符大小 226
10.4.2 文本边界问题 228
10.5 异步传输字符串 233
10.5.1 服务端的实现 234
10.5.2 客户端的实现 235
10.5.3 程序测试 237
10.6 文件传输 238
10.6.1 订立协议 239
10.6.2 协议处理类的实现 240
10.6.3 客户端发送文件 242
10.7 本章小结 249
第11章 .NET Remoting 250
11.1 理解Remoting 250
11.1.1 应用程序域基本概念 250
11.1.2 应用程序域的基本操作 251
11.1.3 在默认应用程序域中创建对象 252
11.1.4 在新建应用程序域中创建对象 253
11.1.5 代理和封送 254
11.1.6 传引用封送示例 256
11.1.7 服务程序集、服务端应用程序(域)和客户端应用程序(域) 258
11.2 Remoting架构 258
11.2.1 客户端(客户应用程序域) 259
11.2.2 服务端(宿主应用程序域) 259
11.2.3 Remoting对象的三种激活方式 259
11.3 Remoting程序的基本操作 261
11.3.1 服务程序集 261
11.3.2 服务端应用程序 262
11.3.3 客户端应用程序 265
11.3.4 程序运行测试 267
11.4 Remoting中的传值封送 271
11.5 分离服务程序集元数据和代码实现 272
11.5.1 使用接口分离服务程序集 273
11.5.2 使用“空类”分离服务程序集 275
11.5.3 使用Soapsuds.exe分离程序集 278
11.5.4 使用工厂方法实现分离 280
11.6 Remoting中的方法回调 283
11.6.1 远程回调方式说明 283
11.6.2 客户端类型和服务端类型 284
11.6.3 服务端、客户端会话模型 286
11.6.4 宿主应用程序 286
11.6.5 程序运行测试 288
11.7 本章小结 289
第12章 在.NET中操作XML 290
12.1 XML概述 290
12.1.1 为什么要有XML 290
12.1.2 XML文档结构 292
12.1.3 XML的处理模型 296
12.1.4 XML验证—XSD、DTD和XDR 297
12.1.5 XML格式转换—XSLT 299
12.1.6 XML选择器—XPATH 299
12.2 操作XML 300
12.2.1 节点类型 300
12.2.2 使用XmlReader和XmlWriter 302
12.2.3 使用XmlDocument和XPath 306
12.2.4 使用XSD验证XML 309
12.2.5 使用XSLT对XML进行转换 311
12.3 本章小结 312
第13章 .NET应用程序配置 314
13.1 .NET中的程序配置介绍 314
13.2 .NET应用程序配置方法 316
13.2.1 使用 .NET内置节点和 .NET内置处理程序 316
13.2.2 使用自定义节点和.NET内置处理程序 318
13.2.3 使用自定义节点和自定义处理程序 321
13.2.4 “存储”类型实例 329
13.2.5 统一节点配置管理 335
13.3 本章小结 338
第14章 基于角色的安全性 339
14.1 概述 339
14.2 在ASP.NET中使用基于角色的安全性 341
14.3 开始前的准备 341
14.3.1 创建页面,配置Web.config 341
14.3.2 创建用户数据表和数据访问 342
14.4 用户登录—为IIdentity添加用户数据 344
14.4.1 Login.aspx页面实现 344
14.4.2 Default.aspx 页面预览 346
14.5 自定义IPrincipal和IIdentity 347
14.6 自定义类型携带用户数据 350
14.7 本章小结 353
第15章 .NET中的反射 354
15.1 反射初步 354
15.1.1 建表及其问题 354
15.1.2 数组及其问题 355
15.1.3 枚举及其问题 356
15.1.4 使用反射遍历枚举字段 357
15.1.5 使用泛型来达到代码重用 359
15.1.6 .NET中反射的一个示例 360
15.2 Type类 362
15.2.1 反射的作用 362
15.2.2 获取Type对象实例 362
15.2.3 Type类型及System.Reflection命名空间的组织结构 362
15.3 反射程序集 365
15.4 反射基本类型 367
15.4.1 获取基本信息 367
15.4.2 成员信息与MemberInfo 类型 369
15.4.3 字段信息与FieldInfo类型 371
15.4.4 属性信息与PropertyInfo类型 372
15.4.5 方法信息与MethodInfo类型 373
15.4.6 ConstructorInfo类型和EventInfo类型 373
15.5 反射特性 373
15.5.1 .NET内置特性介绍 374
15.5.2 自定义特性(CustomAttributes) 375
15.5.3 使用反射查看自定义特性 380
15.6 动态创建对象 381
15.6.1 使用无参数构造函数创建对象 381
15.6.2 使用有参数构造函数创建对象 382
15.7 动态调用方法 382
15.7.1 使用InvokeMember调用方法 383
15.7.2 使用MethodInfo.Invoke调用方法 384
15.8 示例:遍历System.Drawing.Color结构 385
15.9 本章小结 388
第16章 多线程 389
16.1 线程的概念 389
16.2 线程的基本操作 392
16.2.1 创建新线程 392
16.2.2 查看当前线程 394
16.2.3 Sleep()方法 394
16.2.4 Interrupt()方法 395
16.2.5 前台线程和后台线程 396
16.2.6 Join()方法 397
16.2.7 Suspend()和Resume()方法 398
16.2.8 线程异常 400
16.2.9 Abort()方法 401
16.3 线程同步 402
16.3.1 使用Monitor 403
16.3.2 使用WaitHandle 413
16.4 本章小结 421
第17章 对象生存期与垃圾收集 422
17.1 基础概念回顾 422
17.2 垃圾回收机制 424
17.2.1 判断哪些对象需要进行回收 424
17.2.2 对象如何分配在堆上 425
17.2.3 垃圾回收的执行过程 426
17.3 对象析构 428
17.3.1 Finalizer析构器 428
17.3.2 Dispose()和Finalize() 429
17.3.3 结合析构器函数和Dispose() 431
17.4 本章小结 432

教学资源推荐
作者: 苏运霖
作者: 刘振安
作者: [美]埃里克 S. 罗伯茨(Eric S. Roberts) 著
作者: [美]基普·欧文(Kip Irvine) 著
参考读物推荐
作者: 廖世恩 许宏送
作者: Kevin Mukhar Chris Zelenak James L.Weaver Jim Crume
作者: 陆凌牛 著