内容简介.NET的诞生打破了以前泾渭分明的编程领域之间的界限,给Web开发带来了极大的变化。本书探讨了Web应用程序开发中所涉及的主要问题,以及与桌面应用程序开发之间的重大差异。本书将重点放在实践上,围绕一个高度交互的Web应用程序实例一步一步讲述了开发、调试、部署的每一个阶段。其中前两章讲述了Web环境和Web开发的基础知识,在随后的11章中从理论和实践两个方面讲解了Web应用程序的创建、测试、调试和部署等环节,如服务器控件、数据访问、数据绑定、ASP.NET状态管理、XML与Web开发、Web应用程序中的Web服务、ASP.NET身份验证、授权和安全、调试和异常处理、利用缓存改进性能以及在.NET中发布Web应用程序等。本书适用于熟悉C#语言、使用C#语言进行过桌面应用程序开发,或使用ASP、PHP技术进行过Web开发,并且希望学习使用.NET和C#语言从事Web开发的程序员。
前 言 .NET的发布使以前泾渭分明的编程领域之间的界限变得模糊起来,这给开发人员带来了巨大的影响。利用.NET Framework类库封装的众多功能,可以使某些迥然不同的任务获得通用的编程接口。 这种变化尤其令人注目的一个领域是Web开发。在.NET之前,“Microsoft式”的Web应用程序编程指的都是ASP。那时,ASP是令人激动的新技术,容易访问—— 但它也是基于脚本的,效率不高,并且IDE是不连接的。 Microsoft 在.NET Framework中总结了它在ASP中吸取的教训。现在,有了ASP.NET (.NET Web开发技术),我们能够利用开发Windows桌面应用程序时所使用的语言来创建高效、交互的Internet应用程序。 在Visual Studio .NET中,Microsoft把这个概念又推前了一步;不仅代码看起来相似,连图形用户界面也相似。Visual C# .NET令人熟悉的基于窗体的界面既能用于开发桌面程序,也能用于开发Web应用程序。如果愿意,您无需编写HTML代码,就可以创建一个Web应用程序,并且可以利用Visual Studio .NET为所有领域的程序员提供的所有测试和调试工具。 .NET Framework中类库的结构使得我们不管是开发桌面应用程序,还是Web应用程序,都可以使用相同的方法。ASP.NET在.NET Framework中其实就是一系列的类,这和Windows Forms类是完全相同的。从这个角度看,从桌面应用程序开发到Web开发不应该算是多大的一个飞跃。 但是,当我们转向Web开发时的确存在一些重要的不同之处需要加以考虑。我们所谈的不再是在单个机器上安装和运行的应用程序;而是把应用程序驻留在一个中央服务器上,每小时可能都有数百或数千个远程客户端访问。现在所涉及的问题和以往大不相同,需要对性能和可伸缩性予以更多的关注,这样才能保证最终用户尽可能有流畅的体验。 本书将致力于研究在Web开发中所涉及的种种问题,以及这些问题和我们从前在开发桌面应用程序时遇到的问题有何不同。在澄清这些原则之后,我们将着手创建应用程序;从第3章开始,将使用C#、ASP.NET和Visual Studio .NET创建一个功能强大、高度交互的Web应用程序,即Friends Reunion。 我们把重点放在实践上,通过实践来学习。对书中的每个示例都一步一步地详加描述,对于Friends Reunion 应用程序开发、调试和部署的每个阶段,我们都将进行讲述和解释。这个应用程序的源代码可以从下载。 本书读者 本书主要针对对C#语言有一定经验的开发人员(这种经验是指实际使用过这种语言,或只是看过讲述C#语言的书籍)。这些开发人员可以分为两类: 只有少许Web开发的经验,或者根本没有,其C#的经验大部分是从桌面应用程序的环境中获得,并希望运用C#的知识在.NET中进行Web开发的读者。 利用ASP、PHP等技术从事过一些Web开发,且希望学习使用.NET和他们喜欢的C#语言进行Web开发的读者。 本书不要求您具备Web环境中的编程经验,但需要您熟悉C# 编程语言。以前熟悉Visual Studio .NET集成开发环境会有助于您的学习,但这不是基本要求。同样,我们不需要您具备HTML、XML、数据库,或书中提到的其他技术的经验—— 虽然了解一点儿背景知识也无妨。 本书主要内容 本书前两章是介绍性的。这两章将讲述基础知识,具备了这些基础知识,我们才能从第3章开始创建Friends Reunion Web应用程序。 从第3章到第13章,每一章都将讨论用C# 和ASP.NET开发Web应用程序的一个不同侧面。每一章中,我们从总体上和Friends Reunion应用程序的具体环境两个方面入手进行讨论。在这11章的篇幅中,将创建、测试、调试和部署一个功能强大、交互式的Web应用程序 —— 对每一个步骤都会进行详细的研究。 以下是本书各章的主要内容: 第1章对Web环境进行介绍。讨论了Web应用程序和桌面应用程序之间的异同,并解释当用户用浏览器请求Web页面时后台所发生的操作。本章旨在使您对影响Web应用程序设计方式的问题有一个清晰的了解,并为书中后面的内容作好铺垫。我们还对Web服务器进行设置,并列举了几个简单的例子来开始我们的讨论。 第2章用Visual Studio .NET创建几个基本的ASP.NET Web窗体。通过逐步创建第一个ASP.NET应用程序,我们将对Web窗体的处理方式,以及页面的生命周期有所了解。 第3章专门讲述服务器控件。服务器控件在任何Web窗体中都是核心组件—— 在.NET中,服务器控件的开发在动态、交互的Web站点的开发中居于中心地位。在Visual Studio .NET中,我们可以把服务器控件拖放到Web窗体中,其方式和在Windows桌面应用程序中插入Windows Forms控件完全相同;我们还可以用以前的方式,在窗体中添加代码,以便与服务器控件进行交互。 第4章和第5章集中介绍数据。大多数交互的Web应用程序都依赖于某种形式的数据的存在和操纵,也依赖于这些数据的存储(或者是存储在功能全面的数据库中,或者是以其他格式存储)。第4章中使用ADO.NET来访问和操纵数据。第5章讲述如何使用数据绑定技术以用户友好的方式在页面中显示数据;本章还将探讨在Web窗体中如何应用模板来改变数据绑定控件的外观。 第6章讨论应用程序、会话和状态。从本质上讲,Web是一个无状态的介质—— 当用户请求Web页面时,Web服务器就提交这个Web页面,然后就将这个用户忘记了。如果想让Web应用程序在用户进行多个页面请求时(如在用户浏览电子商务站点,在购物篮中添加商品时)能够识别用户,那么需要了解可以使用哪些不同的技术在不同页面中,或在一次会话中,或在一个应用程序中保持状态。 第7章和第8章集中讲述XML—— 在Internet连接日益普及的今天,XML已经成为一个重要话题。我们在第7章将了解标记的概念,以及标记和数据驱动的应用程序的广泛联系,还将用XML模式创建自己的XML语言。第8章探讨如何利用XML模式在应用程序中添加数据传输功能,这利用了XML的一个特性:对于跨Internet的传输,XML可以说是一个完美的工具。 第9章将暂时离开Web站点的话题,介绍另一种不同的Web应用程序—— Web服务。Web服务使我们能够把应用程序的功能提供给其他客户应用程序—— 这些客户应用程序使用标准和协议通过Internet请求我们的Web服务。这也意味着我们也可以在代码中利用别人的Web服务,就像利用我们本地系统的组件一样—— 即使只能通过Internet访问它们。本章将讨论如何创建Web服务,以及如何利用其他开发人员创建的Web服务。 第10章介绍ASP.NET的身份验证、授权和安全性。应用程序需要安全性是因为需要限制某个用户(或应用程序)对特定资源的访问,或它们执行某些操作的能力。例如,我们可能想在Web应用程序中包括管理工具,并且除了授权的用户外,我们不希望其他人访问这些管理页面。本章介绍了ASP.NET提供的用来对应用程序的用户进行身份验证和授权的工具。 第11章研究两个不同但彼此相关的话题:调试和异常处理。在我们理解了可能会出现的各种不同的程序故障后,调试工作也会变得非常轻松,有了Visual Studio .NET和.NET Framework提供的众多调试工具和技术,调试工作会更轻松。所以本章的前半部分研究这个话题。后半部分使用.NET的异常处理机制来处理某些可能会在运行时发生的错误,并防止应用程序因此而崩溃。 第12章的两个话题也是各不相同,但彼此相关:性能和缓存。我们将理解什么是“高性能”,将讲述几个分析应用程序在现实的环境中性能表现的技术。我们对应用程序进行压力测试,来了解它的性能如何,在这个过程中将分析可能产生瓶颈的地方,以及如何消除这些瓶颈。接下来讲解和缓存有关的问题,并采用不同的缓存技术来减少应用程序的处理工作,并因此优化服务器资源的使用。 最后,第13章,学习如何部署应用程序。Visual Studio .NET提供了几个简单易用的工具,可以用这些工具来创建自己的部署向导。本章演示了如何准备部署应用程序的工作(Web站点、数据库等),我们把所有的工作都封装到了一个很容易使用的安装向导中。 本书有两个附录。附录A概述了Friends Reunion Web应用程序的结构和功能。附录B包含IIS 5.x Web服务器和MSDE数据引擎的详细设置信息,还介绍了Microsoft新推出的Web服务器软件IIS 6.0。 使用本书的前提条件 下面列出了运行本书代码所需的系统配置: 合适的操作系统。可以是Windows 2000 Professional、Server或Advanced Server Edition(截止到本书为止,最新的服务包是SP2),或Windows XP Professional Edition。 Internet Information Server (IIS) 5.0或5.1。上述的操作系统都打包了这个服务器。在本书写作时还没有发布IIS 6.0,但它也可以用作Web服务器软件。 .NET Framework SDK。 Visual Studio .NET (或Visual C# .NET) Standard Edition或更高版本。 SQL Server Desktop Engine(也称为MSDE),或Microsoft SQL Server。 提示: .NET Framework SDK、Visual Studio .NET和Visual C# .NET中都提供了MSDE。安装MSDE只需执行InstMSDE.exe文件(位于\Program Files\Microsoft.NET\FrameworkSDK\Samples\Setup\ MSDE文件夹下)。MSDE提供的管理工具和SQL Server提供的管理工具不同,但有几个命令行实用程序在文件\Program Files\Microsoft.NET\FrameworkSDK\Samples\Setup\html\ ConfigDetails.htm中进行了详细描述。另外要注意,Visual Studio .NET提供了一个很有用的接口,通过该接口能访问任何SQL Server或MSDE数据库。 注意,Windows XP Home Edition没有提供IIS,也不能运行IIS。如果在此操作系统上进行ASP.NET Web开发,可以考虑使用ASP.NET Web Matrix工具,该工具能从免费下载。它提供了有限的ASP.NET Web服务器功能,但使用该版本,您将不能在Visual Studio .NET中运行Web项目。 本书假设您至少熟悉在Visual C# .NET环境中的桌面应用程序编程。在学习本书的过程中,我们将详细讲述其他技术(如ASP.NET、ADO.NET、XML和SQL) ,但以前对这些技术有所了解将会对您有所帮助。 用户支持 我们一贯重视您的意见,并想知道您对本书的看法,包括您喜欢和不喜欢的内容,以及您希望我们在下一次完善的地方。您可以通过发送电子邮件(地址为feedback@)向我们反馈意见。请确保在反馈信息中提到本书的书名。 如何下载本书的示例代码 当您访问Wrox公司站点(地址为/)时,通过Search工具或书名列表,可以方便地定位到需要的书目。然后,单击Code列中的Download超链接,或者单击本书的详细页面中的Download Code超链接,就可以下载相应的示例代码。 当您下载本书中的代码时,将会看的带有以下3个选项的Web页面: 如果您是Wrox Developer Community的成员(即如果您已经在ASPToday、C#Today或者Wroxbase上注册),就可以使用一贯的用户名和密码进行登录以下载代码。 如果不是它们的成员,则会向您询问是否愿意注册为会员,以便可以免费下载代码。此外,也可以从Wrox Press下载免费的文章。注册为会员后,可以得到本书升级版本和新版本的有关信息。 第三个选项是完全绕过注册过程,直接下载代码。 对于本书而言,不注册也能下载代码,但是,如果您愿意注册后下载代码,您的注册信息不会泄漏给第三方。关于这方面的详细条款和条件,可以通过单击下载页面上的相关链接来查看。 从我们的站点上下载的文件都是使用WinZip压缩过的文档。保存文件到本地磁盘上的文件夹中后,需要使用一个解压缩程序(例如WinZip或PKUnzip)来解压缩文件。在解压缩文件时,通常将代码解压缩到每一章所在的文件夹中。在解压缩的过程中,应确保解压缩程序(WinZip、PKUnzip, 其他)被设置为使用原有的文件夹名。 勘误表 我们已经尽最大努力确保本书中的文本和代码没有错误,但是错误仍然在所难免。如果您发现本书存在错误,例如拼写错误或不正确的代码段,请反馈信息给我们,我们将不胜感激。勘误表的发送可以节约其他读者学习本书的时间,而且能够帮助我们提供更高质量的信息。您的反馈信息将被检查,如果正确,将被粘贴到本书的勘误页面上,或者在本书的后续版本中使用。 要在我们的站点上找到勘误表,请访问/,并通过Advanced Search或者书名列表轻松定位到本书页面。然后,单击Errata超链接即可,该链接位于本书的详细页面中的封面图解下面。 技术支持 如果您希望直接向详细了解本书的专家咨询本书中问题,可以发送电子邮件到support@。一个典型的电子邮件应包括下面的内容: 在主题栏中必须有本书的书名、ISBN的后4位数字和问题所在的页码。 邮件正文中应包括读者的名字、联系信息和问题。 我们将不给您发送垃圾邮件。我们需要您的详细资料,以便节约双方的时间。当您发送电子邮件信息时,要经过下面一系列支持: 用户支持:首先,您的信息将被递送到我们的用户支持人员手中,并由他们阅读。对于一些被频繁提到的问题将被归档,并将立即回答有关本书或者Web站点的任何常见问题。 编辑支持:接着,一些有深度的问题将被送到对本书负责的技术编辑手中,他们在程序设计语言或者特定的产品上有着丰富的经验,能够回答相关主题的详细技术问题。 作者支持:最后,如果编辑不能回答您的问题(这种情况很少发生),他们将请求本书的作者。我们将尽量保护作者免受干扰,以便不影响其写作。然而,我们也非常高兴转寄给他们一些特殊的问题。所有Wrox公司的作者都为他们的书提供技术支持。作为回应,他们将发送电子邮件给用户和编辑,进而使所有的读者受益。 注意: Wrox公司的支持过程仅仅对那些与我们出版的书目内容直接相关的问题提供支持,对于超出常规书目支持的问题,您可以从/论坛的公共列表中获得支持信息。 站点 为了与作者和其他程序员讨论,请加入P2P邮件列表。除了一对一的电子邮件支持系统之外,我们独特的系统还通过邮件列表、论坛和新闻组提供由程序员到程序员的支持。Wrox的作者、编辑和其他业界的专家也包括在我们的邮件列表中。 无论您是在阅读本书,还是在开发自己的应用程序,都可以在站点中找到许多对自己有帮助的邮件列表。和本书特别相关的是站点的.NET类别中的aspx和aspx_professional列表。 按照下面的步骤可以订阅一个邮件列表: (1) 登录/站点。 (2) 从左边的主菜单栏中选择一个适当的类别。 (3) 单击希望加入的邮件列表。 (4) 按照说明订阅并填写自己的邮件地址和口令。 (5) 回复您收到的确认邮件。 (6) 使用订阅管理程序加入更多的邮件列表并设置自己的电子邮件参数。