本书来自于微软MVP的最新技术心得和感悟,将技术问题以生动易懂的语言展开,层层深入,以例说理。全书主要包括了.NET基础知识及其深度分析,以.NET Framework和CLR研究为核心展开.NET本质论述,涵盖了.NET基本知识几乎所有的重点内容。全书分为5个部分,第1部分讲述.NET与面向对象,从底层实现角度分析了.NET如何实现面向对象机制,进一步分析了面向对象设计原则;第2部分论述了.NET类型系统和CLR的内存管理机制,并对IL语言进行了相应介绍;第3部分论述.NET Framework框架的方方面面,详细分析了.NET框架的所有重点、难点和疑点内容,对框架类库的全貌进行了必要的专题性探讨;第4部分重点介绍了.NET泛型和安全性的相关知识和本质解密;第5部分对.NET 3.0/3.5新特性进行了详细的介绍和引导,对于快速入门.NET新特性提供了方便之门。
本书适于对.NET有一定了解的技术学习者、软件工程师和系统架构师阅读,同时也有助于.NET初学者进行快速提高,可作为大中专院校和.NET技术培训机构的参考教材。
第1部分 渊源
——.NET与面向对象
第1章 OO大智慧 2
1.1 对象的旅行 3
1.1.1 引言 3
1.1.2 出生 3
1.1.3 旅程 4
1.1.4 插曲 5
1.1.5 消亡 8
1.1.6 结论 8
1.2 什么是继承 9
1.2.1 引言 9
1.2.2 基础为上 9
1.2.3 继承本质论 12
1.2.4 密境追踪 16
1.2.5 规则制胜 21
1.2.6 结论 21
1.3 封装的秘密 22
1.3.1 引言 22
1.3.2 让ATM告诉你,什么是封装 22
1.3.3 秘密何处:字段、属性和方法 24
1.3.4 封装的意义 29
1.3.5 封装规则 30
1.3.6 结论 31
1.4 多态的艺术 32
1.4.1 引言 32
1.4.2 问题的抛出 32
1.4.3 最初的实现 33
1.4.4 多态,救命的稻草 36
1.4.5 随需而变的业务 40
1.4.6 多态的类型、本质和规则 41
1.4.7 结论 44
1.5 玩转接口 45
1.5.1 引言 45
1.5.2 什么是接口 45
1.5.3 .NET中的接口 47
1.5.4 面向接口的编程 50
1.5.5 接口之规则 52
1.5.6 结论 53
参考文献 54
第2章 OO大原则 55
2.1 OO原则综述 56
2.1.1 引言 56
2.1.2 讲述之前 56
2.1.3 原则综述 57
2.1.4 学习建议 58
2.1.5 结论 59
2.2 单一职责原则 60
2.2.1 引言 60
2.2.2 引经据典 60
2.2.3 应用反思 60
2.2.4 规则建议 63
2.2.5 结论 64
2.3 开放封闭原则 65
2.3.1 引言 65
2.3.2 引经据典 65
2.3.3 应用反思 66
2.3.4 规则建议 71
2.3.5 结论 71
2.4 依赖倒置原则 72
2.4.1 引言 72
2.4.2 引经据典 72
2.4.3 应用反思 73
2.4.4 规则建议 75
2.4.5 结论 75
2.5 接口隔离原则 76
2.5.1 引言 76
2.5.2 引经据典 76
2.5.3 应用反思 77
2.5.4 规则建议 79
2.5.5 结论 79
2.6 Liskov替换原则 80
2.6.1 引言 80
2.6.2 引经据典 80
2.6.3 应用反思 81
2.6.4 规则建议 83
2.6.5 结论 83
参考文献 84
第2部分 本质
——.NET深入浅出
第3章 一切从IL开始 86
3.1 从Hello,world开始认识IL 87
3.1.1 引言 87
3.1.2 从Hello,world开始 87
3.1.3 IL体验中心 87
3.1.4 结论 92
3.2 教你认识IL代码——从基础到
工具 93
3.2.1 引言 93
3.2.2 使用工具 93
3.2.3 为何而探索 96
3.2.4 结论 96
3.3 教你认识IL代码——IL语言基础 97
3.3.1 引言 97
3.3.2 变量的声明 97
3.3.3 基本类型 98
3.3.4 基本运算 99
3.3.5 数据加载与保存 100
3.3.6 流程控制 101
3.3.7 结论 102
3.4 经典指令解析之实例创建 103
3.4.1 引言 103
3.4.2 newobj和initobj 103
3.4.3 ldstr 105
3.4.4 newarr 107
3.4.5 结论 110
3.5 经典指令解析之方法调度 111
3.5.1 引言 111
3.5.2 方法调度简论:call、callvirt
3.5.2 和calli 111
3.5.3 直接调度 113
3.5.4 间接调度 119
3.5.5 动态调度 120
3.5.6 结论 120
参考文献 121
第4章 品味类型 122
4.1 品味类型——从通用类型系统开始 123
4.1.1 引言 123
4.1.2 基本概念 123
4.1.3 位置与关系 125
4.1.4 通用规则 126
4.1.5 结论 127
4.2 品味类型——值类型与引用类型 128
4.2.1 引言 128
4.2.2 内存有理 128
4.2.3 通用规则与比较 133
4.2.4 对症下药——应用场合与
4.2.4 注意事项 135
4.2.5 再论类型判等 136
4.2.6 再论类型转换 137
4.2.7 以代码剖析 139
4.2.8 结论 147
4.3 参数之惑——传递的艺术 148
4.3.1 引言 148
4.3.2 参数基础论 148
4.3.3 传递的基础 149
4.3.4 深入讨论,传递的艺术 151
4.3.5 结论 157
4.4 皆有可能——装箱与拆箱 158
4.4.1 引言 158
4.4.2 品读概念 159
4.4.3 原理分拆 160
4.4.4 还是性能 163
4.4.5 重在应用 165
4.4.6 结论 168
参考文献 169
第5章 内存天下 170
5.1 内存管理概要 171
5.1.1 引言 171
5.1.2 内存管理概观要论 171
5.1.3 结论 173
5.2 对象创建始末 174
5.2.1 引言 174
5.2.2 内存分配 174
5.2.3 结论 182
5.3 垃圾回收 183
5.3.1 引言 183
5.3.2 垃圾回收 183
5.3.3 非托管资源清理 189
5.3.4 结论 197
5.4 性能优化的多方探讨 198
5.4.1 引言 198
5.4.2 性能条款 198
5.4.3 结论 207
参考文献 208
第3部分 格局
——.NET面面俱到
第6章 深入浅出——关键字的秘密 210
6.1 把new说透 211
6.1.1 引言 211
6.1.2 基本概念 211
6.1.3 深入浅出 214
6.1.4 结论 216
6.2 base和this 217
6.2.1 引言 217
6.2.2 基本概念 217
6.2.3 深入浅出 218
6.2.4 通用规则 223
6.2.5 结论 223
6.3 using的多重身份 224
6.3.1 引言 224
6.3.2 引入命名空间 224
6.3.3 创建别名 225
6.3.4 强制资源清理 227
6.3.5 结论 231
6.4 转换关键字 232
6.4.1 引言 232
6.4.2 自定义类型转换探讨 232
6.4.3 本质分析 234
6.4.4 结论 236
6.5 预处理指令关键字 237
6.5.1 引言 237
6.5.2 预处理指令简述 237
6.5.3 #if、#else、#elif、#endif 238
6.5.4 #define、#undef 239
6.5.5 #warning、#error 239
6.5.6 #line 240
6.5.7 结论 241
6.6 非主流关键字 242
6.6.1 引言 242
6.6.2 checked/unchecked 242
6.6.3 yield 244
6.6.4 lock 248
6.6.5 unsafe 251
6.6.6 sealed 252
6.6.7 结论 253
参考文献 254
第7章 巅峰对决——走出误区 255
7.1 什么才是不变:const和readonly 256
7.1.1 引言 256
7.1.2 从基础到本质 257
7.1.3 比较,还是规则 260
7.1.4 进一步的探讨 262
7.1.5 结论 265
7.2 后来居上:class和struct 266
7.2.1 引言 266
7.2.2 基本概念 266
7.2.3 相同点,不同点 267
7.2.4 经典示例 269
7.2.5 结论 272
7.3 历史纠葛:特性和属性 273
7.3.1 引言 273
7.3.2 概念引入 273
7.3.3 通用规则 275
7.3.4 特性的应用 276
7.3.5 应用示例 279
7.3.6 结论 281
7.4 面向抽象编程:接口和抽象类 282
7.4.1 引言 282
7.4.2 概念引入 282
7.4.3 相同点,不同点 284
7.4.4 经典示例 287
7.4.5 他山之石 290
7.4.6 结论 291
7.5 恩怨情仇:is和as 292
7.5.1 引言 292
7.5.2 概念引入 292
7.5.3 原理与示例说明 292
7.5.4 结论 294
7.6 貌合神离:覆写和重载 295
7.6.1 引言 295
7.6.2 认识覆写和重载 295
7.6.3 在多态中的应用 298
7.6.4 比较,还是规则 299
7.6.5 进一步的探讨 300
7.6.6 结论 303
7.7 有深有浅的克隆:浅拷贝和
7.7 深拷贝 304
7.7.1 引言 304
7.7.2 从对象克隆说起 304
7.7.3 浅拷贝和深拷贝的实现 306
7.7.4 结论 309
7.8 动静之间:静态和非静态 310
7.8.1 引言 310
7.8.2 一言蔽之 310
7.8.3 分而致之 311
7.8.4 结论 318
7.9 集合通论 319
7.9.1 引言 319
7.9.2 中心思想——纵论集合 319
7.9.3 各分秋色——.NET集合类
大观 325
7.9.4 自我成全——实现自定义集合 331
7.9.5 结论 334
参考文献 335
第8章 本来面目——框架诠释 336
8.1 万物归宗:System.Object 337
8.1.1 引言 337
8.1.2 初识 337
8.1.3 分解 338
8.1.4 意义 342
8.1.5 结论 343
8.2 规则而定:对象判等 344
8.2.1 引言 344
8.2.2 本质分析 345
8.2.3 覆写Equals方法 349
8.2.4 与GetHashCode方法同步 351
8.2.5 规则 352
8.2.6 结论 352
8.3 如此特殊:大话String 353
8.3.1 引言 353
8.3.2 字符串创建 353
8.3.3 字符串恒定性 354
8.3.4 字符串驻留 355
8.3.5 字符串操作典籍 358
8.3.6 补充的礼物:StringBuilder 362
8.3.7 结论 364
8.4 简易不简单:认识枚举 365
8.4.1 引言 365
8.4.2 枚举类型解析 365
8.4.3 枚举种种 369
8.4.4 位枚举 372
8.4.5 规则与意义 373
8.4.6 结论 374
8.5 一脉相承:委托、匿名方法和
8.5 Lambda表达式 375
8.5.1 引言 375
8.5.2 解密委托 375
8.5.3 委托和事件 379
8.5.4 匿名方法 382
8.5.5 Lambda表达式 383
8.5.6 规则 383
8.5.7 结论 384
8.6 直面异常 385
8.6.1 引言 385
8.6.2 为何而抛? 385
8.6.3 从try/catch/finally说起:解析
8.6.3 异常机制 389
8.6.4 .NET系统异常类 392
8.6.5 定义自己的异常类 395
8.6.6 异常法则 398
8.6.7 结论 399
参考文献 400
第9章 格局之选——命名空间剖析 401
9.1 基础——.NET框架概览 402
9.1.1 引言 402
9.1.2 框架概览 402
9.1.3 历史变迁 403
9.1.4 结论 406
9.2 布局——框架类库研究 407
9.2.1 引言 407
9.2.2 为什么了解? 407
9.2.3 框架类库的格局 407
9.2.4 一点补充 410
9.2.5 结论 411
9.3 根基——System命名空间 412
9.3.1 引言 412
9.3.2 从基础类型说起 412
9.3.3 基本服务 414
9.3.4 结论 416
9.4 核心——System次级命名空间 417
9.4.1 引言 417
9.4.2 System.IO 418
9.4.3 System. Diagnostics 419
9.4.4 System.Runtime.Serialization和
9.4.4 System.Xml.Serialization 421
9.4.5 结论 423
参考文献 424
第4部分 拾遗
——.NET也有春天
第10章 接触泛型 426
10.1 追溯泛型 427
10.1.1 引言 427
10.1.2 推进思维,为什么泛型? 427
10.1.3 解析泛型——运行时本质 430
10.1.4 结论 431
10.2 了解泛型 432
10.2.1 引言 432
10.2.2 领略泛型——基础概要 432
10.2.3 典型.NET泛型类 436
10.2.4 基础规则 436
10.2.5 结论 437
10.3 深入泛型 438
10.3.1 引言 438
10.3.2 泛型方法 438
10.3.3 泛型接口 441
10.3.4 泛型委托 443
10.3.5 结论 444
参考文献 445
第11章 如此安全性 446
11.1 怎么样才算是安全 447
11.1.1 引言 447
11.1.2 怎么样才算是安全 447
11.1.3 .NET安全模型 448
11.1.4 结论 448
11.2 代码访问安全 449
11.2.1 引言 449
11.2.2 证据(Evidence) 449
11.2.3 权限(Permission)和
11.2.3 权限集 451
11.2.4 代码组(Code Group) 453
11.2.5 安全策略(Security
11.2.5 Policy) 454
11.2.6 规则总结 456
11.2.7 结论 456
11.3 基于角色的安全 457
11.3.1 引言 457
11.3.2 Principal(主体) 457
11.3.3 Identity(标识) 458
11.3.4 PrincipalPermission 459
11.3.5 应用示例 459
11.3.6 结论 461
参考文献 462
第5部分 未来
——.NET技术展望
第12章 .NET 3.0/3.5新革命 464
12.1 品读新特性 465
12.1.1 引言 465
12.1.2 .NET新纪元 465
12.1.3 程序语言新特性 466
12.1.4 WPF、WCF、WF 466
12.1.5 Visual Studio 2008新体验 467
12.1.6 其他 467
12.1.7 结论 468
12.2 赏析C# 3.0 469
12.2.1 引言 469
12.2.2 对象初始化器
12.2.3 (Object Initializers) 469
12.2.3 集合初始化器
12.2.3 (Collection Initializers) 470
12.2.4 自动属性
12.2.3 (Automatic Properties) 472
12.2.5 隐式类型变量(Implicitly
12.2.5 Typed Local Variables)和隐式
12.2.5 类型数组(Implicitly
12.2.5 Typed Array) 474
12.2.6 匿名类型
12.2.5 (Anonymous Type) 475
12.2.7 扩展方法(Extension
12.2.5 Methods) 477
12.2.8 查询表达式
12.2.8 (Query Expressions) 479
12.2.9 结论 480
12.3 体验LINQ 481
12.3.1 引言 481
12.3.2 LINQ概览 481
12.3.3 查询操作符 483
12.3.4 LINQ to XML示例 484
12.3.5 规则 486
12.3.6 结论 486
12.4 抢鲜Visual Studio 2008 487
12.4.1 引言 487
12.4.2 Visual Studio 2008概览 487
12.4.3 新特性简介 487
12.4.4 开发示例 489
12.4.5 结论 491
12.5 江湖一统:WPF、WCF、WF 492
12.5.1 引言 492
12.5.2 WPF 492
12.5.3 WCF 493
12.5.4 WF 495
12.5.5 结论 496
参考文献 497
编后记:遇见幸福 498
若干年前,我迈出校门开始了职业生涯,.NET这个初听还略显别扭的单词从此成了我生命中不可或缺的一部分。入职的第一天,我和一位新同事讨论如何才能有效地学好.NET的问题,对于究竟应该先学什么,后学什么产生了很大的分歧。我的观点是基于.NET的编程语言,C#或者VB.NET,较之.NET Framework更加易于入门,应该先精通编程语言,再学习.NET Framework。而对方则认为.NET Framework是基础,如果对.NET Framework有一个深入了解后再学习编程语言,则将事半功倍。
然而,就我个人近年来的学习经历来看,我们当初都走入了极端。对一个.NET的初学者,.NET Framework和基于.NET 编程语言的学习不该分谁先谁后。编程语言是一个程序员最基本的工具,与我们一般的语言一样,无外乎有两个基本的要素:语法和词汇。但是倘若要精通它,则需要对.NET Framework,尤其是对CLR有一个深刻的认知。无论C#和VB.NET,这些基本.NET的编程语言都是建立在.NET Framework之上的,我们编写的程序所表现出来的一些行为和特性往往不能在编程语言的层面上得到合理的解释,而只能在.NET Framework层面上去寻求答案。所以二者的学习是一个不断回归的过程,对.NET Framework的疑虑,可以通过编程语言编写相应的程序去验证;编程语言体现出来的不能得到合理解释的行为,则试着通过.NET Framework找到答案。可惜的是,在国内的出版市场上却鲜有按照如此结构进行撰写的.NET专著。而这本《你必须知道的.NET》可以说从某种程度上弥补了这个空白。
对于本书的作者,虽素未谋面,却神交已久。初识作者是通过他在博客园撰写的博文系列:《你必须知道的.NET》。透过这一系列文章,可以看出作者对.NET Framework的认识已经达到了相当的高度。作者在博客园上创建的CLR基础研究团队,旨在搭建一个学习研究CLR的平台,并邀我加盟成为共同创办人。这段时间里,我对作者有了相对深入的认识,他对技术孜孜以求的学习激情,对团队认真负责的态度,都让我钦佩不已。近日获悉他在此博客系列的基础上,完成了一本同名技术书籍,并邀我对其中的技术部分“把把关”,这让我诚惶诚恐,因为作者对.NET的精通程度远在本人之上,实有班门弄斧之嫌。由于难以抑制对本书的期待,希望在第一时间一窥此书的全貌,同时感到能够向大家推荐一本好书不失为快事一桩,于是才有了这篇序。
在我看来,一个人对于知识技能的掌握可以大致分为三个层次:
第一个层次——了解,知道有这么一项技术,它大致能为我们解决怎样的问题。第二个层次——精通,能够有效地利用它来解决你所面临的问题,这种人被称为专家。但我看来这还不是真正的专家,真正的专家应该具备第三个层次——传授,这首先体现的是不固步自封、乐于与大家共享的一种胸怀。也是一种能力的体现,一种将自己知识向别人传授的能力。
我研读过作者在博客园上所写的每篇文章,确实是篇篇精彩,倾注了很多心血。《你必须知道的.NET》一书中,作者凭借自己对.NET Framework深刻的理解和领悟,使用生动而又独特的表达方式将读者领入.NET的深邃世界。无论你是一位.NET 的初学者,还是一位具有多年编程经验的程序员,相信都会对本书爱不释手。
和一般的编程类书籍不同,这是一本讲述.NET本质的书。我深知要写好这样的专著并非易事。如何将看不见、摸不着的东西以一种读者易于接受的方式刻画出来,不仅仅要求作者个人具备对.NET 深厚的理解,也是对其写作水平、文字组织能力的极大考验。同时,这也是一件颇具风险的事情,因为珠玉在前,大师的经典是无法超越的。
我想此书能够成功得益于下面几个因素:
首先是作者站在巨人的肩膀上,在阅读此书的时候,你会不时发现Jeffrey Richter、Don Box这些大师的影子,从某种意义上讲,此书是作者在前人总结的基础上进行深入思考和实践的结晶。
其次,体现在以内容取胜,在内容的安排上,本书并没有像其他同类的书籍一样走入“贪多求全”的误区,而是抓住一些最能体现其本质的要点进行深入剖析,因为.NET博大精深,如果面面俱到很容易导致“泛泛而谈”。
最后,深入浅出、娓娓而谈的写作风格也是本书的一大特点,作者行文言简意赅、简洁明了,一些原本令人费解的原理和概念经作者之笔顿时明朗,这充分体现了作者技术写作的驾驭功底。
在我写这篇序的时候,作者一再嘱咐我加上一些“如何阅读本书的建议”。我觉得没有太大的必要,因为作者完全是站在一个程序员的视角来进行写作的。正如文中所说,阅读本书就是一段.NET的旅程,而作者这个知心的导游会将你带到你想去的地方。我唯一的建议就是:读《你必须知道的.NET》时,你必须得眼、脑、
“你站在桥上看风景,看风景的人在楼上看你”。
技术探求,正是如此的富有哲理。在.NET世界里,每个程序设计者都是站在桥头的守望者,渴望品味所有的美景,将技术的各个方面尽收眼底。而现实往往是,你看到的并非全部真实的,技术的理解往往也需要辅助一个望远镜才能看得更加透彻。这本《你必须知道的.NET》既是一本技术的风景画卷,涵盖了.NET基本知识的几乎所有的重点内容;又为你送上手中的望远镜,与作者一起力求对每个技术要点的探讨都更进一步。
走近这幅画卷,除了品味每一处风景,还应学会拨开表象、认识本质、探求细微,更重要的是在这个过程中,你将能收获如何为自己搭建一处技术美景。在楼上看你的人,是否会觉得风景这边独好,就看你的技艺精湛与否了。
面对技术,你别无选择,.NET世界是如此精彩,而我们要做的就是:Thinking More。
本书是什么
对于技术,大部分著作都是从整体角度进行系统性的论述,知识体系一脉相承。拿起这样的书,我们习惯循规蹈矩地从前言看到后记,往往会陷入其系统之中,被其思想所固化,而无法找出什么是更值得关注的要点。本书显然不是一本系统性论述技术的专著,因此也无法兼顾.NET技术的所有概念和知识,但是本书力图从重点分析与突出把握的角度来阐释技术,分析问题,将所有.NET开发人员最关心、最困惑的技术内容形成体系进行深度遍历、挖掘和探索。
《你必须知道的.NET》正揭示了这样的一种诉求,将.NET技术中的核心内容以一个个专题的形式来深度刻画,然后形成体系。综观全书内容:一方面,以最少的语言表达最多的技术、体察更深的本质。佛家传道,以例说理,丝丝入扣,环环揭密。本书以“你必须知道”而自诩,唯有意图达到以实例为基点,以归纳为方法的技术论述特点:对于技术的论述和分析,力求做到深入浅出、娓娓道来;对于晦涩艰深的问题以故事性的分析来引导;对于典型的问题以对比的角度来揭密;对于知识性的内容以归纳总结形成纲要。作者对每个技术要点的论述,均结合浅显易懂的实例来展开,将复杂的技术问题化解在循序渐进的思考中。让你的“悟”道,快乐而轻松。
另一方面,.NET技术就是一座美丽的花园,里面开满了各种各样的花朵,就像类型系统、内存机制、垃圾回收、关键字、泛型、安全性、语言特性、框架格局、面向对象等,一支一朵娇艳绽放,要想品味整个花园的芬芳,你就必须了解每朵花的美丽。本书不仅告诉你如何来鉴赏这些花朵,而且告诉你如何通过施肥、除草、浇水来经营这些美丽,一步一步建立对核心技术要点的理解,从而“悟”到整个.NET框架体系和运行机制。
.NET技术正是一个大花园的集合,每个程序开发者也必须经历一次深入的磨练,在基本认识的水平上,进一步,才能发现更多。就像练武之人,除了研习一招一式,了解常用的控件,了解典型的框架;还得修炼内功,认识运行机制,理解框架类库,品味设计架构。
这些正是本书呈现于读者的内容,也体现了不同于其他.NET专著的风格。
本书有什么
对于.NET来说,应用的范围千头万绪,但至少有一件事必须去做,那就是无限接近和触摸它的内核:CLR,这正是本书所阐述的最核心内容。下面,我们来了解一下《你必须知道的.NET》由哪些绚丽的色彩组成:
第一部分:渊源,探讨面向对象基本要素和设计原则,建立一个程序设计的基础架构思维,并结合.NET技术来实现相关的面向对象机制,进而探求相关的面向对象原则。从底层角度认识高层本质,是深入理解的不二法门。
第二部分:本质,在梳理IL基本内容的基础上,了解和掌握探求.NET本质的方法;品味类型系统,了解值类型与引用类型的底层奥秘,揭示参数传递的不惑之解;深入内存管理,认识垃圾回收,以循序渐进的分析,通晓运行时底层机制。
第三部分:格局,将.NET关键字逐个把玩,深入浅出了解你不知道的关键字秘密;实现巅峰对决,将const和readonly、class和struct、is和as、特性和属性、接口和抽象类、覆写和重载、浅拷贝和深拷贝、静态与非静态以及集合,这些技术重灾区一一澄清,走出理解误区;通过框架诠释,揭开.NET基本技术的本质,深度诠释Object、对象判等、String、枚举、委托和异常等.NET核心话题;最后以命名空间为主线建立对.NET框架的全局纵览,通过梳理命名空间和典型类型,把握.NET框架类库的心脏和骨架。
第四部分:拾遗,通过对.NET泛型的理解和深入,着重把握建立泛型编程的思维方式;并适度介绍.NET安全性的主要角落,通过对代码访问安全和基于角色的安全论述,来铺陈.NET在安全编程方面的技术体验。
第五部分:未来,以.NET 3.0/3.5新特性为基点,全面阐述.NET新特性的方方面面,在引导性的论述中建立对C# 3.0、LINQ、WCF、WPF、WF等新技术和Visual Studio 2008工具的基本认知和学习指导,吹响新技术的号角。
通过5个部分的全面讲述,将基本建立对于面向对象设计与原则,.NET框架体系与运行时机制、.NET框架类库格局与高级特性、.NET安全与新特性的深入理解,对于.NET的认识将在底层把握和设计应用上更进一步。
本书为谁而写
本书起源于作者在国内最专注的.NET技术网站博客园(http://www.cnblogs.com)的写作经历,并在博客园的2007年末大盘点Top10的五大排行榜中位列其中3个榜单。作者的系列文章深受大家的关注和讨论,因此本书的内容反映了最直接的技术关注话题,适合于对.NET技术有意进一步提高的所有学习者和开发者。
本书涵盖.NET基本知识的几乎所有的重点内容,如果读者有以下问题、需求或者困惑,那么选择本书非你莫属:
本书并不是从“什么是.NET”这一概念开始的,对于想要了解.NET基础的读者来说,全书以一个个的专题形式来展开,可以快速建立起对.NET基本概念的切入。
读完了大部头的.NET巨著,还意犹未尽,抑或是不知所措。本书给你补充未尽的本质,解答未知的困惑,为你迅速进入.NET底层研究,提供最好的入口。
你已经做得够好了,系统地学习了C#或者VB.NET语言的基础,了解了基本的应用规则,但还是觉得游离于技术之外,并未接触本质。基础研究和高级教程之间往往存在着断层,想在基础之上更进一步,本书可以为你提供更多思考和研究的平台,为你揭开CLR的神秘面纱打好基础。
对.NET框架的体系架构和运行机制,有意补充认知的读者,可以通过本书建立起快速的理解。
本书没有ASP.NET,没有Web Service,也没有.NET Remoting,然而本书的内容对于深刻的理解所有.NET应用大有裨益。只有从本质上抓住这些基础内容,才能在.NET应用领域游刃有余,从方法学的角度来看,这才是最有效的技术学习曲线。
本书是一部方法论,除了探讨.NET的基本问题,对.NET的学习方法和学习工具均有所涉猎。了解一种科学的学习方法,有助于你以更好的质量读完本书,并取得收获。
本书是应对技术面试的圣经,综合了来自现实世界的问题和答案,为你快速成长提供了良好的辅助教材。
本书并非想创造新的技术和技巧,而是将技术以简单的方式更深一步的讲明白。如果你总是对学习的方法充满了困惑和怀疑,那么以本书作为起点会找到一个更好的方法。
对于每个问题的探讨,本书力求深入浅出,让人有胃口读完所关注的话题,并展开思考和讨论。对于厌倦了枯燥论述的读者而言,本书的轻松论述不会让你心感疲惫。
本书如何阅读
关于.NET,本书着眼于基础、本质和方法,对于阅读本书的读者而言,带着思考进行基础和本质的探索,同时也能体验技术学习的有效方法。作者在论述大部分的知识要点时,都会总结和归纳其重要的规律和注意事项,这些归纳为实际的编程提供了良好的遵守法则,读者应该花必要的精力熟练掌握所有的归纳内容。
技术之间是有联系的,平铺直叙的写作和由前到后的阅读都是没有意义的,本书把握从技术的联系点来入手阐述基本知识,从技术的关联中形成有层次的认知角度,能够更加清晰的了解.NET框架的全局。所以,阅读本书应该在不同的章节间切换,按照作者指引的关联进行跳跃式的阅读,能够收获更多的心得。
关于语言,本书以C#语言实现所有的代码示例,这是因为全书虽然以.NET为核心来论述,但也无可避免的对C#语言的某些特性进行了分析。从广义的角度来看,C#语言本身也是.NET体系中不可分割的一部分,对于某些语言特性的了解也能从更全面的角度来透视.NET框架。
关于代码,读者可以通过http://www.broadview.com.cn或http://book.anytao.com来下载本书的源代码,解压缩之后按照代码使用说明,通过Visual Studio工具进行编译和调试。
支持
虽然作者、审稿和编辑花费了大量的时间对书稿进行了反复的修改和推敲,但是限于时间和水平,仍难避免失误或错误。为了使本书能更好地服务于读者,请您将关于本书的任何错误信息发至以下任何链接:
作者个人邮箱:anytao@live.com
本书支持网站:http://book.anytao.com/
博文视点网络:http://www.broadview.com.cn/
我们将竭力解决所有的问题,并向您的指正致谢。读者可以在本书的支持网站中查找相
无封面