作 者 简 介 John Mueller是一名自由作者和技术编辑,他已编写过82本书,撰写过300余篇文章,主要涉及领域从网络到人工智能,从数据库管理到编程。他最近编写的书涉及Windows性能优化、Windows Server 2008 GUI和Windows Server 2008 Server内核(Windows Server 2008 Server Core)以及新的Fluent User Interface (RibbonX)编程人员指南等方面的书籍。他具有娴熟的编辑技术,已帮助超过58名作者润色他们所编写的书的内容。John还对DataBased Advisor和Coast Compute两本杂志提供技术编辑支持,并为许多期刊撰写文章,这些期刊包括DevSource、InformIT、 Informant、DevX、SQL Server Professional、Visual C++ Developer、 Hard Core VisualBasic、asp.netPRO、 Software Test and Performance以及Visual Basic Developer。 John多才多艺。他在工作之余,经常在工作室度过美好时光,主要工作包括雕刻工艺品或制作蜡烛。他会用整个下午操作车床,或精心地制造书柜,他还喜欢制作甘油香皂。John也有自己的网站和博客。读者可随时自由访问该网址,并对John Mueller的工作提出改进建议。 前 言 任何人经过足够的培训后都能编写代码,但是,只有很少的开发人员能够用代码编写出有价值的应用程序。事实上,许多开发人员很可能甚至不知道有价值的应用程序由什么组成。多年来,开发人员认为有价值的应用程序会包含许多功能,而且用户非常了解应用程序提供的所有灵活性。它就像一盏没有人会忽视的明灯一样,而且它实际上不需要用户的经验,因为经验会影响用户完成有价值的工作。笔者认为:有价值的应用程序就像是灯的开关,任何人都能找到开关,而且大多数人不假思索就能打开灯。事实上,许多人在使用开关时甚至没有认识到他们在使用开关,甚至没有认识到开关的存在。 假设有这样的应用程序,它对用户经验的要求非常简单、非常基本,而且任何人都能够了解这些要求,应用程序能够做用户需要的一切来完成指定的任务,而且还具有快速完成任务所需的速度。读者也许认为这样的应用程序是一个神话,但本书将介绍如何创建这样的应用程序。本书是一本实用的设计书籍。当然,笔者完全违背了某些学术书籍的表现形式,但用户仍对应用程序感到困惑这一事实说明我们需要一本全新的书,这也就是本书的初衷。构造良好的应用程序有助于用户像使用灯的开关那样简单地完成任务,因为此时他们可以不考虑各种经验。 本书介绍的内容能够对作为开发人员的读者提供帮助,特别有助于那些工作于团队环境的开发人员。通过学习本书,可使开发人员在开发时遇到较少的问题,使他们按时完成任务,而且应用程序在工作期间能够满足开发人员的要求。本书介绍了如何完成所有这些任务以及其他任务。例如,会看到有多种设计应用程序的方式,而不只是在学校学到的一些技术。此外,还将介绍用于特殊类型的应用程序的最佳技术,从而使人们更容易地从开始就创建出好的设计。 读者之所以需要学习本书,是因为利用本书能够创建出更好、运行速度更快且问题更少的应用程序,开发人员创建出的应用程序需要很少的维护,而且能够真正实现应用程序所承诺的功能。通过学习本书,可以实现所有这些目标,很难想象在其他书中能够有这样的收获(当然,这里假设读者按照本书给出的建议来获得它能够提供的所有价值)。 本书读者对象 本书适用于编写应用程序的任何人,而且对团队开发也有很大的参考价值。本书介绍的大部分内容也适合咨询师或机构的独立开发人员。编写应用程序的每个人(即便是业余爱好者)均会通过学习本书受益,因为本书适合所有开发人员。虽然书中的某些例子难度较大,但初级和中级开发人员能够掌握本书第Ⅰ部分到第Ⅲ部分介绍的例子(第Ⅳ部分的复杂例子适合专家级读者)。 本书主要内容 本书主要介绍设计事宜,它涉及读者希望了解的各个方面的内容,如在给定的情形下确定应采用哪一种设计策略。本书还介绍了应用程序的生命周期以及如何保证应用程序在整个生命周期期间得到合理的支持。书中的部分内容专门针对团队开发,如如何选择团队成员以及使团队成员愉快地一起工作。 本书还将介绍一些新的概念。例如,将介绍一个称为性能三角形的新概念。性能三角形由速度、可靠性和安全性组成。在其他书中尚未见到用这一概念来考虑如何创建出确实满足用户需求的具有良好平衡性的应用程序。就用户而言,会看到本书在如何处理用户方面有很多新的概念,其中许多素材来自笔者深入研究、调研的结果以及长期收集的信息。了解实际情况与教师在课堂的理论教学之间的区别很有意义。 本书的第Ⅳ部分较为特殊。此部分介绍了以较少的代码创建更好的应用程序时所使用的一些技术。在有些情况下,这些技术能够帮助人们突破.NET Framework的限制。本部分并不适合所有读者,而且人们不会在每个项目中都采用这些技术。这些技术重点针对在特殊项目中要解决的特殊问题。笔者对此部分内容的选择是以过去若干年的调研为基础的。 一个经常要回答的问题是如何找到合适的工具。每个人都知道开发工具的数量要比人们在一生中测试的工具多得多(而且经过一段时间后,所收集的信息就失效了)。本书的第Ⅴ部分将介绍开发人员在工具方面的需求,并帮助开发人员寻找合适的工具。 本书结构 笔者希望本书易于学习和掌握。许多介绍设计与开发的书籍使得整个设计与开发过程看上去很困难,而且许多书还涉及在真实环境中无法实现的学术方面的问题。读者可以从头到尾学习本书,或将它作为参考。本书按照开发时要考虑的具体问题分成5个部分,且各部分的顺序符合基本的开发过程(从设计到发布这样的过程)顺序。下面简要介绍本书的各个部分。 第Ⅰ部分:设计策略。此部分重点介绍设计应用程序方面的事宜,但不仅是介绍简单的设计,还介绍了如何构建一支好的开发团队,即如何为自己的应用程序选择恰当的人员。此外,还用较大的篇幅介绍了各相关人员在应用程序中的要求,相关人员是指从构建应用程序的开发人员到管理层、用户以及需要应用程序输出的客户等所有人。最后,介绍了如何创建具有良好平衡性的设计,即设计不会由于不可靠或没有提供足够的安全性而令人失望。 第Ⅱ部分:编码策略。此部分重点介绍实现过程。已经有了好的设计,那么应该根据设计创建应用程序了。此部分从研究自己的开发环境开始。许多开发人员不会优化他们的工作环境,因此会看到他们的工作过程较为困难。一旦有了好的工作环境,就可以开始编写代码了。此部分还介绍了调试、测试,以及品质保证过程,最后介绍了部署所完成的应用程序时需要做的工作。在许多书中,部署是最后介绍的内容,但本书还增加了一章,介绍将应用程序投入应用后对应用程序进行维护方面的内容。 第Ⅲ部分:速度、可靠性和安全性。本部分重点介绍构建和维护具有好的平衡性的应用程序时的要求。性能三角形由速度、可靠性和安全性组成,它是应用程序开发和维护过程的基本部分。如果没有保持好的平衡性,则会看到应用程序的性能较差,而且人们不愿意使用它。就维护平衡而言,部分工作属于艺术,部分工作属于科学。本部分将帮助读者了解这两个方面。 第Ⅳ部分:特殊编码方法。笔者从22年前大学毕业至今已编写过很多程序,此外,还保存着数百名读者调查以及在线研究大量的素材的记录。本部分介绍开发人员所需要的最常用的编码技术。如前所述,读者也许并不需要这些技术,或者甚至感到不希望使用它们。此部分内容并不适合所有读者,但当需要完成某些似乎不可能完成的任务时,这部分内容确实给出了有价值的建议。 第Ⅴ部分:资源与工具。每个人都需要一些资源和工具来完成他们的编程工作,而且在许多情况下,Visual Studio环境并没有为开发人员完成其工作提供足够的资源和工具。此部分将回答如何去寻找好的资源或工具方面的问题,将介绍Microsoft产品和从第三方得到的产品,还将介绍一些笔者认为有价值的工具。笔者鼓励读者按照本部分介绍的方式去做。用最喜欢的资源和工具来充实自己的工具箱是一件有趣的事。 学习本书需要做的准备工作 为学习本书,读者应在自己的计算机系统中安装Visual Studio 2008和C#。这里假设读者学习本书时使用的是Windows XP或Windows Vista系统,但书中介绍的内容对于以前版本的Windows系统应该也有效(但笔者没有用以前版本的Windows测试过本书内容)。 笔者编写本书时使用的是Visual Studio 2008 Team System。如果读者使用的是不同的版本,则有可能在屏幕上会看到一些不同之处,而且也许会看到菜单的一些微小差别。不要对此担心,你使用的Visual Studio 2008版本能够胜任本书的学习。本书的每一名技术编辑均使用了不同版本的产品,并验证了各例子的有效性。此外,笔者还从一些预读者那里收集到了一些版本差异信息,因此,虽然笔者使用的是Visual Studio 2008 Team System,但各章节都反映了这样的事实,即所介绍的内容也适用于其他版本。 读者还需要知道如何编写C#代码。本书并不介绍如何编写代码,主要介绍的是如何设计和开发确实有效的应用程序。如果读者没有编写C#代码的经验,那么学习本书时会有一定的难度。在学习本书前,应该先学习一些介绍编程语言方面的书。 源代码 在读者学习本书中的示例时,可以手工输入所有代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点/或www.tupwk.com.cn/downpage上下载。登录到站点/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有的源代码。 注释: 由于许多图书的标题都很类似,所以按ISBN搜索是最简单的,本书英文版的ISBN是978-0-470-41596-2。 在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。 勘误表 我们尽全力确保正文或代码中没有错误。然而人无完人,错误总会发生。如果您在我们的书中发现了错误,例如拼写错误或错误的代码段,我们将会非常感激您的反馈。通过递交勘误,您可能会帮助另一名读者避免数小时的受挫,同时,也能帮助我们提供质量更高的书籍。 为了找到本书的勘误页面,请访问并通过Search输入框或根据书名列表找到本书的书名。然后,在本书的详情页面上,单击Book Errata链接。在这个页面上您可以看到所有已经为本书提交的并由Wrox编辑发布的勘误。 如果在Book Errata页上没有找到您所发现的错误,请将错误发送至wkservice@vip.163.com。我们将会查看信息,如果情况属实,则会发布消息到本书的勘误页,并在本书的后续版本中做出修订。 如果您希望同作者和本书其他读者进行讨论,可以加入到上的P2P论坛。该论坛是一个基于Web的系统,您可以在论坛中发布同Wrox书籍及相关技术有关的消息,并且可以同其他读者和技术用户交流。论坛提供了订阅特性,可以将论坛上发布的您所感兴趣的话题通过E-mail发送给您。论坛中有Wrox作者、编辑、其他行业专家以及读者。 在上,您不仅可以找到许多帮助您阅读本书的不同的论坛,而且还可以开发自己的应用程序。要想加入论坛,应执行下列步骤。 (1) 进入并单击Register链接。 (2) 阅读使用条款并单击Agree按钮。 (3) 填写加入论坛所要求的信息以及您希望提供的其他可选信息,然后单击Submit按钮。 (4) 您将会收到一封电子邮件,其中的内容描述了如何验证您的账号并完成加入过程。 注意: 即使不加入P2P,您也可以阅读论坛中的消息,但是如果您希望发布自己的消息,则必须加入P2P。 一旦加入P2P之后,您可以发布新的消息并回复其他用户发布的消息。您可以在任何时候阅读Web上的消息。如果您希望特定论坛的新的消息以电子邮件的形式发送给您,可单击论坛列表中论坛名字旁边的Subscribe to this Forum按钮。 要想知道更多关于如何使用Wrox P2P的信息,可以阅读P2P FAQ中关于论坛软件如何工作以及很多关于P2P和Wrox书籍的其他常见问题的答案。要想阅读FAQ,可单击P2P页面中的FAQ链接。