RSS订阅
RSS订阅TT SOA

更好的处理Web服务事务

2008-7-11  选择字号:  | |
打印本文章

导读:以运行Web服务的跨平台方式处理Web服务中的事务变得越来越重要。Web服务是一种用于联系不同平台的技术。它又一系列说明说来处理各种复杂的事务。

关键词:Web服务 Java平台 .NET PHP

正在加载数据... 【TechTarget中国原创】让软件的独立片断像一个工作单元那样运行时很多软件平台长期处理的领域,并且它也是很多业务处理的核心。所有有关此画题的术语被称为“事务”。在下面的文章里,我们会阐述在Web服务环境中处理事务的问题和方法。

  以运行Web服务的跨平台方式处理Web服务中的事务变得越来越重要。由于事务的意思是一个单元的工作要么都执行,要么根本不执行,因此弥合各种不同的与平台有关的事务机制之间的差异对于很多基于SOAP的应用非常重要……

【TechTarget中国原创】让软件的独立片断像一个工作单元那样运行时很多软件平台长期处理的领域,并且它也是很多业务处理的核心。所有有关此画题的术语被称为“事务”。在下面的文章里,我们会阐述在Web服务环境中处理事务的问题和方法。

  以运行Web服务的跨平台方式处理Web服务中的事务变得越来越重要。由于事务的意思是一个单元的工作要么都执行,要么根本不执行,因此弥合各种不同的与平台有关的事务机制之间的差异对于很多基于SOAP的应用非常重要。

  以Java平台为例,尽管JTA(Java Transaction API)提供了在Java应用中处理多种事务场景的支持,但当在任何非Java应用,例如.NET或PHP,边界的外部需要使用事务时,对事物支持的专门技术就显得非常有限了。

  Web服务是一种用于联系不同平台的技术。它又一系列说明说来处理各种复杂的事务。

  Web services transactions specifications由IBM、BEA和Microsoft重量级公司开发。它最近被分成了三个主要工作组:WS-Coordination,WS-Atomic Transaction以及WS-Business Activity。

  WS-Coordination定义了在Web服务之间发生的任何事务处理的底层基础。与WS-Atomic Transaction或WS-Business Activity一起使用时,WS-Coordination被用来定义注册Web服务以及协作Web服务来参与事务的机制。

  从事务的观点看,WS-Coordination的作用是建立上下文环境,用来执行和管理参与事务的不同Web服务单元。而当WS-Coordination为事务形成基础时, 它把事务协议的细节留给了另外两个说明书:WS-Atomic Transaction和WS-Business Activity.

  WS-Atomic Transaction事实上非常类似于企业软件中一个现有的宽泛的协议:两段提交协议。尽管该协议的细节已经超出了Web服务的范围,但它运行的基础则是在两种资源之间达到同步以确保持续的输出。

  笼统地说,两段提交协议以及WS-Atomic Transaction的核心都是短期操作,或者说,能够很快知道成功还是失败的事务处理。

  另一方面,WS-Business Activity被设计用于长期运行的事务。另一个主要差异是其健壮性,因为与WS-Atomic Transaction相比,它可以处理事务场景。

  WS-Atomic Transaction为事务提供了要么都做,要么不做的解决方案,而WS-Business Activity则提供了例如异常处理等功能来做进一步的补充。

  既然我们已经提出了Web服务事务的概念,你或许会问在真实的Web服务应用中如何把事务组织在一起呢?和其它说明书一样,对于这个问题,你需要Apache Software Foundation提供的一种工具Kandula 。

  作为一个Apache项目。Kandula中的事务性功能很像Axis。而Axis是Apache开发的事实上的Web服务平台。由于该项目关注在Java上,因此Kandula中对于WS-*事务的支持也是一种Java的事务性工具。

  清单1.1是使用Kandula的最简单的例子。它描述了一个使用Kandula WS-Atomic Transaction的Web服务的样子。

import org.apache.kandula.coordinator.at.TransactionManagerImpl;

public class Fullfilment  {
  
