前 言 Microsoft的ASP.NET自从第一次发布为预览技术以来,已经取得了巨大的成功。对于使用Microsoft技术开发Web站点的开发人员来说,ASP.NET提供了丰富的编程模型,可以轻松地构建站点。ASP.NET自发布以来对它的评论非常多,但撇开宣传和新闻这些炒作不谈,.NET确实为开发人员提供了一个能够开发所有应用程序的坚实基础。 虽然目前Microsoft开发的Active Server Pages(ASP)仍然是一个相对年轻的产品,但它已经成为最主要的Web开发工具。它的成功要归功于易用性和灵活性,这为创建动态网站提供了一种简单的方式。尽管这种成功还不完善,但其中出现了许多问题仅仅是因为ASP发展太快,超出了它的能力所限。当初设计ASP的初衷就是将COM的基础结构作为ASP的基础,而COM本身的功能就有一定的限制。 作为整个.NET Framework的一部分,ASP.NET建立在Common Language Runtime(公共语言运行库,CLR)的基础上——CLR是一个功能强大而又灵活的结构,它的设计目标不仅满足开发人员的当前需要,而且还可以满足长远需要。此处需明确的是,ASP.NET不仅是ASP以前的升级版本,还大大超越了对现有技术的升级—— 因为它开创了Web开发的全新时代。而本书将为您打开通往这项新技术的大门。 一种全新的ASP 那么对开发人员来说,“一种全新的ASP”意味着什么呢?毕竟,许多产品在发行时都把自己标榜为“有重大的突破”或“革命性的”,但事实上只不过是在某些方面进行了升级而已。而ASP.NET不是这样,它致力于为Internet应用程序的开发提供一种功能丰富而灵活的环境。它不仅提供了许多新的功能,而且从根本上改变了基于Web的应用程序的传统设计方式。 之所以发生了如此大的变化,是由于ASP.NET的体系结构更加模块化,同时在更大程度上坚持了基于组件的原则。每个页面都是一个可编程访问的完全编译的对象,并且利用了诸如面向对象设计、实时编译和动态高速缓存这样的技术。同时,ASP.NET所具有的向下兼容性表明现有的页面和应用程序仍然能够按以前的方式进行处理,因此没有进行突然移植的必要。 ASP.NET的一个主要目标是对应用程序的安装、配置和更新进行重大的改进。因此组件再也不必在Web服务器上进行注册了,同时一个完整的应用程序可以简单地使用文件复制命令、FTP或指定的应用程序(如FrontPage Server Extensions),从一个服务器上移植到另一个服务器上。 本书的内容 本书将介绍ASP.NET的基本概念、使用方法及其用途。第1章将简要介绍ASP.NET的相关问题,包括基本概念和对本书其他部分的概述。其目的是让您能够尽快掌握一些基础知识,同时运行一些页面范例。 第2章将介绍.NET Framework,并检验这个支撑起整个.NET的体系结构。其中将讨论有关CLR的问题,说明使用它的原因以及使用它所带来的好处。另外还会介绍ASP.NET的设计目标,并说明它们是如何提供一个强大的开发结构的。 第3章将详细介绍各种.NET语言,学习面向对象的结构,并讨论Visual Basic和Jscript的变化,以及新的C#语言。另外,还将介绍有关这些语言的CLR的各种优点,以及CLR是如何克服以前的语言问题的。 第4章开始详细介绍ASP.NET,考察ASP.NET页面是如何构建的。我们将介绍一个简单的ASP页面,学习它是如何转换为ASP.NET页面的,并研究一个更简练的新页面。此外,还会介绍新ASP.NET页面中的代码管理问题,同时说明Visual Basic相对ASP而言与新的事件模型更为相似。 第5、6、7章将仔细讨论ASP.NET服务器控件,首先介绍这些控件的概念及其工作原理。接下来还要介绍验证控件,这些控件提供了一种验证用户输入的方式,然后介绍Web Form控件和列表控件,这些控件都提供了强大的内容管理功能,最后讨论数据绑定问题,说明控件是怎样从数据源中自动显示数据的。 第8章开始讨论ASP.NET中的数据管理问题,包括ADO.NET及其设计目标和体系结构。第9章将讨论关系数据和如何从数据库中操作数据的内容。第10章将介绍这些数据库中的数据更新问题。而在第11章中,除了继续关注数据问题外,还要介绍.NET中的XML使用问题,以及XML对象是如何实现处理XML数据的强大功能的。 第12章的中心问题则是Web应用程序的准确概念,以及怎样实现对应用程序的管理。要介绍的内容包括:状态管理、应用程序事件体系结构,以及应用程序体系结构的扩展。 应用程序编写完成以后,接下来的工作就是对它们进行部署,而这正是第13章要介绍的问题,此外还要讨论配置问题。我们将介绍XML配置文件,包括对其选项的详细讨论,最后学习ASP.NET的扩展问题。 第14章的内容包括编写安全的ASP.NET应用程序,Windows 2000和IIS(Internet信息服务系统)的安全性,以及ASP.NET是如何整合这种安全性的。此外还要介绍声明和编程安全问题,其中包括像基于Form和Passport身份验证这样的问题。 第15章和第16章要解决的是基类库问题,先详细介绍集合和列表,然后介绍文件系统对象、流、网络类和正则表达式。基类提供了一组非常丰富的功能,这些功能的应用范围非常广泛,使得开发人员付出比ASP少得多的编程工作量来建立网站。 在以前的DNA(内外层网络寻址技术)体系结构中,将业务组件放置在中间层是通行的做法。而在.NET中,整个体系结构更加简化了。第17章将讨论业务对象和事务处理页面的使用问题。我们将看到新体系结构的优点,以及如何设计应用程序来创建大多数新组件模型。 第18章将介绍可扩展性问题并考察服务器控件,还将讨论如何编写这些控件。我们将介绍一些用于创建这些控件的简便编码技巧,以及写好这些控件后,它们是如何与现有的服务器控件并存的。 第19章和第20章将详细介绍Web服务。虽然这个问题并不是专门针对ASP.NET的,但在设计和编写应用程序方面,它确实是一种主要的手段。由于将现有的功能转换为Web服务是非常简单的,因此利用Web服务来提供并使用B2B(企业到企业)模型可以实现众多的功能。 第21章介绍的是用于不同领域的各种网络设备,如电话、PDA以及其他诸如此类的设备。目前网站的用途已不再局限于那些带有大显示屏幕的计算机了,各种较小的设备在未来会得到越来越广泛的应用。本章将介绍Mobile Internet Toolkit,看看如何利用它来创建可供小设备访问的网站。 第22章主要包括两个问题:调试和错误处理。虽然有些新功能属于ASP.NET所有,但其他新功能却是整个基础架构的一部分。不过不管它们属于谁,最后的受益者都必然是开发人员。这些功能为调试和处理错误工作提供了简单且灵活的方式。 第23章覆盖了迁移和互操作性能方面的内容。目前的ASP代码非常之多,因此如何将现有的应用程序迁移到新的架构中是一个非常重要的问题。另外,还要讨论与现有的COM组件的互操作性问题,这种互操作性可允许中间层逐渐迁移。 最后,第24章将进行案例研究。该案例融合了本书介绍的许多技巧和方法。该案例是一个简单的电子商务网站,其中使用了数据访问、服务器控件和类库等。 读者对象 本书面向具有ASP或Visual Basic开发经验的高级开发人员。而对于那些未掌握基本编程技术和编程语言的用户来说,需要进一步学习才可以使用本书。 本书旨在对ASP.NET的概念作全面介绍—— 书中介绍了一些背景知识,同时对ASP.NET的设计开发思路进行了说明。之后本书对各种功能进行深入探讨,而这些功能要求开发人员之前必须使用过。此外还对如何快速明了地利用这些新功能进行了介绍。 如果您以前使用过ASP,就不会对本书涉及的各种概念太陌生,那么在使用本书时,就无需借助其他参考资料(随ASP.NET提供的SDK和帮助文件除外)。同时,您应该对组件、Visual Basic和VBScript语言的常规使用原则有所了解。本书中的某些范例是用其他语言编写的,如CLR所支持的Jscript和C#(这是一种新的语言),但即使您对这些语言比较陌生,也不妨碍您使用本书。 使用本书的要求 要运行本书中的各种范例,需要事先满足以下条件: ● Windows 2000、Windows Server 2003或Windows XP ● ASP.NET。既可以是新发布的版本(包括在.NET SDK中),也可以是Visual Studio .NET。 本书中所有范例的完整源代码均可以从下面的网站中下载:/。其中包含了Visual Basic .NET和C#版本(参见下面的“源代码”一节)。 源代码 对于本书中的所有范例来说,您可能更愿意亲自将所有代码都输入到计算机中。许多读者更喜欢采用这种方式,因为这可以更加有效地掌握那些正在使用的技术。本书中的所有源代码都放在网站中。在您登录到站点/时,只需使用Search工具框或使用书名列表就可以找到本书。接着单击本书信息页面上的Download Code链接,就可以获得所有的源代码。 说明: 因为很多书的标题相类似,所以最简单的方法是通过ISBN进行搜索。本书的英文ISBN号是0-7645-5890-0。 从该站点上下载的文件是已经使用了WinZip进行压缩的文件。在把附件保存到硬盘的一个文件夹中时,需要使用解压缩文件(如WinZip 或 PKUnzip)对该文件解压缩。或者,您可以访问Wrox的下载页面:/dynamic/books/download.aspx,来查看本书或其他所有由Wrox出版的书籍中的代码。 勘误表 尽管我们已经尽了各种努力来保证文章或代码不出现错误,但是错误总是难免的,如果您在本书中找到了错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。 要在网站上找到勘误表,可以登录,通过Search工具框或书名列表查找本书,然后在本书的信息页面上,单击Book Errata链接。在这个页面上,可以查看已经提交并通过编辑检查的所有勘误。此外,在/misc-pages/booklist.shtml页面上还提供了完整的书籍列表以及相关的勘误表链接。 如果在Book Errata页面未找到相关错误,则可以访问/contact/ techsupport.shtml并填写其中的表单,将您发现的错误发送给我们。我们将核查该信息,并将该消息发布到该书的勘误表页面中,且在后续的版本中修正该问题。 P2p. P2P论坛是为作者和同行之间的讨论而设立的。我们在邮件列表、论坛和新闻组中提供“由程序员为程序员的支持”(programmer to programmer support),还包括一对一的电子邮件支持系统。您可以相信,您的问题不仅仅是由支持专家解答,而且还要提供给我们邮件列表中的许多Wrox作者和其他业界专家。在上,您可以从许多不同的列表中获得帮助,不仅对阅读本书有所帮助,还可以在开发应用程序时获得帮助。 要加入该论坛,可以遵循下面的步骤: (1) 进入并单击Register链接。 (2) 阅读使用条款并单击Agree按钮。 (3) 填写表单中要求填写的信息,以及其他其他可选信息,然后单击Submit按钮,即可加入论坛。 (4) 您将接受到一封确认电子邮件,其中列出如何验证您的账户和加入论坛的完整步骤。 说明: 您不加入P2P论坛也即可浏览其中信息,但要发布信新消息,则必须注册。 在加入该论坛后,您即可发布新消息并回复其他人的文章。可在任意时刻通过Web阅读其中信息。如果需要,也可通过电子邮件订阅论坛中特定主题的新信息,为此,请在论坛列表中选中特定论坛名称对应的Subscribe to this Forum图标。 要更详细地了解如何使用Wrox P2P论坛,请阅读P2P FAQ,其中列出了论坛软件如何工作等众多常见的问题,单击P2P论坛中任意页面中的FAQ链接即可阅读相关内容。 译 者 序 ASP.NET是微软整个Visual Studio.NET战略中的一个重要组成部分,具有开发效率高、平台无关性、安全性强等方面的优势,广泛用于创建动态Web站点和基于Web的分布式应用,是广大Windows程序员开发Web应用的有效工具。本书介绍的是ASP.NET的最新版本——ASP.NET 1.1,该版本修正了原有ASP.NET 1.0中的一些Bug,在移动应用开发、代码安全以及数据库Oracle和ODBC的支持等方面,都做了很多改进。 本书由浅入深地介绍了ASP.NET的基本概念和开发机理,内容涵盖了ASP.NET与.NET Framework原理,如何创建ASP.NET页面和使用服务器控件,数据处理与ADO.NET,ASP.NET类库,配置、部署问题,作为数据处理有机组成部分的XML技术,以及如何使用Web服务为应用程序提供异步后台服务,同时还深入分析了软件的迁移问题。 本书比较全面地囊括了在.NET Framework下构建ASP.NET应用程序的方方面面。在讲解各个主题时,既有系统化的理论说明,也提供了相关的实际样例代码。书中的大量实例演示了实际应用中ASP.NET的大部分通用特性,便于读者理解与立即着手练习。 书中所有的源代码都可以在下载。该站点为读者提供了学习本书的丰富资源,包括源代码、相关控件、技术文章、多媒体教学工具等,读者也可以注册并登录论坛,与图书的作者、编辑直接进行交流。 由于受时间和译者自身水平的限制,翻译过程中难免出现错误和疏漏,敬请大家多多批评指正,反馈信息请发至fwkbook@tup.tsinghua.edu.cn。 译 者