技术开发 频道

SOA-Web services 新手入门

    目前计划制订的规范是 Web 服务分布式管理(Web Services Distributed Management),用于对所有的服务和面向服务的体系结构进行软件管理。最后,还有一些用于用户界面(Web 服务交互应用程序(WS-InteractiveApplications))和 Web 服务的远程访问(Web 服务远程门户(WS-RemotePortals))的规范。

    在写作本文时,用于 Web 服务的规范还处在不断地制订的过程中,而且它们仅仅是开始解释服务之间应该如何交互。然而,它们无法包括每一种方案和这些方案的可能组合。因此,Web 服务互操作性组(Web Services Interoperability Group,WS-I)的组成成员几乎来自所有从事 Web 服务开发的大大小小的厂商,它已经肩负起开发用况研究、样本应用程序、实现方案和测试工具的重任,目的是确保这些标准和规范能够真正地协同工作,而不考虑厂商的产品实现。

    WS-I 已经定义了他们第一个用于 Web 服务的基本概要(Basic Profile 1.0),并且还发布了他们的方案、样本应用程序和测试工具,以便根据方案评估和比较各种实现的结果。

    除了 WS-I 之外,Organization for the Advancement of Structured Information Standards (OASIS) 、World Wide Web Consortium (W3C) 和 Internet Engineering Task Force (IETF) 也在进行大量的标准制订工作。

    获得更多有关 Web 服务的信息:

