为什么还要出版又一本关于asp.net 的书?而且还是“最优化”?书店的电脑技术专柜里有一半书都是讲asp.net 或者面向对象的程序设计,难道还不够?
 
这两年,每年从计算机软件或相关专业毕业的大学生和研究生人数大约是30万,很多人在他们的求职简历上写着“精通面向对象的设计”(OO)或“熟练掌握asp.net” 等来到了微软面试。面试之后,我和我的同事往往要在“精通”和“ 熟练”上划上问号。为什么?因为他们对 “面向对象的设计”的“精通”,仅仅停留在理论上;而对于“asp.net”的“熟练”,也只是写一些脚本,在数据库里加一个字段而已。而且,精通OO的人,可以大谈Polymorphism, 而从来没有动手设计过实用的网站;熟悉网站的人,可以眉飞色舞地侃如何用脚本定制网页的皮肤,但是对OO 却话不投机。
网站的设计方法,大部分都强调实用,快速,简单。有了新的需求,就用脚本不断往上加东西。这样的做法,往往会导致所谓“band-aided system”(胶布系统)。用胶布(即使是很酷的邦迪透明防水创可贴)把东西凑合着粘贴起来,快则快矣,牢则未必。从长期来看,这些系统会有以下方面的隐患:
  • 可维护性 - 除了程序作者本人,别人很难读懂网站的设计;
  • 效能 - 一些看似无妨的小改动往往会导致网站效能的下降;
  • 坚固性(robustness- 不牢靠,不能保证(或者不知如何保证)24/7 不间断的服务;
  • 可扩展性 - 网站不容易升级,或迁移到别的平台,数据库上。
从根本上解决这一问题,我们要从对象出发,设计易维护,可扩展的网络服务,这本书是一个很好的入门。 
从另一方面看,目前很多“面向对象”的程序设计书籍都是基于C++等传统计算机语言,比较偏重于理论,对于互联网的应用着墨则不多。很多刚毕业的学生都反映,课堂上讲的和实际用的相隔很远。这本书给他们提供了另一种思路和实践的机会。
 
这本书的另一个特点就是介绍了非常实用的工具,如效能分析工具Perfmon, Visual Studio, 和非常有效的工作流程如测试驱动的开发。我们不必非得要非常庞大和完备的工具和流程才能开发出好的软件。平常的工具,如果使用得恰到好处,也可以起到四两拔千斤的效果。 
 
我和本书的译者刘俊民是在一年多前一次微软技术讲座上认识的,他的网名‘宝玉’很多人都知道。他在asp.net 领域踏踏实实地做了不少项目,他汉化的Community Server 正在不少网站运行着。这次翻译又是他对自己的挑战,让人钦佩。
 
另一位译者陈远正在西北工业大学攻读计算机软件的硕士学位,目前正在微软亚洲研究院实习,使用asp.net开发企业人力资源管理管理软件。他和宝玉一样,也是一位勤奋好学的人才,在业余时间写了不少文笔生动的blog 
 
随着网络应用的不断发展,如何能够提供高效,易维护,可扩展的网络服务是每一个软件开发人员都会思考的一个大问题。我相信这本书会帮助读者从“写脚本,加一个网页”上升到“设计,构建 web 应用”的层次,增强自己的能力。我不敢说它是一个“最优化”的解决方案,但它的确是值得一读。
 
邹欣
微软亚洲研究院 研发经理
2006.7.13 Redmond WA USA