    public void order(int orderId) {
        // More Business Logic

        Inventory inventory = new Inventory().getInventory();
        TransactionManagerImpl tm =
            TransactionManagerImpl.getInstance();
        tm.begin();
        try {
            inventory.ship(orderId);
            inventory.deduct(orderId);
        }catch (Exception e) {
            tm.rollback();
        }
        tm.commit();

        // More Business Logic
    }
}

  虽然是Java代码,但很容易发现在try/catch块中嵌套的调用是调用Inventory类。该类被嵌套在Kandula TransactionManager的begin和commit方法之间。你可能还会注意到如果有错误发生,再同样的TransactionManager类中会调用一个rollback方法。

  实际上被调用的方法是Inventory类的ship()和deduct()。它们形成了事务,尽管它们是Inventory类的一部分,但也可以设想它们是由WSDL合约生成的stub类的一部分,该类负责与用Java写的远程Web服务或任何其它支持Web服务的平台进行通信。

  用这种方式的嵌套,Kandula通过Axis把事务信息传递给Inventory类,该信息随后被包裹成相应的SOAP消息用于服务终端的消费与协调。

  尽管事务通常是很多软件项目事后才想到的,但当显式管理事务的需求上升时,它们在完成软件业务功能中就扮演起关键的角色。我们提到的说明书在日益形成的面向服务架构的世界中正起到关键性的作用。

还没有登录? 阅读全文请先登录或注册
用户名:(请填写您的E-mail做为登录账号)
  • 获取最新的IT业界资讯、市场动态、行业趋势等独家原创内容。
  • 分享国内外技术专业人士提供的技巧经验。
  • 利用专注IT的技术资源中心,不断更新专业知识。
  • 享受白皮书、Webcast等系列特色增值服务。
  • 免费参加TT中国举办的各种会员活动。
  • 更多的精彩服务,在不断开发中……
用户名:(请填写您的E-mail)
密 码:
 永久登录
请输入您的登录email:
期我们回顾了甲骨文和SUN在2008年的收购经历及笔者对收购事件的解读。本期我们将继续这一话题,而我们所点评的软件厂商包括微软、雅虎、IBM、Novell和BMC……
在今天,很可能你已经开始着手进行一个或者两个SOA项目了。当然,这并不奇怪,在世界范围内的11000家大型企业中,有95%的企业已经开始投入某种努力去实现SOA了……
我们正在进入多元化的银行和金融服务,我们处理客户关系管理CRM,BI,遗产系统,产品J2EE和.NET和其他异构平台。如果我们想要转移到一个共同的平台,为什么要选择SOA……
最近DIG和普元公司联合发布的白皮书《软件商的成长之路》,该白皮书通过市场调查将软件企业分成了“服务型软件开发商”和“产品型软件开发商”,这是一次名词定义进步……
探究跨平台Web服务集成所面对的常见的互操作性难题的根源。该系列文章中的第3部分描述了J2EE技术与.NET之间可以导致Web服务互操作性困难的不同的命名约定……
虚拟化和SOA之间是一种间接的、相辅相成的关系。也许在IT及业务转型中,两者的结合使用会发挥最大的优势。虚拟化有助于更快地显示部署基础设施的投资回报率(ROI)。
云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。
安全对于许多的IT部门来说都是一个重要的问题之一,但是SOA安全问题完全是在另一个新的纬度上了。对于SOA为一个机构所带来的许多的好处,例如具有在许多不同的提供者和供应商的情况下混合和匹配服务。
最新更新
专家答疑
技巧
Ron Schmelzer,Jason Bloomberg
你认为通过遵循IT组织步骤可以演变为SOA吗?ZapThink公司明确SOA实行肯定是一个挑战——也不应被视为这一倡议应得到执行的一个步骤就是整个企业的基础……
Dana Gardner
您能解释什么是“私有云”吗,能否举例说明?这是供应商需要建立的基础吗?作为托管服务供应商和服务供应商寻求最有效和最强大的基础设施,作为他们的“云”支持能力……
Andrew Pollack
我们正在寻找一种从主机选择SOAP服务器的请求。我们希望制造一个远程程序呼叫(RPC)从CICS程序的SOAP服务器,其中进程请求,使错误或成功后的反应……