【IT168 技术文档】Web 服务经历了只有少数爱好者使用的时代,当时他们使用的是并不成熟但却受到高度赞扬的技术,他们努力去实现一切 —— 甚至是简单且不安全的基本数据结构的交换。而在最近两年,这项技术在大量实际项目中证明了自身的成熟。因此,许多技术主管现在都认为,Web 服务是企业应用程序与软件集成工具箱的另一个强大的组成部分,可以用在此领域以后的大项目中。这样,当 Web 服务的使用扩展到您所在组织的“普通”企业应用程序项目中时,您也许会发现自己已经成为 Web 服务项目组中的一员了,即便您从来就没有将自己当作上面提到的爱好者。如此说来,现在,您将扮演的是什么角色呢?让我们来看一看哪些是可行的!
阅读的理由
有很多理由让您觉得应该考虑阅读这篇文章:如果您是一名项目经理、首席架构师或组织内的另一名技术主管,您可以获得一些建议来指导您如何构造您的第一个 Web 服务项目以及为项目配备人员。我们汇集的角色与职责可以用于您的工作分解结构(work breakdown structure)。如果您是一名刚接触 Web 服务的开发人员,您就可以了解到存在哪些任务和工具 —— 并且应该在您的简历中添加哪些重要的词,以使您的名字能够出现在与您关系密切的下一个 Web 服务项目的项目计划书中。
请注意,这不是一篇普通的关于小组开发的文章,我们的重点在于 Web 服务的特定方面;例如,您在通常的 J2EE 项目中找不到的角色、以及分派给一个或多个角色的专业人员的工具和信息源。
您或许不明白为什么我们决定写这样的一篇文章,乍看起来似乎有点枯燥。说实在的,我们也同意应用技术来解决真正的业务问题对于任何项目来说都是很有意思的。然而,好的结构和方法是成功的关键,不成功的项目是决不会有乐趣的,即便它采用的是世界上最热门的技术。因此,请相信我们,您为此付出努力是值得的!
概述:Web 服务简介
Web 服务解决方案和面向服务体系结构(SOA)包括服务请求者(客户端)和服务提供者(服务器)的实现,它们通过 SOAP(XML 消息传递)来通信。Web 服务描述语言(WSDL)服务描述提供请求者和提供者之间的联系。可选的服务代理(例如统一描述、发现和集成(Univesal Description, Discovery and Integration,UDDI)注册中心也可能是需要的。服务描述和交互必须进行建模,XML Schema 也是如此。此外,还必须设计、开发、部署和测试实现。到目前为止,一切都还不错;如果您以前访问过 developerWorks Web 服务专区,您也许会说,这并没有什么特别之处呀。现在的问题是:项目组如何达到这些目的呢?
项目阶段和角色
任何开发项目都要经历不同的阶段,在其生命周期中需要不同的技能和协作。Web 服务在这方面也不例外。取决于您的环境中所用的方法,您可能已经遇到过下面列出的一般术语:
1.需求工程
2.业务领域分析
3.解决方案体系结构轮廓
4.概要设计和详细设计
5.面向对象分析与设计(OOAD)
6.各个测试阶段(比如单元测试、集成测试、系统测试、验收测试)
7实现
8.维护
9管理
有些方面(比如服务建模(例如粗或细粒度接口)、SOAP 引擎(IBM WebSphere SOAP、Apache Axis 或 Apache SOAP 2.3)的选择和组织互操作性测试)是 Web 服务需要首先考虑的特定事项。这些问题的性质各不相同,例如,服务建模的先决条件是要有不同的技能与思维方式,而不是互操作性测试。
角色这个比喻在此上下文中已经证明是非常有用的,它使混乱变得有序。角色与项目阶段有关,它定义了一个将工作描述与执行资源分解开来的抽象层。所有的项目组成员都担当一个或多个角色。 角色模型是项目管理和设计方法中的一个普通构造。角色的概念创造了一个容易理解的词汇,它已经证明是项目启动时的一个非常强大的工具。
因此,现在让我们考察一下 Web 服务开发项目中这样的一种角色模型。我们将模型中的角色分为三种类别来表示。由于 Web 服务项目不过是另一种类型的开发项目,所以我们看到此处有很多熟知的角色就不足为怪了。我们为它们定义了一种称为 现有角色的类别。然而,有些现有角色承担与 Web 服务有关的附加职责;我们将这些角色归类在 扩展角色之下。最后,还有一些新角色具有与 Web 服务有关的特别职责,我们将这些角色归类在 额外角色之下。
现有角色
让我们从您都已经在项目中看到(或担当过)的五种角色开始:
1.项目管理员--负责项目组的全面管理与领导。定义并追踪项目计划与工作分解结构。
2.商业分析员--获取商业用户的功能需求并且给项目组提供相关领域的知识。必须懂得商业语言并且具备相关行业和领域的技能。
3.架构师--项目的技术主管。开发整个解决方案及其组件的逻辑和物理布局(结构)。
4.开发人员--又称编码人员。不需要在此处介绍这个角色。
5.安全专家--负责定义安全指导方针(策略),并且负责实现遵循这些安全指导方针的安全措施。
系统与数据库管理员--执行硬件、操作系统和数据库系统以及中间件的安装和正在进行的维护工作。
请注意,这份清单肯定不是惟一的。我们本可以列出没有 Web 服务的特定方面的所有角色,因为它们都适合于这一类别。然而,我们将清单限制在 Web 服务项目中出现的最普遍的角色 —— 本文并不是一般的项目方法教程。
扩展角色
五个标准角色接收 Web 服务项目中附加职责。这些角色以及它们的新职责是:
1.产品供应商--提供遵守 WS-I 的 Web 服务运行时容器以及可选的服务注册中心和 SOAP 网关服务。
2.部署人员--获取开发构件并把它们安装在目标运行时环境中。从 WSDL 中生成目标环境的存根(stub)和骨架(skeleton)并把它们与服务实现一起安装。通过 Web 服务的特定部署描述符来提供 JAX-RPC 映射和处理程序配置。
3.测试人员--负责各类标准测试阶段,比如单元测试、集成测试、加载测试和验收测试。此外,还定义 Web 服务互操作性测试与一致性测试的测试用例。
4.开发人员--设计并实现项目的特定脚本,生成器以及其他实用程序。Web 服务领域中的标准等级使得有可能开发诸如理解 WSDL、JAX-RPC 或 JSR-109 这样的自定义工具。
5.知识转移服务商--提供接触相关主题的专家和技术指导的机会,他们会带来 Web 服务概念和实现资源方面的广博知识。
6.额外角色
最后,到了定义您可以在 Web 服务项目中看到的额外角色的时候了:
1.SOA 架构师--负责端到端的服务请求者和提供者设计。负责询问和表述非功能服务请求。
2.服务建模人--应用数据与功能建模技术来定义服务接口契约,包括所交换消息的 Schema。
3.流程流设计人--研究显式的、声明性的服务编排(聚合、组合)功能。这是一个可选的角色。
4.服务开发人--熟悉 Web 服务概念和 XML 的 J2EE 开发人员。开发服务接口、实现(提供者端)和服务调用代码(请求者端)。
5.互操作性测试人员--验证开发的请求者和提供者实现是否可以无缝地进行互操作,并且确保遵循 Web 服务互操作性(WS-I)。
6.UDDI 管理员--定义一般的 UDDI 数据模型是如何定制和植入的。这是一个可选角色。
请注意,我们划分扩展角色与额外角色在某种程度上是任意的。扩展角色与附加角色都来源于现有角色(例如,SOA 架构师和服务开发人员)。然而,我们相信对于额外角色,介绍新名称是合理的。从现在开始,我们将只集中于额外角色。
Web 服务的特定角色
现在,让我们更深入地研究 Web 服务的特定角色。下图展示了这些角色以及它们所执行的任务:
