现在的位置: 首页 > 综合 > 正文

[DearBook图书推荐]孟岩:.NET开发者应读的一本好书

2013年09月16日 ⁄ 综合 ⁄ 共 4579字 ⁄ 字号 评论关闭

从2000年7月微软PDC大会上宣布.NET计划开始算起,.NET问世已经超过五年了。作为世界上最强大的软件公司,微软在推广.NET技术方面可谓不遗余力。在微软的强大推动力之下,不少.NET技术网络社区迅速崛起,一批.NET技术的高手成长起来,推动.NET应用快速向前发展。不过在技术图书领域,.NET类图书的表现一直乏善可陈。如果让我们列举出目前已经出版的堪称经典的.NET技术图书,恐怕一只手就数得过来。这一方面是因为.NET技术比较新,积累不足,另一方面也跟作者和出版方策划思路有关。在前.NET的Win32和COM时代,技术与应用之间的关系简单直接,要开发出稳定、灵活、优质的应用程序,必须对技术概念及细节有高人一筹的认识。很难想象一群技术功底不扎实的开发者能够开发出复杂的3D游戏,并在市场上获得成功。因此这个时期的图书“技术味”很浓厚,很多经典图书都在如何洞悉计算机底层运作机制,通过精巧机制实现出人意表的功能方面表现突出。Win32和COM时代的几本经典著作,如Charles Petzold的Programming Windows,Jeff Richter的Advanced Windows, Don Box的Essential COM,Sells兄弟的Inside ATL,David Solomon的Inside Windows,John Robbins的Debugging Application for Windows,以及侯捷先生的《深入浅出MFC》等,都是以技术剖析见长。
.NET的推出,一方面是微软技术自身变革的必然,另一方面也是微软面对新时期新挑战所做出的回应。在这个新的时代里,技术与应用之间的关系变得微妙起来。洞悉底层技术的细节,并不一定能够给应用程序带来直接的好处,所以传统意义上的编程高手未必就能开发出优质的应用,在企业应用开发方面尤其如此。而在另一方面,那些飘浮在“建模、体系、架构、模式”等高层概念上的架构师们,如果对具体技术缺乏理解,同样是纸上谈兵,无法完成具体的工作。事实上,技术的重要性依旧,只不过现在的问题变成了:“哪些技术是重要的?”
很遗憾,在这个问题上,很多Win32/COM时代的老牌明星作者似乎并没有给出令人满意的回答。目前国内外出版的.NET图书,大部分都停留在初学者入门教程的程度上,少数的佳作,如Jeff Richter的Applied .NET Framework,Don Box的Essential .NET,Ingo Rammer的Advanced .NET Remoting等,则仍然沿袭了Win32/COM时代的技术剖析思路,在底层技术细节上下足功夫。虽然非常精彩,对于开发者理解.NET技术大有好处,但是对于大型应用的开发并没有直接的帮助。还有一些图书,一上来就高举高打,脱离具体的技术去谈企业应用的架构与模式,以空对空,无法给实践者提供直接的帮助,反而有误导他人的弊端。目前来看,反而是一些面向具体应用领域的“大全”类图书更为实用,比如Stephen Walther的ASP.NET Unlashed。但是这样的图书确实又欠深刻,不耐咀嚼,难入“经典”门墙。因此我接触到的不少水平较高的开发者纷纷抱怨,.NET无好书可读。我虽然不把自己视为.NET开发者,但在应用.NET开发一些具体应用的时候也感到,既能够对项目提供很好的指导作用,又能具有较高理论水准的图书非常少见。我在以前的一些书评中推荐过Rockford Lhotka的Expert C#/Visual Basic .NET Business Object和Juval Lowy的Programming .NET Components,都是.NET方面实实在在的好书。不过可惜这样的好书还太少了一点,而且其内容的覆盖面也显得不够。
最近我看到博文视点出版公司翻译出版的一本新书《应用框架的设计与实现》。这本书虽然名气不是很大,不过比较细致地浏览过一遍之后,我发现这本书是当前已出版的.NET技术图书中非常难得的佳作,既能够对项目实践提供一定的指导,又具有比较丰富的技术养分,值得细细咀嚼。虽然一本书是否能够成为经典,需要时间的考验,但是我相信这本书能够给今天的.NET开发者带来实实在在的帮助。

本书作者是一位华人技术专家,在美国从事软件开发多年,特别擅长于微软体系下企业解决方案的开发,在业内有着丰富的成功经验和很高的声望。在写作本书之前,作者曾发表过BizTalk方面的著作,体现了他在企业解决方案方面的造诣。相比于从Win32/COM底层技术走来的技术专家,作者对于企业应用具有更高的视点和更丰富的经验,很清楚地知道对于企业应用开发来说,.NET技术中哪些技术更加重要,并且在这本书中通过一个示范性的应用框架将自己的观点与经验展现出来。事实上,在.NET企业开发中,面向大型复杂应用的框架具有特别重要的意义,企业应用解决方案开发中涉及到的关键技术和重要思想,在框架的开发中都会得到反映。因此,认真地研究应用框架的设计思想和实现技术,是掌握平台技术、提高技术水准、改善工作质量和效率的捷径。因此这本书对于企业应用开发者来说,具有很好的指导性。

本书篇幅虽然不大,但是技术内容却相当丰富。书中通过一个简单而又颇具启发性的示例应用程序框架SAF展示了.NET平台应用框架设计的各个方面,比如对象的动态创建,配置、缓存、事件通知等基本服务,以及事务、消息队列、Windows Services、授权和安全性服务等企业级服务。特别值得赞赏的是,作者不仅关注纯技术的方面,而且对于文档层服务、工作流等比较新的、接近业务的高层次企业服务也做了言简意赅的介绍,并且将随时测试的思想贯穿全书。我认为这本书中所介绍的内容对于今天的企业应用开发者具有特别重要的意义。事实上,在.NET这样的平台上,除了系统级工具的开发者之外,大部分开发者并不需要对于垃圾收集机制有十分深入的理解,也不需要自己动手调整CLR运行时,或者基于原始的.NET API自行开发完整的远程对象服务。这些中级的服务已经在.NET中得到了很好的支持,我们的主要任务是认真地了解.NET提供的这些中级服务,根据实际需要在项目中良好地加以利用。另一方面,详细介绍如何开发精美界面、如何连接数据库等具体工作的内容虽然有意义,但是从网络中已经可以方便快捷地获得相关资料,图书在这方面的意义已经被削弱。而本书所讲授的技术内容才是读者真正需要的,即企业应用开发中的实用技术和技术运用的专家经验。作者通过一个框架项目将这些知识与经验串接起来,一方面使得系统性大大加强,另一方面也展示了技术之间的协作之道。对于某些读者来说,或许可以以SAF为基础,根据本领域的特点开发自己的专用应用框架,如果是这样,那么这本书的价值将能够得到大大的扩展。

从写作风格上看,本书跟国外的一些典型技术图书比较接近,行文风趣活泼,可读性较好。但是涉及到技术部分,则语言相当精炼,没有拖泥带水的感觉。也正因为如此,作者才能够在短短的400页空间里容纳大量的技术内容。我本人非常欣赏这种风格。

总之,我认为这本书是我近期看到的一本难得的.NET技术佳作,非常适合于具有一定经验的读者阅读学习和研究。对于那些基本掌握了一门.NET编程语言的读者来说,虽然这本书的程度稍显高了一些,但是稍加努力使完全可以领会的,并且将帮助你走上.NET企业应用开发的捷径。当然,这本书并不是包容一切的。一个有抱负的读者,还应该阅读一些其他的好书来加深和拓宽自己的技术。例如前面提到的Programming .NET Components,与这本书在技术上形成了很好的互补,而Expert C#/Visual Basic .NET Business Objects,在主题上于本书接近,而观点又有所区别,在解决方案整体结构的讲述上略胜一筹,很适合读者比较鉴别,这种比较对于读者提高技术水平大有裨益。我也希望看到越来越多的优质、实用、技术养料丰富的.NET大量出现,从而将.NET这项优秀技术平台的实际应用推向真正的高峰。

 

框架——构建大规模应用程序的基础

夏桅(2005.7C# MVPCSDN论坛.NET版大版主

初拿到《应用框架的设计与实现——.NET平台》一书时,先浏览了一下目录,便觉得这是一本相当务实的书。在较高的层次谈论软件设计,你可能会直接联想到《设计模式》这样的经典巨著;但事实上,直接分门别类地讲设计模式,除非你已经有了大量的软件开发经验,否则其中的精华很难被吸收和运用。在另外一个方面,现有的IT图书市场中,对照软件的设计和编码过程,除了讲解代码编写和技巧的基础书籍、介绍专题应用的书籍之外,其它大部分都处于很高的层次。这本《应用框架的设计与实现——.NET平台》正好处于中间的位置。它不讲某种具体技术,介绍的是软件的基础框架;也不是直接讲设计技巧,它在设计框架的同时揭示设计思想;它不是讲纯理论,文中的内容直接或稍加修改就可以应用到具体项目中。最关键的,它是第一本专门介绍应用框架的中文书,而应用框架设计,是基于Windows和.NET的企业级开发所最为欠缺的(微软似乎一直都在宣传如何进行快速开发,而忽略了.NET对于大规模应用也同样出色)。

 

这本书讲解了一个B2B应用框架的设计,其中包括了类工厂服务、缓存服务、配置服务、事件通知服务、“Windows服务”服务、消息队列服务、授权服务、加密服务、事务服务、文档层服务和工作流服务,它们都是构建企业级应用程序所需的基础设施。其中一些来自Windows和.NET自身的功能和服务,其他的是直接从基础技术构建起来的模块。这本书在介绍这些框架时,基本上都按照“提出问题 — 解决思路 — 解决问题”的模式编排,清晰易懂;此外还连带介绍了丰富的前台幕后的信息,比如介绍配置服务时,连带介绍了.NET程序配置体系的运行方式,介绍了<configSection>中声明的内容是如何和实际程序相连接的;又比如介绍事务服务时,还介绍了整个分布式事务的运行机理,包括MSDTC在其中的作用、分布式事务是如何保证其ACID特性的、2PC过程、COM+组件的部署等等。

 

读好书启发思维。就我本人而言,在读这本书的过程中,脑子里不断冒出些想法。比如,书中讲解配置服务时,虽然使用了XML到对象的映射,但还不够,没有讲配置对象到XML配置文件的保存机制——事实上既然已经建立了配置对象,通过PropertyGrid再建立一个Windows的配置工具又有何难。又如,讲解COM+和事务时,如果采用COM+ 1.5的无组件服务,可能可以得到容易得多的设计。此外,这本书所介绍的部分模块和微软的企业库(Enterprise Library)在定位上重叠(微软的企业库也是用于提供这些基础服务的,包括安全、日志、异常处理、数据访问、加/解密、缓存、配置模块)。

 

不过微瑕不掩瑜,总体来说此书的编写和翻译都有较好的质量,是一本值得一读的佳作。作者是个很有想法的人,书里涉及到的处处细节都说明了这一点。本书虽称不上一本应用框架技术的标准答案,但它可以帮助你体验框架的作用,引导你为自己所在的项目进行框架的设计。从这个角度讲,它值得所有初学设计的.NET开发者们一读,也值得有经验的设计者们作为参考。

抱歉!评论已关闭.