内容简介本书系统介绍了用XML Web服务构建Web应用程序的知识。首先概述了有关Web服务的基础知识,然后借助一个具体的业务模型,详细介绍了为项目建模、创建与部署Web服务、以及保护Web服务安全和性能优化等高级技术;由于书中的业务模型采用SQL Server 2000创建数据库,因而本书还详细讲解了ADO.NET这一最新的数据处理技术。本书内容全面、生动,示例紧密联系实际应用,非常适合于Web开发人员和.NET程序员阅读。
前 言 1998年,Microsoft提交了一份规范草案,这个后来被命名为SOAP的协议使XML 1.0成为一份完全的建议。考虑到在COM和MTS团队之上所完成的工作,所以Microsoft最初想让这个新协议支持它的Windows DNA 2000解决方案,然而,这个新协议和成熟的XML模式语言紧密配合,最终产生了XML Web服务的源头。 HTTP和XML已经无处不在。它们用在所有的操作系统上。选择一个平台,您既可以使用一个HTTP Web服务器,也可以使用一个XML分析器。从IBM的大型机系统到手持系统的每个平台,都提供Web和XML文档服务。 Web服务出现于1998年之前。很多公司早已经为他们的业务合作伙伴提供了URL或者IP套接字,当调用URL或者IP套接字时,它们会执行一个CGI应用程序或者ISAPI应用程序,调用一个服务,或者运行一个等待脚本。然后,这些服务可以为调用方返回一些有意义的内容(文本、二进制数据或某种MIME类型)。净效应是传送表现质量的数据。 通过Internet远程处理代码的想法也不是新出现的。通过远程脚本处理,客户可以从运行于Web浏览器的客户端DHTML脚本直接调用服务器端脚本函数,这使其得以进一步发展。完整配置之后,就可以在HTML页面中嵌入这样的功能: function btnQuoteOfTheDay_onclick( ) { var obj = RSGetASPObject(""); var result = obj.QuoteOfTheDay( ); } SOAP脱胎于COM Internet Services(CIS),COM Internet Services通过现有TCP 80端口通信量支持DCOM隧道调用。CIS技术拯救了很多由于防火墙的安装而宣告毁灭的项目,它仍然假定电缆的那一头是Windows环境,或者至少是一个对DCOM友好的软件。 为什么需要另外一个协议呢?想想在公司里能多么成功地部署DCOM应用程序就可以知道答案了。假定您得到了所有域管理员的支持,掌握了dcomcnfg.exe,并且已经阅读了一份有关如何通过防火墙传递DCOM的MSDN白皮书,您就有可能很好地部署DCOM应用程序了。 SOAP使这些新的Web服务更具吸引力。SOAP只是一种定义了如何在服务器上(通常是经由HTTP)调用方法的协议规范。它为应用程序提供了一种可扩展方式,以便在Web上使用简单XML消息通信。无论是哪种操作系统,什么样的分析器,或者语言,消息本身都是标准的。SOAP规范进一步托管了一个定义参数、返回值和异常的专业XML词汇。这意味着两个有着截然不同的背景、平台经验的软件开发人员可以和平共处—— 并且共同高效工作。用Visual Basic .NET编写的客户程序可以容易地调用在Unix框架上运行CORBA或者Unix的服务,而Windows Scripting Host(WSH)客户程序也可以调用大型机代码,并访问DB2。甚至您的Macintosh机器也可以访问运行在Red Hat Linux上的Perl Web服务。 各个主要的Web服务器软件制造商和工具提供商不仅使用XML和SOAP,并且还提供SDK和IDE来高效地构建和部署Web服务,从而使业务更具前景。对我们来说,通过这些跨平台Web服务完成的工作比如何创建它们要有趣得多。 本书结构 编写一本Web服务书籍的最佳方式是什么呢?我们曾为此而争论过。一些作者忙于编写高级专业化书籍,还有一些作者编写了一些初级技术书籍。作为开发人员,我们欣赏第二类作者,他们紧跟快速发展的SOAP和相关规范,并将其用文字表述出来。 我们选择展现一个案例分析,并认为这是解释Web服务的较好方式,也是解释典型线路式业务如何在自己的B2B业务中利用Web服务的较好方式。 我们将研究Hutchings Photography,一家在线仓储摄影图像仓库。与其他摄影代理一样,Hutchings Photography开始拍摄照片是为出租之用。多年来,这些照片,以及其他一些纯推理拍摄照片,均完好保存,以满足客户日益增长的需要。出版商、Web设计师甚至其他摄影师都需要许可照片。把仓储摄影图像的版权作为业务不是新想法,在Web上搜索摄影图像,取得图像的许可,随即下载图像,也不是新想法。新的想法只是把Web服务应用到这种业务概念中去。 Hutchings Photography想要成为图像批发商而不是零售商。换句话说,它更愿意从B2C模型转换为B2B模型,直接与其他可以以它的名义代理并分发许可图像的在线仓储仓库进行业务往来。Web服务可以支持这些仓储仓库使用的各种操作系统和语言,而且Web服务将引发B2B世界的革命,于是我们要编写面向业务的案例分析。 第1章简要介绍了Web服务及相关技术,引导读者了解一些历史和过去开发人员在Web上构建分布式应用程序时所面临的挑战。读者还会了解SOAP和一些安全方面的考虑事项。SOAP是一种支持Web服务的关键协议。 第2~7章讲述了Web服务提供者案例分析,介绍了对Hutchings Photography的Web服务的分析、设计、构建、注册和部署。因为Hutchings Photography是Web服务的所有者,所以我们称它为Web服务提供者。这一部分中,每一章都是基于前一章的内容而深入的。 第2章从业务角度介绍了Hutchings Photography案例分析,指出了最初的手工过程存在的问题,也介绍了公司使用Web站点进行的首次自动化尝试。 第3章讲述了系统的概念设计,并介绍了Object Role Modeling(ORM)。只有具备健壮的数据库后端的Web服务才是成功的,所以我们从数据层开始讲起,带领读者了解Conceptual Schema Design Procedure(CSDP,概念模式设计过程)中的各个具体步骤,这样读者可以使用Visio for Enterprise Architects来构建一个安全、规范、高效的物理数据库模型。 第4章深入介绍了数据库设计,讲述了Microsoft SQL Server 2000的物理设计实现。Hutchings Photography利用了SQL Server 2000的多个新特色;在该章中,我们展示了这些新特色。另外,还介绍了如何创建一个数据库维护方案,来保护数据库完整性,并使数据库高效运行。 第5章介绍了.NET Web服务的核心,讲述了ADO.NET的XML能力,接着开始带领读者了解如何使用ADO.NET的Connection、DataAdapter和DataSet对象进行Hutchings Photography数据层的设计和构造。我们使用Visual Basic .NET构建了WebData组件,并展示了Visio Studio .NET的高级功能,从中您可以看到构建一个数据服务是多么快捷。 第6章介绍了如何构建Web服务。为了演示.NET Framework的灵活性,本章中使用了C#来调用WebData组件,我们列出了所有用来为Web服务编写代码的语法和属性(包括适当的测试技术)。并介绍了一种提高性能的方式—— 高速缓存。 第7章结束了有关Web服务提供者的论述。讨论了使用Universal Description Discovery and Integration(UDDI,通用描述、发现和集成)框架作为一种通告和发现Web服务的方式而获得的益处(为了促进自己的Web服务的业务,可使用公有的或者私有的UDDI服务)。还介绍了Web Service Inspection Language(WSIL),它是一种公司Web服务器描述自身包含的Web服务的方式。 本书的第8~10章从Web服务用户的角度介绍了Hutchings Photography Web服务。Web服务的第一个用户是Hutchings Photography自己。这一部分还介绍了使用Hutchings Photography Web服务的两个不同Web应用程序。 第8章从Hutchings Photography业务合作人的角度再次进行案例分析。再次讨论了第2章中的某些问题,并阐述了Hutchings Photography的合作人在使用它的Web站点和仓储图像时需要考虑的事项。我们讨论了安全和信任问题及其解决方法。这一章还介绍了匿名用户的概念。所谓匿名用户就是那些通过UDDI或者WSIL注册(或通过口头形式)使用Web服务的访问者。最后引出了将在第9章和第10章中建立的两个用户Web站点。 第9章主要介绍了怎样构建Hutchings Photography的Web站点。当然,Hutchings Photography是它自己的用户,就像某个生产商的直销商店。虽然Hutchings Photography的业务模型改成了仓储图像供应商,但是它仍然希望可以许可它自己的图像。这一章中包含很多用来引用、调用以及处理从Web服务返回的图像和元数据的示例代码和技术。通过阅读这一章,您将会了解二进制编码、XML模式验证以及测试和部署Web应用程序等内容。 第10章是从一个不使用Microsoft产品的用户角度编写的。虽然本书用Microsoft .NET和Visual Studio .NET来建立Web服务,但我们还是想实践一下Web服务的跨平台操作。该章介绍的是Hutchings Photography的合作人之一,Penguin Photo。它运行的是Red Hat Linux,并使用Borland的Kylix软件来建立Web站点。我们介绍了Linux Web站点的建立过程,还讨论了在一个非Microsoft平台使用数据密集型Microsoft .NET Web服务涉及到的几个问题。 本书第11和12章介绍了两个重要问题:安全和性能。虽然这并不是案例分析中特有的问题,但我们还是要将这些重要问题包括进来,该部分内容适用于任何Web服务。 第11章介绍了安全方面的内容,其中包括由IIS提供的传统机制和由ASP.NET提供的新机制。由于.NET中的Web服务就是ASP.NET应用程序,所以这些Web服务与其他Web服务遵循相同的配置规则。这一章中介绍了可用于web.config文件的安全方法,并讨论了怎样存储您自己的证书来允许或者拒绝特定用户,最后讲述了怎样建立一个客户应用程序来测试安全机制。 第12章讨论了Web服务性能测试和调试。首先介绍了几个可用来提高Web服务性能的技巧,包括支持异步服务调用和回调,限制返回数据的范围。并且指出了在Windows、Component Service和IIS 5.1中可用来监控和提高性能的方法。最后给出了用来检查和监控Web服务各个方面性能的工具,包括Microsoft的Application Center Test(ACT)和Advanced .NET Testing System(ANTS)。 读者对象 如前所述,本书包含一个案例分析,适于开发人员、IT专家或者甚至是业务专家阅读学习。主线是使用Web服务从业务发布中受益,书中还介绍了一些技术、术语和代码。即使是经验丰富的.NET开发人员,也会发现一些新鲜的、有用的信息。 在学习本书之前,您应该具备一定的Visual Basic .NET、Visual C#.NET、XML、HTML以及SQL编程知识。 如果读者对用Visual Studio .NET来构建Web服务感兴趣,应阅读第1~7章。如果对用.NET平台或者其他非Microsoft平台来使用Web服务感兴趣,应阅读第Ⅲ部分,即第8~10章。如果对安全测试和调整ASP.NET Web服务感兴趣,应阅读第11章和第12章。如果主要对我们的案例分析的业务方面感兴趣,应阅读第1章、第2章和第8章。不过,我们还是希望读者能够阅读全书,并下载和分析模型和源代码。 必备的工具 要完成各章内容的学习,来构建数据库模型,编写存储过程,编译代码,并部署Web服务和应用程序,需要使用下列产品: Microsoft .NET Framework Microsoft Visual Studio .NET(建议Enterprise Architect版) Microsoft Visio for Enterprise Architects(用于对象角色建模) Microsoft SQL Server 2000 高级.NET 测试系统(Red Gate 软件) Borland Kylix 2.0(实现第10章中的Linux Web应用程序) Web站点上的内容 可以在我们的Web站点上找到所有的模型,代码,数据库,甚至是Hutchings Photography Web服务的工作实例。各章只列出了部分代码,您可以到Web站点下载全部代码。 最好先访问Wiley的Web站点,这是本书勘误表的官方源站点: 这个具有文档说明的、可自由下载的Web服务项目驻留在一个独立的服务器上: 小结 本书介绍了Web服务的强大功能,观点新颖,体裁得当。它不是一本构建Web服务的参考书或者进阶指导书,而是在这两者之间找到了平衡点,并将之包装为现实的、有意义的案例分析。 目前已在Internet上的业务和Internet之外的业务,都想要研究Web服务以作为一种拓宽用户群的方式。无论您是IT顾问专家、职业IT专家还是公司的CEO,我们都希望您成功地完成Web服务项目,并希望它为您的业务带来了新契机。