本书将交替讲述两种强大的技术:ASP.NET和XML。 XML早已成为热点。业内对这种允许以独立于平台的方式进行数据通信和信息存储的W3C 建议标准的广泛认同令人吃惊。您在任何地方都可以看到XML的使用—— 从使用转换语言XSLT在不同的浏览器上显示数据,到使用SOAP在Web服务之间传递消息。 .NET是Microsoft的革新和足以夸耀的新概念。.NET具有一些功能,例如允许以独立于语言的方式开发应用程序,在语言之间共享代码,自描述类以及自文档化(self-documenting)程序代码命名。.NET(特别是ASP.NET)就是专门为Web服务和便捷开发而设计的。随着.NET 2.0 Framework的发布,.NET包括了对ASP.NET所有领域的明显改善。对Web页面开发来说,新的XML数据控件,例如XmlDataSource和TreeView,使得无需编写代码即可在ASP.NET Web页面上显示和编辑数据,这样在某些情况下可以减少70%的所需代码量。ADO.NET 2.0包括了很多新的特性,让您体验由SQL Server 2005(SQL Server的下一个主要版本)带来的XML新特性。 为了能够获得这种令人兴奋的新的Web编程环境,Microsoft最大限度地利用了XML。实际上,没有一种技术能像XML一样与ASP.NET结合得如此紧密。它可以作为任何数据的通用数据格式,从配置文件到元数据、Web Service通信以及对象串行化。在System.Xml命名空间中的所有XML功能都被显著增强,比如提高性能和对标准化的支持。一些与XML相关的主要技术改善有:处理内存中XML数据的新模式、可编辑的XPathNavigator、新的XSLT处理器以及对XmlReader和XmlWrite类的强类型支持等。与此相关联的是ADO.NET 2.0中对XML的新支持。因为有了ADO.NET 2.0的新特性,编程人员现在就可以同时使用分层XML和关系型数据库格式来访问和更新数据了。 0.1 本书读者对象 本书适合于已经开始进行ASP.NET开发和已经熟悉XML的中级或高级编程人员。当我在第2章介绍ASP.NET 2.0的很多新概念的时候,我并不想让本书成为开发人员学习ASP.NET的第一个切入点,因为在这个方面已经有大量的书籍和文章。而我将单刀直入地讲解如何在ASP.NET Web应用程序中使用XML。为了能让本书产生最大效用,您最好具备一些基本的C#知识。本书所有的代码示例都用C#编写。 同样地,在使用本书的同时您可能还需要很多其他介绍XML技术的书籍和文章。我认为是XML、命名空间和XSLT的基础知识以及对XML模式的基本了解。 0.2 本书主要内容 本书讲述XML的一系列特性以及在ASP.NET中如何应用它们开发Web应用程序。XML在.NET Framework中无处不在,从串行化到Web服务,从数据访问到配置。在本书的第一部分中,将会深入介绍在.NET平台中实现XML的关键类。该部分将通过ASP.NET示例和参考信息来讨论读写器、验证、模式以及XML DOM。接着本书将讲解XPath和XSL转换(XSLT)、ADO.NET中对XML的支持以及如何使用XML来显示数据。 本书最后部分的重点在SQL Server 2005的XML特性、XML串行化、XML Web服务以及涉及到基于XML的配置文件和文件的XML扩展。本书还介绍了一些与ASP.NET和Web服务相关的XML案例分析,让您真实地体验这些特性。 0.3 本书结构 本书共包含15章,还包括两个案例分析。本书将让读者学习在ASP.NET 2.0中进行XML开发的整个过程。将采取重点讲述的方式,只为读者讲解每个阶段所必需的知识,而不使用附加材料、过于复杂的技术术语或者毫无用处的章节来详细讨论一些规范和标准。下面简单介绍一下这些章节。 0.3.1 XML介绍 XML出现在很多商业应用中并不断出现在日常生活中,它为那些打算使用Web服务来交换文档的公司提供了一种通用的数据格式。本章讲述作为一种语言的XML及其相关技术。本章中将着重介绍的XML技术有:XML文档元素、命名空间、实体、DTD、XDR、XSD、XSD模式数据类型、XSLT、XML DOM、XPath、SAX、XLink、XPointer和XQuery。 0.3.2 ASP.NET 2.0介绍 第2章将简要介绍ASP.NET 2.0的新特性。将重点讲解新的ASP.NET页面体系结构、新的数据控件和代码共享特性。书中会提问“什么是主控页面(master page)”,然后讲解如何通过主控页面和主题来创建统一的Web站点。接着会讲述安全控件和Web parts架构并演示ASP.NET 2.0是如何能够减少70%的代码量的。最后,将讲述ASP.NET 2.0的新缓存和管理以及控制功能。 0.3.3 .NET Framework中的XML类 第3章简要介绍.NET Framework中所有新的XML类,这些内容也会在本书的其他章节中详细讨论。 Microsoft在.NET 2.0中引入了很多XML的新应用,也为改善XML API内核做了一些革新工作。本章将从在配置文件中使用XML开始,讨论DOM、XSD模式验证、XSLT转换、XML串行化、Web服务和ADO.NET中对XML的支持,以及这些内容所涉及的命名空间和类。本章还将演示新的ASP.NET配置改善并快速浏览一下.NET Framework 2.0中的配置类。 0.3.4 读写XML数据 从第4章开始的几个章节(第4~6章)将详细讨论包含在System.Xml内的功能。 本章将特别介绍.NET Framework提供的、用于读写XML文档的快速且只向前的只读机制,即XmlReader和XmlWriter类。书中将剖析新的XML读写模式并介绍多种使用方式,供您用来读写XML数据。还将讨论节点顺序、解析属性、定制读写器设置、空格处理和命名空间处理等,以及其他一些命名空间的支持。 0.3.5 验证XML数据 第5章将介绍不同的XML验证语法:DTD、XDR模式和XSD模式。还会介绍可用于在Visual Studio 2005中创建XSD模式的所有方法:从DTD使用XML设计器、从XML文档、XDR模式或程序集使用XSD生成器。本章还会讨论模式对象并介绍如何将XML文档链接至DTD、XDR模式和XSD模式,并且介绍如何使用XmlReaderSettings联合XmlReader类来执行验证。本章还将演示使用XmlSchemaSet类来保持内存中模式的缓存、优化性能并介绍如何处理XML文档中无限定/命名空间限定的内容。 0.3.6 XML DOM对象模式 第6章将介绍类的System.Xml命名空间中提供的.NET Framework内的DOM功能。本章将讲解用程序来创建XML文档、通过URL或者内存中的字符串来打开文档以及在将文档串行化成XML字符串之前检索并访问文档内容。本章还会介绍XmlDocument对象和XmlReader、XmlWriter对象之间的区别以及何时使用其中之一最为恰当。最后将演示XmlDocument类的XPath功能,并重点讲解XPathNavigator类用于修改内存中XML文档的新的编辑功能。 0.3.7 使用XSLT转换XML数据 .NET Framework为处理XSLT和XPath提供了强有力的支持,在.NET Framework 2.0中,XSL已经完全被改写并引入了全新的XSLT处理器。第7章将介绍用于在.NET Framework中进行XSL转换的技术,即System.Xml.Xsl命名空间和System.Xml.XPath命名空间,还有最新引入的XslCompiledTransform类。.NET Framework完全支持由W3C定义的XSLT和XPath规范,而且还提供很多对这些规范有用的扩展来加强在.NET应用程序中样式表的使用。接着介绍了使用嵌入脚本来转换XML文档并演示如何用扩展对象来扩充样式表。在本章的结尾将讨论一些高级的XSLT操作,例如如何将一个节点集传递给样式表和如何使用XmlResolver来解析外部样式表。 0.3.8 ADO.NET中对XML的支持 第8章将开始介绍类的System.Xml命名空间,探索在.NET中特别是ADO.NET中如何使用XML的广阔领域以及数据访问技术。 第8章将介绍在ADO.NET 2.0中XML所扮演的角色并重点讲解与ADO.NET相关的XML特性。本章将介绍DataSet和DataTable类的功能,包括读写XML和利用程序访问或更改它的XML表示形式。还将重点介绍如何用XmlDataDocument来同步DataSet以及为什么需要这么做。本章还会介绍强类型DataSet的创建及其优点。本章的最后会粗略介绍如何从ADO.NET访问SQL Server 2005中可用的XML新特性。 0.3.9 XML数据显示 ASP.NET中支持的XML提供了对存储、获取和生成XML的最佳支持。本章将介绍web.sitemap文件,通过这个文件可以保存Web站点的层次结构并驱动Web站点的导航结构。随后,将讨论XML数据控件的新特性,例如用XmlDataSource、TreeView和GridView在浏览器上直接使用并显示本地的XML。本章的最后将介绍新的ASP.NET 2.0脚本回调功能,该功能用来直接从浏览器获取XML数据而无需刷新页面。 0.3.10 SQL Server 2005的XML整合 随着SQL Server 2005的发布,对XML的支持达到了一个高度,SQL Server 2005提供了对XML数据强大的XML查询和数据修改功能。从本章开始将介绍SQL Server 2005中的XML新特性,包括FOR XML子句的增强、XQuery的支持以及XML数据类型。然后将讨论在ADO.NET中同步和异步对FOR XML查询语句的执行。本章还将讨论处理类型化和非类型化XML数据类型列的步骤。最后将演示如何使用ADO.NET从类型化列中获取XSD模式并重点讲解MARS和OPENXML()函数。 0.3.11 使用ASP.NET 2.0和SQL Server 2005创建飞机订票系统 本实例将到目前为止本书所介绍的所有概念联系起来进行研究,包括XML DOM、ADO.NET中XML的支持、.NET中XSLT特性和XML数据显示。本案例分析的重点在于现实的飞机订票Web站点中这些XML特性的协同工作以及展示使用这些特性的最佳实践。本章还将讨论N层设计方法并演示如何利用这个方法创建一个可扩展的灵活的飞机订票系统。 0.3.12 XML串行化 在第12章中,将介绍使用XmlSerializer类从System.Xml.Serialization命名空间将XML文档串行化为XML数据。更一般的情况是,创建串行器,然后将普通类型、复杂对象、属性、枚举值、数组和复合对象进行串行化和反串行化。本章还将介绍使用嵌套对象进行串行化和反串行化,接着介绍格式化XML文档、XML属性和文本内容。在本章的结尾,还将讨论使用新的XML串行器生成器工具通过预生成的程序集来提高串行化性能。 0.3.13 XML Web Services Web Services是可以从任何客户端通过HTTP调用的一套对象和方法。Web Services建立在简单对象访问协议(Simple Object Access Protocol,SOAP)上。本章将通过使用.NET Framework 2.0和Visual Studio 2005创建XML Web Services来让您了解XML Web Services。在开始的讨论之后,将接着讨论高级的Web Services概念,例如SOAP头文件、SOAP扩展、XML串行化定制、模式导入扩展、异步Web Services方法以及Web Services方法的异步调用等。 0.3.14 ASP.NET 2.0配置 本章将介绍ASP.NET 2.0的新的配置管理API,可以让用户通过建立程序或脚本来创建、读取和更新web.config和machine.config文件中的设置。本章还将讨论内置于IIS Administration MMC中新的全面的管理工具,能让管理员通过图形化界面来读取或者更改XML配置文件中的任何设置。在整章中,将重点讲述新的配置管理类、属性和配置API的方法,还将提供如何在ASP.NET应用程序中使用它们的示例。 0.3.15 使用XML Web Services建立ShoppingAssistant 本章的讲述基于一个名为ShoppingAssistant的案例分析,该案例为顾客提供了一站式的服务,让他们能够找到所需的信息,例如在售商品、不同商场可买到的商品,以及不同商场中相同商品的价格比较等。在这个案例分析中,将演示如何在真实的Web应用程序中使用异步Web服务调用功能并结合其他.NET特性(如XML Serialization、FileSystemWatcher和Timer组件)来体验Web服务。 0.4 使用本书的条件 本书中所有的示例都是ASP.NET示例。所以运行这些应用程序主要需要.NET Framework 2.0和Microsoft Visual Studio 2005。您还需要有SQL Server 2005服务器并安装了AdventureWorks示例数据库以便能够运行大多数示例。有些示例将使用SQL Server 2005的Express数据库。 本书中的SQL Server示例利用了集成的安全来连接至SQL Server数据库,所以请记住启用SQL Server中的集成身份验证。这还需要打开ASP.NET Web站点中的集成Windows身份验证(以及根据您配置的角色扮演)。 0.5 源代码 在读者学习本书中的示例时,可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书Web站点/或www.tupwk.com.cn/downpage上下载。登录到站点/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有的源代码。 注释: 由于许多图书的标题都很类似,所以按ISDN搜索是最简单的,本书英文版的ISBN是0-7645-9677-2。 在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。 0.6 勘误表 尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。 请给fwkbook@tup.tsinghua.edu.cn发电子邮件,我们就会检查您的信息,如果是正确的,就把它传送到该书的勘误表页面上,或在本书的后续版本中采用。 要在网站上找到本书的勘误表,可以登录,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是/misc-pages/booklist.shtml。 0.7 要与作者和同行讨论,请加入上的P2P论坛。这个论坛是一个基于Web的系统,便于您张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给您传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。 在上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤: (1) 进入,单击Register链接。 (2) 阅读使用协议,并单击Agree。 (3) 填写加入该论坛所需要的信息和自己希望提供的其他信息,单击Submit。 (4) 您会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。 注释: 不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。 加入论坛后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。 关于使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。