1.Web 服务概念性体系结构解释了 Web 服务背后的技术思想及其工作方式。
2.在 Web 服务标准数据库中可以找到许多重要的 Web 服务规范和协议标准。
3.更多关于规范和标准的信息可以在 W3C 站点 和 OASIS 站点中找到。
4.您可以在 初识 WS-I 基本概要 1.0、First look at the WS-I Usage Scenarios 和 了解 WS-I 测试工具 中读到对 WS-I 所做的工作的介绍。

    Web 服务与其他技术的关系如何?

    Web 服务主要是技术的集成。不过,它本身是独立于形式的。如前所述,组成 Web 服务的技术通常是用 XML 进行定义和交互的。然而,由于 XML 本身是一种独立的语言,所以 Web 服务也是独立的。因此,可以用许多编程语言(其中包括 Java、Python、Perl、C#、Basic 等等)来开发 Web 服务。

    Web 服务的初衷是努力为 Internet 和 Web 应用程序的体系结构找到一种更好的方法,以便更好地进行通信和相互交互。因而,当今的大多数 Web 是基于在应用程序服务器环境(如 WebSphere、Apache 及其他)中运行的程序的。虽然它们不是必需的,但是一些最优秀的 Web 服务工具是为这样的环境而设计的。

    通过提供更简单的统一接口,Web 服务还有助于改进普及计算模型为移动环境和可移植环境工作的方式。移动计算软件将很快采用 Web 服务通信模型,而这有助于改进可视化 Web 服务的接口问题。

    网格计算已经采用 Web 服务作为开放网格服务体系构架(Open Grid Services Architecture)的一部分,这是一种用于这种类型的分布式计算的新模型,它使用 Web 服务来沟通网格如何操作。

    自主计算是一种很有意义的新方法,通过这种计算方法,计算机可以维护和管理它们自己,它有一些用于 Web 服务的应用程序。

    获得更多有关 Web 服务的信息:

1.Java 是 Web 服务的基石,而实际上,developerWorks 中的 Web services 专区中的大部分文章都侧重于基于 java 的开发。例如,开发者关于 JAX-RPC 的介绍,第 1 部分 和 开发者关于 JAX-RPC 的介绍,第 2 部分 专门讨论与 Web 服务开发有关的 J2EE API。
2.开发一个用于与 WebSphere Web 服务交互的 .Net 客户端 和 A Demonstration of Web Services Interoperability Between the WebSphere and .Net 提供了关于 Web 服务如何在不同的 Web 体系结构中跨平台工作的示例。
3.开放网格服务架构之旅 解释了现在网格计算是如何以 Web 服务为基础进行设计的。
4.Cross-platform programming with the WSTK for Mobile Devices 介绍了一些用于移动计算的 Web 服务编程工具。
5.ETTK 自愈合和自优化演示 展示了自主计算如何与 Web 服务协同工作。

    我可以如何在应用程序中使用 Web 服务?

    在构建应用程序时有很多考虑 Web 服务的方式。在最基本的层次上,高级通信协议允许应用程序相互交谈。在过去几年里,这一层已经取得了巨大的进展,出现了许多工具,通过使用这些工具,软件开发人员可以编写交互 Web 并构建复杂的应用程序。通常,这一层的特点是服务之间的一对一直接交互或比较少的服务相互交互。

    然而,如果只是将 Web 服务作为通信协议就未能实现面向服务的体系结构(SOA)。SOA 描述了服务的整个系统如何动态地相互查找,如何聚集在一起执行某些应用程序,以及如何按照多种方式进行组合。该模型鼓励技术和软件的重用,从而发展了设计、开发和使用应用程序的方式。它使分布式计算更接近于现实。在这一层次上,软件开发人员需要考虑 SOA 模型并通过此模型来设计他们的分布式应用程序。这一层的特点是使用各种技术来支持服务的分布式计算,比如 Enterprise Service Bus (ESB),它是一个通用的分布网络,可以与服务一起协同工作。

    而最高的层次是把 SOA 模型和许多组件服务看作是构件,这些构件可以装配成一个整体的部分并放入完整的应用程序中,而不是用传统的方法来编写一行一行的代码。通过检验连接接口,我们可以在不曾真正编写一行代码的情况下构建整个应用程序。说实在的,按照这种方式,甚至还可能得到直接代码,因为服务可以通过多种不同的语言和平台进行编写。可以将构件放在一起来组成定义应用程序的执行方式的操作工作流,而且还可以用其他的工具来监控每个服务或服务组的工作流的有效性。在这一层次上,开发人员可以把常规编程语言放在一边,而使用模型驱动的体系结构(Model-Driven Architecture)来帮助他们构建设计更精确的应用程序。然后,这样设计的应用程序就可以运行在分布式系统(如 ESB)之上。

    获得更多有关 Web 服务的信息:

1.Java 2 Enterprise Edition (J2EE) 是用 Java 编程语言开发 Web 服务的主流模型。您应该阅读关于 Java 的新手入门 的文章并且了解它的工作方式,从而理解 Web 服务开发的第一层次。
2.Building a Web service from SOAP to nuts 和 创建、部署、发布和使用一个简单的 Web 服务 是两篇关于构建交互 Web 服务的入门文章。
3.在您阅读完 Web 服务和 WSDK V5.1 介绍 教程之后,您应该再看一看 使用 WSDK V5.1 从 Java 类创建 Web 服务 和 使用 WSDK V5.1 从无状态会话 Bean 创建 Web 服务。
4.使用 Web 服务来访问 DB2 和 用 SQL 调用 Web 服务 提供了关于构建数据库 Web 服务的见解。
5.Web 服务世界中的业务流程和工作流 描述了业务流程如何在面向服务的体系结构中工作。
6.要获得更多关于使用 Web 服务的工作流和业务流程的信息,您应该阅读 BPEL4WS 专栏中的 BPEL4WS 规范,这个专栏的作者是该规范的一些作者。
7.从UML到BPEL: Web服务世界中的模型驱动体系结构 解释了 Web 服务可以如何融入模型驱动的体系结构(Model-Driven Architecture)之中。

    在了解了 Web 服务之后,我该如何继续提高这方面的技能呢?

    跟上 Web 服务的发展的最好方法就是阅读最新的技术文章和使用各种可用的工具。由于技术本身在不断地发展,所以这些信息和工具提供了对使用 Web 服务的非常好的方式的解释。之类的工具还跨越了几个阶段,涉及到这些技术的一些前沿知识,通过使用这些工具,您就可以实验专家正在研究的一些技术。我们将在下一部分中描述这些技术。

    目前,Web 服务已经取得了重大的进展,关于这个主题的各种信息也在爆炸式地出现。在 Web services 专区中,有大量有关开发用于直接交互的 Web 服务的技术内容。甚至像 SOAP 这样已经出现了三年多的协议仍在完善之中。由于这个主题在不断地变化,所以常常回到 Web services 看看是非常有益的。

    另一个提高您的技能的好方法是直接参与专区的讨论论坛。在这里,您可以找到正在这个领域积极开展研究工作的专业人员,甚至直接得到设计这些技术和开发这些产品的研发人员的帮助。

    对于高级开发人员,您可以通过参与每月一次的各种专题讨论会来加入到 Web 服务规范本身的制订和发展之中。

    获得更多有关 Web 服务的信息:

1.Web 服务专区经常增加一些新的教程,这些教程详细解释了如何在 Web 服务中执行有用的任务。
2.Web Services Specification Workshops 是一个多方参与的事件,您可以从中获得更多的信息并提供关于 Web 服务规范的反馈。
3.developerWorks 中的 Web 服务的非常好的实践 专栏调查了 IBM JStart 项目组成员在走向成功道路上遭遇的真实情景,这个项目是针对早期技术实现的。学习这些非常好的实践可以帮助您评估和适应您自己的项目的情况。
4.developerWorks 中的 Web services demo collection 实现了真实的正在运行的 Web 服务以及演示,可以在线展示 Web 服务中的各种功能和实现方案。这些演示随着实现前台或后台应用程序的代码一起产生,而且您可以自己动手创建这些演示的工作版本。由于这是用一个已经建立的运行着的示例控制的情景,所以重新构建您自己的演示或在此基础上修改代码能够帮助锻炼您的 Web 服务开发技能。

    IBM 的什么工具和产品可用于 Web 服务?

    IBM 为 Web 服务开发提供了一套全面的工具,不管您工作在哪一个抽象层次,从开发基本的交互 Web 服务到构建模型驱动的体系结构(Model-Driven Architectures),您都可以找到适合自己的工具。这样的一套工具包括 WebSphere Studio 产品家族、Rational 产品家族以及用于 DB2, Tivoli and Lotus 的工具。

    IBM 还提供了几个软件包,它们实现了 Web 服务协议,并且可以通过标准产品和试验台实现(比如通过 alphaWorks 程序所提供的)协助您进行开发活动。

    获得更多有关 Web 服务的信息:

    1.IBM 的 WebSphere SDK for Web Services (WSDK) 是一个稳定的计算环境,它实现了 Web 服务互操作性组(Web Services Interoperability Group)的 WS-I 基本概要(WS-I Basic Profile)1.0 中所定义的必要 Web 服务协议。它是一个集成的工具包,可以用来创建、发现、调用和测试 Web 服务。
    2.Emerging Technologies Toolkit 提供了一些高级工具,这些工具可以用于网格计算、异步 Web 服务、业务流程、自主计算和其它服务方面的 Web 服务开发。
    3.BPWS4J toolkit 实现了一个开发和测试 BPEL4WS 文档和工作流的引擎。
Web 服务调用框架(Web Services Invocation Framework) 软件包提供了一个标准 API,通过它可以调用 WSDL 中描述的服务,它独立于消息传递协议(如 SOAP)。
    4.用于生命科学的 Web 服务(Web Services for Life Sciences)软件包是用于生命科学软件开发的一组服务。
alphaWorks Web 服务站点有更多用于实现 Web 服务的项目和工具。
0
相关文章