从组织内部的角度来看,服务编制和服务编排之间的区别是什么?


当前回答

因为线程已经很老了,但仍然在为那些像我一样在这里跌跌撞撞地寻找这个问题的人写信。在面向服务的体系结构(SOA)中,这是一个备受争议的问题,初学者需要更清晰的解释。

业务流程:可执行过程

Used in private business processes A central process (which can be another Web service) takes control of the involved Web services and coordinates the execution of different operations on the Web services involved in the operation The involved Web services do not "know" (and do not need to know) that they are involved in a composition process and that they are taking part in a higher-level business process. Only the central coordinator of the orchestration is aware of this goal, so the orchestration is centralized with explicit definitions of operations and the order of invocation of Web services.

编排:多方合作

相反,编排不依赖于中央协调器。 相反,编排中涉及的每个Web服务都确切地知道 何时执行其操作以及与谁进行交互。 编舞是一种专注于交流的协作 公共业务流程中的消息。 编排的所有参与者都需要了解业务 流程、要执行的操作、要交换的消息和定时 信息交换。

编排与编排

从组合Web服务以执行业务的角度来看 流程、编排是一种更灵活的范式,并且具有 与编舞相比,以下优点: 组件过程的协调由一个 已知的协调员。 Web服务可以在它们不知道的情况下被合并 正在参与一个更大的业务流程。 在出现故障时,可以设置备用场景。

其他回答

基本技术(如XML、SOAP、WSDL)提供了将服务作为实体来描述、定位和调用的方法。然而,这些技术并没有提供关于服务在更复杂的协作中的角色的丰富行为细节。此协作包括一系列活动和活动之间的关系,这些活动和关系构建业务流程。有两种方法构建此流程:服务编制和服务编排。

服务编制

服务编制表示一个集中的可执行业务流程(编配器),用于协调不同服务之间的交互。协调器负责调用和组合服务。

所有参与服务之间的关系由单个端点(即组合服务)描述。编制包括管理各个服务之间的事务。业务流程为服务组合采用集中式方法。

服务编排

服务编排是参与服务的全局描述,由两个或多个端点之间的消息交换、交互规则和协议定义。编排为服务组合使用了分散的方法。

编排描述了多个服务之间的交互,其中编排表示从一方的角度进行控制。这意味着编排与编排在控制所涉及服务之间交互的逻辑应该驻留的位置上有所不同。

Service orchestration: you put together several services by a fixed logic. This logic is described at a single place. You can imagine a team of people with a manager doing micro-management. The manager precisly tells what, when and who should do. The team members do not care of the entire goal of the job, the manager combines the outputs into a single deliverable. A practical example is a BPEL process. BPEL process contains the logic, can invoke several services and combine their responses into a single service response.

Service choreography: the decision logic is distributed, with no centralized point. You can imagine a home, where everybody aims for the common good and works pro-actively without micro-management. Or you can imagine a human body, where different members are interdependent and work for the common goal. A practical example is event driven processing, where an agent is activated by an event and does its job. All the agents make a system together. There is no centralized logic. Choreography possibilities may go farther beyond orchestration as it is more aligned with the real world.

我的观点是,我们不需要对这两者进行太多区分,因为我们需要关注业务逻辑。在单点逻辑可以完成工作的地方,我们进行编排。如果一个问题不能被集中的逻辑覆盖,我们就不得不编排。这就是为什么我们经常在IT中遇到编排,而编排更多地是一个学术概念和一个研究主题。我们经常在不知情的情况下编舞,就像在现实世界中一样。

因为线程已经很老了,但仍然在为那些像我一样在这里跌跌撞撞地寻找这个问题的人写信。在面向服务的体系结构(SOA)中,这是一个备受争议的问题,初学者需要更清晰的解释。

业务流程:可执行过程

Used in private business processes A central process (which can be another Web service) takes control of the involved Web services and coordinates the execution of different operations on the Web services involved in the operation The involved Web services do not "know" (and do not need to know) that they are involved in a composition process and that they are taking part in a higher-level business process. Only the central coordinator of the orchestration is aware of this goal, so the orchestration is centralized with explicit definitions of operations and the order of invocation of Web services.

编排:多方合作

相反,编排不依赖于中央协调器。 相反,编排中涉及的每个Web服务都确切地知道 何时执行其操作以及与谁进行交互。 编舞是一种专注于交流的协作 公共业务流程中的消息。 编排的所有参与者都需要了解业务 流程、要执行的操作、要交换的消息和定时 信息交换。

编排与编排

从组合Web服务以执行业务的角度来看 流程、编排是一种更灵活的范式,并且具有 与编舞相比,以下优点: 组件过程的协调由一个 已知的协调员。 Web服务可以在它们不知道的情况下被合并 正在参与一个更大的业务流程。 在出现故障时,可以设置备用场景。

当您可以控制流程中的所有参与者时——当它们都在一个控制域中并且您可以指定活动流时,编排非常有用。当然,当您指定将在您拥有控制权的组织内部实施的业务流程时,这是最常见的情况。

编排是一种指定两个或多个参与方如何协调其活动和过程以共享信息和价值的方法——其中任何一方都不能控制其他参与方的过程,或者可能对这些过程没有任何可见性。当需要跨控制/可见性领域进行协调时,使用编排。在一个简单的场景中,您可以把编排想象成一个网络协议。它规定了各方之间可接受的请求和响应模式。

我认为编排在内部非常适合高度分散的组织。您不需要中央业务流程执行器。这有利于每个组织子单元的独立成长和发展。

(我赞同编配与编排问题的解释: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html)