- .NET 4.0面向对象编程漫谈:基础篇
- 金旭亮
- 3077字
- 2020-08-28 11:56:21
前言
笔者本科的专业是电力系统及自动化,本与软件关系不大,但由于机缘偶合,从1994年开始自学计算机专业课程,由此迈入引人入胜的软件技术世界,迄今已经16年了,而这16年中有一半的时间花在了研究.NET技术上。
回想2001年前后,Java如日中天,我周围几乎所有的人都在或准备学习Java,而也是在这个时候,我初次接触到了C#和.NET,立即被它们吸引,坚信.NET开发平台日后一定大有发展潜力。9年过去了,事实证实了我当年的预测:.NET不断汲取最新的软件技术成果,一步一个脚印,业已成为当今主流的软件开发平台之一,与Java平分秋色。2010年发布的.NET 4.0,更是引入了众多的新技术,堪称为.NET发展史上具有里程碑意义的版本。
任何一名对.NET技术有一定认识的软件开发者都承认,以.NET平台所包容的技术之多、之广,称其为“博大精深”并不为过,而且它还处于不断的发展和变化过程中。.NET技术家族的急速扩充与快速成长给所有.NET开发者带来了巨大的挑战,如何跟上技术发展的步伐,迎接新技术的挑战,是每个.NET软件工程师所必须面对的问题。
在多年的.NET技术学习、探索和应用过程中,笔者渐渐有了一些体会和感触,我发现虽然.NET技术一直在变化中,但这种变化是有规律可循的,“变化当中有不变”,把握了这些规律,将不再害怕与抱怨新技术的持续出现和老知识的陈旧与过时,就会以一种更平稳的心态去学习新的东西,去探索新的领域,面对新技术,不再是惶恐,而会代之以兴奋。
本书所展示给读者的,就是这么些年来我对.NET技术学习、探索和应用的心得,我想尝试着揭开.NET的面纱,告诉读者:
有些看上去很简单的东西,其实并不简单!
有些“司空见惯”的东西,其实你可能忽略掉了许多重要的地方!
有些“新”技术,其实不过是“旧瓶装新酒”罢了!
有些知识和工具是如此地有用,用好它们,你将不再困惑于在开发中遇到的种种“奇怪”现象!
有些技术是如此地关键,不掌握好它们,你将在开发中处处受限!
有些很复杂的技术,一旦你花点时间去了解一些必要的背景知识,一旦你下决心钻到它内部去探索运作机理,就会发现掌握它其实并没有想象地那么困难!
……
期望笔者写的书能帮助读者更好地理解.NET平台与技术,更好地理解面向对象的理论,更好地理解软件开发这件事。
下面,我先就读者所关心的几个问题作简要回答,然后再介绍本书的使用方法。
读者问答
1.这本书是写给哪些人看的?
本书分为《基础篇》与《应用篇》两卷,以满足不同类型读者的阅读需求。
《基础篇》不适合于那些对.NET软件开发技术一无所知的人阅读。
《基础篇》最合适的读者群是拥有1~2年开发经验的人,无论是在业界还是在学校,也无论是职业程序员还是软件开发爱好者,只要对.NET平台的开发技术已经有了一定的感性认识,希望能进一步地提升自己的开发能力,拓展和加深对.NET平台技术的认识,就适合阅读。
《应用篇》则选取了在实际开发中有着广泛应用前景,同时又在.NET 4.0中有着重要创新的“多线程与并行计算”、“托管可扩展性框架”和“动态编程特性”等内容进行深入和系统的介绍,要求读者必须具备一定的开发经验,并且切实掌握《基础篇》所介绍的技术。
2.本书适合的阅读方式是什么?
《基础篇》不需要从头到尾顺序阅读,读者可以从目录中直接选择感兴趣的章节阅读。
每一章的开头都有一些通过底纹突出显示的文字,它们是本章的“导读”部分,介绍本章的核心内容,指出这些内容与其他章节的联系,特别地,会指出阅读本章所需要掌握的知识背景,还会给出具体的阅读建议。
另外,书中多处标有“交叉链接”提示文字,告诉读者与当前所介绍内容相关联的技术内容分布在本书《基础篇》和《应用篇》的哪些章节中。
因此,读者可以从任一部分切入本书《基础篇》的各个章节。
《应用篇》则有所不同,应用篇所介绍的技术都比较复杂,而且包含许多.NET 4.0的新特性,估计不少读者还不大了解,因此笔者采用了循序渐进的写作方法,层层推进,系统、全面、深入地介绍这些技术,建议读者按章节顺序阅读《应用篇》的各章节。
本书包括大量的示例,笔者几乎为每个重要的技术点都设计了相关的可运行示例,为了减少篇幅,在正文中只介绍关键的技术点和设计思路,尽量避免贴出大量的代码,读者在书中绝对看不到整页都是代码的情形,列出的代码段很少超过20行。如果读者想深入了解相关的技术细节,在书的旁边放一台笔记本电脑是个好办法。这样一来,就可以随时使用Visual Studio打开相应的示例去阅读完整的示例源码。
所有的源码都有详尽的中文注释,并且不少例子我都给出了动手修改代码进行试验的指导,这些指导有些放在书的正文里,有些则直接写在示例源码的注释里。
3.本书书名中有“.NET 4.0”的字样,那么还介绍以前版本的技术吗?如果以后出来了.NET的新版本,这本书还有价值吗?
有过多年开发经验的软件工程师都会有这样的共识:技术的“新”与“旧”是相对的,无法截然分开,笔者认为:新路接在老路的后头,很少有与老技术完全无关的新技术。
因此,本书不是.NET 4.0新特性的简单罗列和堆积,而是一张技术地图,在这张“地图”上,笔者“画”出了某个新的技术源自于哪个老的技术,而它又将通向何方……
所以,即使读者现在暂时还没有基于.NET 4.0实际做开发,也可以通过阅读此书,将书中介绍的大部分内容应用到基于.NET早期版本开发的项目中,凡是.NET 4.0新增的特性书中都有说明。
另外,再次强调,新技术对老技术不是完全地抛弃,在变化中总有不变的地方,哪怕日后.NET 4.5、5.0出来,笔者相信本书的大部分内容将仍然适用,因为书中的许多内容,正是笔者在十多年的技术生涯中所体会到的那些“不变”的东西。
4.本书的内容很多,真正独特的内容是什么?与其他同类图书相比,有何特色?
有关.NET的书,无论国内还是国外,都可谓是“汗牛充栋”,其中不乏优秀之作。笔者学识有限,不敢和那些大师之作相比,但也想努力写出自己的特色来。
论技术,国内比笔者功底深厚的人多了去了,但笔者自觉得有一个长处:那就是我长期在高校一线教学,自认为具有还算可以的语言和文字表达能力;另外,我一直都在琢磨着如何帮助学生以更高的效率去学习新知识和掌握新技能,并且进行了持续的计算机教学改革实践,我的这些实践活动还曾经在业界引发过激烈的反响。
所有这一切,都有助于我的写作。
我期望能写出深入浅出的技术书籍,“以大白话讲述复杂的技术”。可以这么说,只要是我自己弄明白了的技术,我有信心总能找到一个比较合适的方式让别人也能弄明白它。这个特色也在我的前几本技术图书中为读者所普遍认可。
需要强调的是:
本书不是一本学术著作,而是一本技术普及类图书,其目的是帮助读者高效地掌握.NET技术并且能迅速用于实践,因此,采用了白话的方式表达概念和理论的内涵,而不是引经据典地对它们进行考据。读者如果需要对某个领域进行更深入的研究与探索,相信本书能为你提供一个基础和起点。
本书写作的许多内容是直接使用ildasm和Reflector进行反汇编分析的结果,就我所收集到的资料,目前国内从这个角度系统剖析.NET技术内幕的相关书籍还不多见。
另外,大量的.NET技术书籍都是针对某个特定的技术领域的深入介绍,却缺少对整个.NET平台各技术间联系的介绍,本书则力图弥补这一缺陷,比如书中同时包容了ASP.NET、Windows Forms、WPF、Silverlight等技术领域的示例和分析,期望能揭示出各个不同技术领域间所客观存在着的内在联系,帮助读者避免陷入“见木不见林”的窘境。
当然,想在一本书里对各项技术都深入介绍是不可能的,因此,本书主要偏重于对.NET平台“偏底层”的CLR和基类库中部分组件的分析,另外一些非常重要的技术领域,比如.NET 4.0中蔚为壮观的各项数据存取技术,比如建构于WCF基础之上的分布式软件系统开发技术,本书都未曾涉及,或仅仅只是点到即止。如果读者还愿意读我的作品,而我还有时间和精力写作,以后会努力为读者奉上相关的技术书籍。