你必须知道的.NET(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1版前言 Thinking More

“你站在桥上看风景,看风景的人在楼上看你”。

技术探求,正是如此的富有哲理。在.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://weibo.com/anytao

·本书支持网站:http://book.anytao.net/

·博文视点网络:http://www.broadview.com.cn/

我们将竭力解决所有的问题,并向您的指正致谢。读者可以在本书的支持网站中查找相应的勘误表来避免错误。您也可以通过邮件或者作者博客(http://anytao.cnblogs.com/)进一步取得技术支持联系。

本书支持网站提供了所有代码资源、工具资源及其他导航信息支持,这些资源和信息是对全书内容的有效补充与最佳辅助。

致谢

首先感谢为本书审稿的蒋金楠,他的技术功底和专业素质令我钦佩,他的审阅和建议为本书增色不少,这本书有他的心血和付出。

本书的出版离不开我在博客园的成长和锻炼,感谢杜勇(dudu)站长为.NET技术人员提供了难得的纯学术环境和氛围,感谢所有在博客园中与我笑谈技术、品论人生的朋友;感谢蒋金楠与我一起创建和支持CLR研究团队;感谢杜勇、李会军、程杰、刘彦博、张大磊几位朋友在百忙中对本书的审阅及点评;感谢装配脑袋、Jeffrey Zhao、Bruce Zhang对我的指导和帮助;感谢阿不、宋国安、Volnet、Justin、EagleFish、刘荣华、Jill Zhang、随风流月、丁学、怪怪等对本书的建议和关注;还要感谢我的朋友吴宏杰、管伟、高泽东、党明、达伟对我一直以来的支持。

将最重要的感激送给养育我的父母和伴我成长的妹妹王佳,慈母严父是我人生的灯塔,激励我努力前行。感谢岳父岳母对我的关心和爱护,并将爱送给Emma,感谢她每天在身边的鼓励与关怀,品尝她愈发炉火纯青的厨艺,让我的思绪在逻辑和理性间飞舞。

最后要感谢电子工业出版社孙学瑛编辑,正是她的不懈努力和不断支持才使我的写书过程充满了自信和快乐。还有对本书投入精力、提出建议的胡辛征编辑和其他博文视点同仁,他们的专业素质和敬业精神令我感动,才使得本书有机会服务于大众。

这本《你必须知道的.NET》送给所有技术之路上的同伴,让我们一起远航。进一步,你便是大内(dotnet)高手。

2008年1月,于北京