内容简介
     本书指导开发人员如何利用WindowsSharePoint Services 3.0 (WSS v3)平台构建解决方案。许多开发人员对这个平台及其强大功能还不甚了解,因此本书的前几章主要针对它即装即用的特性展开,讨论如何基于这些特性安全地构建解决方案。随后,深入讨论WSS v3平台的一些关键方面,讲解如何利用它们构建应用程序。 本书主要适用于对SharePoint感兴趣的初、中级用户,如果.NET开发人员具备Web经验,将能更好地理解书中的概念。 本书是开发人员学习Microsoft应用平台技术的权威指南,介绍了SharePoint 2007中的一些新技术,重点讲述了SharePoint如何与底层平台保持一致。内容包括如何使用RSS、日志和wikis开发应用程序;如何使用和定制企业搜索、XML、XSLT和Web搜索服务;如何构建门户解决方案;以及如何使用日历、任务和Email事件开发Collaboration。本书旨在帮助读者掌握如何利用MSFT平台中现有的资源并将其迁移到SharePoint。
开发基于服务器的系统一向比较复杂。现在,一场悄悄兴起的革命正在试图简化基于服务器的系统的开发工作。这场革命关注一些脆弱标准(比如Java 2 Enterprise Edition,即J2EE)的轻量级替换方法,它的核心是基于简单旧式Java对象(Plain Old Java Object,POJO)进行设计,对处理与业务逻辑(比如登录和事务)正交的关注点的代码进行解耦,简化编码,以及实现长期可维护性。这场革命的中心就是称为Spring架构的Java架构。 本书讲解Spring架构。事实上,本书是一本关于Spring架构的介绍性书籍。与其他架构不同,Spring架构对于已经具有解决商业问题经验的开发人员(可能他们使用的是传统服务器架构,如J2EE 1.4)最为有用。与其他介绍性书籍不同的是,本书面向已经具有Java应用程序开发经验、但是还不熟悉Spring架构的开发人员。 从许多方面来讲,本书都是一本与众不同的技术书籍,因为我们现在生活在一个与以往不同的技术世界。现今,由于网络的可用性、可访问性及功能的不断增强,许多围绕数据驱动、基于服务器的系统的活动和应用程序应运而生。我们不再能够假定每个基于Web的系统都通过某种方法被绑定到大型主机的数据上;同样也不能假定每个基于服务器的应用程序都会带有面向企业的功能,比如复杂目录服务、事务服务器或者庞大的安全子系统。事实上,多数现代服务器端的Java开发都围绕一个需求——设计小型而敏捷的系统,这样的系统可以在业务改变时适应业务的需要。Java技术的用户基础,特别是基于服务器的Java技术的用户基础已经具有临界规模,并且呈现出多样化态势。Spring架构就是应对这种多样化用户分布需要的一种架构。 在当前的新时代中,Spring架构并不仅仅是一组API。它是一个不断进化的技术平台,正在迅速适应多样化的用户。Spring架构在许多方面都领先于开发技术社区,并且它更加贴近于使用这种技术并从中获益的人员。 本书的作者是一组行业专家,他们将提供实际操作经验,以此来讲解Spring架构的功能。本书首先集中讨论这种架构的基础知识,以便您能尽快上手。然后,本书将讨论目前使用的Spring架构的各个应用领域,这是本书最重要的一部分,因为您很可能会从中找到一些可以立即应用到您的系统中的内容。本书将提供结合各个应用领域的实际应用程序示例,从中可以深入了解如何开发、测试和部署一个基于Spring的完整系统。 本书的作者组成了难得一见的Spring实践专家的合作团队。Thomas刚刚完成了有史以来最庞大、最复杂的Web网站之一NFL.com的体系结构和实现,该网站基于Spring;此外,他也使用Spring为法国政府完成了网上税务申报系统。Bruce在空闲时间帮助将Spring架构的基础结构移植到Apache Geronimo(领先的开放源代码应用程序服务器,也是IBM的WebSphere Server Community Edition的标志性服务器)。Christian是开放源代码的Spring IDE——Spring开发人员首选的IDE工具——的合作创建者之一。Anne自Bell Labs的AT&T Unix时代以来就一直从事于开发多用户商业应用程序系统。Naveen每天都在为新出现的市场创建和维护支持Spring的、基于Web的服务和应用程序系统。Sing在为SUN工作很久以前就开始撰写有关开发技术的材料,他设法将J-A-V-A这几个字母连接到一起并读成Java。将这些与Rod Johnson——Spring的创建者——富有启示性的指导结合起来,您就拥有了一本适时讨论不断发展的Spring技术平台的相关背景知识的书籍。本书可以帮助您快速学会使用这种功能丰富的软件技术。 0.1 本书结构 要在最短的时间内学会使用Spring架构,您所需要的只是本书的下载源代码、第1章、以及附录A和C。这些章节和附录提供了足够的技术信息,可以帮助您快速掌握如何使用Spring 2架构。如果您是一名有经验的Java开发人员,那么可以在工作时根据需要学习其他内容。 然而,如果想要迅速地探究和学习其他当前关注的、支持Spring的应用领域,那么可以阅读本书的其余部分。 您可以自己确定阅读本书的速度以及阅读各章的顺序。我们尽力使本书适合各种读者的需要。下面对本书各章进行了简要的描述。 ● 第1章, Spring 2快速入门:这一章是快速介绍的章节。通过一系列实际示例,您可以立即开始使用Spring架构。这里使用有效的代码介绍了一些基础概念,比如依赖注入(dependency injection,DI)、控制反转(inversion of control,IoC)和面向切面编程(aspect-oriented programming,AOP),但是您也可以修改这些代码。本章一步步地讲解了Spring的配置特性,如bean连接。在阅读完本章后,您就可以轻松编写自己的基于Spring的应用程序。 ● 第2章,设计Spring应用程序:开发服务器端的业务应用程序应该十分简单,就如同创建执行必要的业务逻辑操作的Java对象一样。至少我们在大学里学到的知识是这么描述的。然而遗憾的是,多数实际的商业应用程序都要求定制访问数据库、安全子系统、事务、目录服务等的复杂API的编程。使用Spring时,您可以完全地追根究底并且由复杂回归简单。本章将揭示如何编码和测试只实现了业务逻辑的简单POJO,以及如何将Spring用作基于服务器的应用程序的核心。POJO是一个称为Pix的、基于Web的照片-相册-管理系统的核心对象(域对象)。这个Pix系统是实际的Spring系统,本书通篇都将使用这个系统作为示例。 ● 第3章,使用JPA的Spring持久性:在使用Spring时,向关系数据库添加存储和获取数据的功能并不是痛苦的工作。本章将揭示通过添加一些Java注释,您可以轻松地使用第2章中创建的POJO支持数据库。这里称这种支持技术为Java持久化API(Java Persistence API),本章将介绍大量关于JPA及其与脆弱的Java EE 5规范之间关系的内容。此外,您将了解如何将一般意义上的数据访问——这里主要讨论了JPA——集成到Spring架构中。您将把Pix中的域对象POJO转换成驻留在关系数据库服务器的表中的持久性记录。 ● 第4章,使用Spring MVC构建Web页面:当您想要创建基于Web的应用程序时,需要创建可以与用户交互的Web页面和表单。当然,这些表单和页面与存储在关系数据库服务器的后台上的数据绑定在一起。通过Spring,您可以使用在第3章中创建的支持数据库的POJO来处理后端。我们将揭示在使用Spring MVC时,基于这些POJO可以轻松地创建表单和Web页面。Spring MVC的设计遵循模型-视图-控制器这种模式,并从实际数据(POJO)解耦了表示技术。在本章中您将学到Spring MVC体系结构,并且将练习使用这种体系结构。您将创建使用Java服务器页面(Java Server Page)进行表示的Pix Web页面。这些页面使用PIX持久性POJO注册用户及创建相册。 ● 第5章,高级Spring MVC:Spring MVC用于从底层模型数据解耦表示技术。在这个有关高级话题的一章中,您将生成相册的一个Adobe便携文档格式(portable document format,PDF)的副本,此时这种解耦的灵活性将很明显。通过一些简单的配置改动,您将学到如何通过生成简易供稿(Real Simple Syndication,RSS)表示您的相册,这样其他的用户和Web站点就可以与(您通过Pix发布的)新照片关联起来。此外,本章还讲解了其他一些高级的Spring MVC技术,包括支持文件上传、处理多页面入口表单、提供个性化服务以使每个用户可以定制其体验,以及向您的Spring MVC应用程序添加国际支持。 ● 第6章,Spring Web流程:当您使用Spring和Spring MVC时,创建基于Web的服务器应用程序可以十分简单。但是并非所有基于Web的服务器应用程序都很简单——许多这样的应用程序都包含复杂的业务逻辑和多个相互关联的用户接口页面。此时停止使用Spring MVC,而开始使用Spring Web流程(Spring Web Flow)。使用Spring Web 流程时,您可以创建具备高度复杂的业务逻辑流程的应用程序,但是却不必为了支持它们而在服务器端累积杂乱而复杂的代码。通过Spring Web流程,您可以将复杂的应用程序逻辑分解为应用程序页面和业务逻辑的流程和子流程。您可以在XML描述符文件里设计和维护这些流程,从而简化其改动和升级。因为您将会把一些Pix应用程序的应用场合从Spring MVC迁移到Spring Web流程,所以本章中您将执行许多Spring Web Flow动作。您将亲自学到如何使用Spring Web流程对数据验证和会话管理的内置支持,以便极大地简化在支持这些生产级功能时通常需要使用的复杂编码。 ● 第7章,Ajax和Spring:DWR集成:Web 2.0指的是一种具备高度交互性的用户体验,这种体验可以使一个基于Web的应用程序让人感觉是本地运行的应用程序。这是与标准的基于Web的应用程序的一个极大区别,因为使用后者的用户必须在每个页面切换之间等待服务器的响应。使Web 2.0成为可能的神奇因素被称为Ajax,或者异步JavaScript和XML(Asynchronous JavaScript and XML)。在以前,创建Ajax应用程序要求具备浏览器端JavaScript编码、数据格式变换和网络编程方面的专门知识,但是,新的软件架构极大地简化了这个任务。本章说明了通过使用一个支持Spring的、称为DWR(Direct Web Remoting,直接Web远程处理)的Ajax架构,如何使您的Web应用程序支持Ajax。在本章中,通过使用DWR和Spring,您将为查看Pix相册而创建一个支持Ajax的、具备高交互性的Web用户界面。您将利用Spring MVC的能力从模型(域对象)解耦表示技术(如基于Ajax的DWR),并提供具备高度交互性的Web 2.0用户体验,以访问在前面几章中操作的相同的服务器端Pix POJO集。 ● 第8章,Spring和JMS——消息驱动的POJO:当子系统之间相互发送数据时,发送方和接收方并不总是同时可用。在商业系统中您不希望在子系统不可用时丢失数据。例如,想象一个网上订购系统,在子系统不可用时它会损失订单;显然您不想设计这样一个系统。软件行业早就通过使用消息队列解决了这个问题,但是早期管理健壮队列(称为MQ代理程序,MQ broker)的服务器只有大型企业才可以负担得起。随着开放源代码的ActiveMQ代理程序(ActiveMQ broker)的出现,实现了大范围的可靠消息传输。Spring通过使POJO支持队列来支持消息队列。这些POJO被称为消息驱动的POJO,它们极易创建。在本章中,将介绍Java Message Service(Java消息服务,JMS)API——它如何与MQ代理程序关联,以及如何使某些POJO支持MQ以实现PIX系统的可靠操作。 ● 第9章,Spring Web服务和远程处理:现在,在使用信息技术时几乎不可能不遇到Web服务。Web服务的独特之处在于,只要可以使用浏览器,您就可以访问Web服务。这意味着通过Internet可以很容易地使用Web服务,即使存在可能会阻止其他服务调用机制的干涉性安全防火墙。这样,商业系统可以通过Internet与其他商业系统进行交流,而不需要额外的硬件或网络投入。创建Web服务通常是一个复杂的多步骤过程。通过一个称为XFire的开放源代码API库的协助,Spring使您可以在非常短的时间内创建Web服务。事实上,只要改变一些XML配置文件,就可以将已有的POJO接口作为Web服务提供。本章将介绍Web服务的概念和术语,并使您通过使用Spring和XFire实现一个基于Pix的成员注册Web服务。 ● 第10章,Web服务的使用者及与.NET的互操作性:因为Web服务可以通过Internet访问,所以很可能您需要创建调用他人创建的Web服务的客户端。有了Spring和XFire的帮助,您可以轻松地完成这项任务。本章将逐步地说明如何创建这样的客户端——它们常被称为Web服务的使用者(Web service consumer)。Web服务并不是Java开发人员的唯一领域。事实上,可以使用运行在完全不同的平台上的完全不同的技术实现使用者和服务,这是Web服务的一个优秀特性。这意味着Java用户可以调用基于Microsoft .NET的服务,反之亦然。本章将显示如何创建可以互操作的系统。将为Pix创建一个基于Java Spring的使用者,使其访问通过.NET创建的、执行远程电子邮件验证的Web服务。此外,还将创建一个基于.NET的Web服务使用者,这个使用者使用C#来访问Pix成员注册Web服务。 ● 第11章,使用Spring IDE进行快速Spring开发:本章将介绍Spring IDE,这是一个用于简化Spring开发的工具。Spring IDE是用于Eclipse平台的一个插件的集合,它添加了对编辑Spring XML配置文件以及对这些文件添加验证和可视化的支持。此外,它还提供了综合工具来帮助您学习Spring AOP和Spring Web流程。本章将提供一个逐步的安装向导和如何在日常工作中使用Spring架构不同功能的详细描述,以此显示如何开始使用Spring IDE。 ● 第12章,Spring AOP和AspectJ:面向切面编程(AOP)隔离了横切代码模块的关注点,并且解耦了处理这些关注点的紧密代码。在生产中,处理安全、登录、事务等的代码被混杂进所有的代码模块中,从而使理解、修改和维护它们变得十分困难。AOP使您可以隔离这类代码并独立维护它们,从而使业务逻辑代码保持简单状态并远离那些让人困惑的元素。AspectJ是首选的AOP编程平台,它一问世就强烈地冲击了世人的想象力。Spring支持的AOP集成了Aspect的最佳特性,并对所有的Spring应用程序开放这些功能(Aspect的开发人现在正式成为Spring社区的活跃的领导,这一点确实提供了帮助)。本章将介绍AOP,您将看到它如何有助于提高甚至于最大型的项目的敏捷性和适应性,以及它如何极大地简化长期维护。您将练习使用Spring AOP和AspectJ,并且将在Pix系统内富有成效地使用它们来解决横切关注点的问题。 ● 第13章,更多的AOP:事务:同时执行多个相互关联的操作的系统经常会失败。当一个或多个这样的相关操作失败时,可以选择编写非常复杂的失败处理代码来应对所有不同的情况,或者选择停止操作并重新开始。当然,要重新开始通常是说起来容易,做起来难。但是不必担心:软件行业已经为此专门发明出了事务。在事务中,所有相关联的操作都必须成功,否则底层的事务管理系统会撤消事务中所有相关联操作的结果。Spring通过一个统一的模型和API支持所有类型的事务。事务可以是局部的专属于服务器(比如一个RDBMS服务器)的某个实例,也可以是全局的——分布在几个网络化的服务器上。Spring通过同样的统一化模型和API提供对局部和全局事务的支持。当向POJO添加事务时,Spring允许您使用声明的方式执行添加操作,而不必修改任何POJO代码。本章将介绍事务的有关概念,并描述Spring如何使用拦截和应用AOP来简化事务处理,此外本章还揭示了如何通过修改XML配置文件轻松地使PIX POJO支持事务。 ● 附录A,Maven 2基础:Maven 2是进行Java项目时首选的一个开放源代码的构建管理系统,对于支持Spring的Java项目尤其如此。本附录将介绍Maven,描述如何安装Maven,并且提供关于相关的Maven使用场合的详细选择,以便使您可以轻松而正确地使用这个功能丰富的工具。 ● 附录B,Spring和Java EE:对于Java EE 5如何与Spring架构关联或与Spring架构竞争,一直以来都存在许多种说法,也存在不少困惑。本附录将讲解一些确切的事实,并具体比较这两种重要的平台。 ● 附录C,为代码示例做准备:本附录提供关于安装和设置Pix服务器示例的详细指令。这个示例贯穿全书。 0.2 源代码 在读者学习本书中的示例时,可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点/或www.tupwk.com.cn/downpage上下载。登录到站点/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有的源代码。 注释: 由于许多图书的标题都很类似,所以按ISBN搜索是最简单的,本书英文版的ISBN是978-0-470-10161-2。 在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。 0.3 勘误表 尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。 请给wkservice@vip.163.com发电子邮件,我们就会检查您的反馈信息,如果是正确的,我们将在本书的后续版本中采用。 要在网站上找到本书英文版的勘误表,可以登录,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是/misc-pages/booklist.shtml。 0.4 要与作者和同行讨论,请加入上的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链接。