服务编制是指可以与内部和外部Web服务交互的可执行业务流程,其交互发生在消息级别。它们包括业务逻辑和任务执行顺序,可以跨越应用程序和组织来定义一个长期的、事务性的、多步骤的流程模型。服务编制存在中心节点的控制程序,类似于管弦乐队的指挥一样控制着各参与者的节拍,因此使用英文术语services orchestration一词形象地表达服务编制。
服务编排是指使用Web服务之间的公共消息交换描述参与者的交互关系,其更具有协作性,不是单方执行的特定业务流程。服务编排不存在中心节点的控制程序,即没有类似于管弦乐队的指挥,而类似于编舞,因此英文术语使用services choreography一词形象地表达服务编排。
关于服务编制(services orchestration),除了要处理错误和有超时限制之外,服务编制还必须确保长周期运行的分布式事务的资源可用性。传统的遵循ACID(原子性、一致性、隔离性和持久性)原则的事务一般不支持长周期运行的分布式事务,因为它们无法在长周期运行的事务中锁定资源。补偿事务的概念提供了一种在进程或用户取消操作时撤销操作的方法。对于补偿事务,每个方法都会公开一个事务协调器可以在必要时调用的撤销操作。最具代表性的语言是BPEL4WS(见业务流程执行语言)。
关于服务编排(services choreography),最具代表性的语言是WSCI(Web services choreography interface)。WSCI是Sun、SAP、BEA和Intalio公司开发的一种基于XML的Web服务编排接口规范,它一般与Web服务描述语言(Web services description language,WSDL)结合在一起使用,此规范定义了WSDL的协作扩展并于2002年8月成为W3C Note。WSCI定义了Web服务之间的整体编排或消息交换。该规范支持消息关联、排序规则、异常处理、事务和动态协作。WSCI仅描述了Web服务之间的可观察行为。它不像BPEL那样处理可执行业务流程的定义。此外,单个WSCI接口仅描述一个合作伙伴参与消息交换。WSCI编排将包括一组WSCI接口,交互中的每个合作伙伴各有一个接口。在WSCI中,没有单个进程管理交互。每个WSCI操作代表一个映射到特定WSDL操作的工作单元。WSCI扩展了WSDL,描述了如何编排可用的WSDL操作。即WSDL描述了每个可用服务的入口点,而WSCI描述了WSDL操作之间的交互。