从组织内部的角度来看,服务编制和服务编排之间的区别是什么?
当前回答
基本技术(如XML、SOAP、WSDL)提供了将服务作为实体来描述、定位和调用的方法。然而,这些技术并没有提供关于服务在更复杂的协作中的角色的丰富行为细节。此协作包括一系列活动和活动之间的关系,这些活动和关系构建业务流程。有两种方法构建此流程:服务编制和服务编排。
服务编制
服务编制表示一个集中的可执行业务流程(编配器),用于协调不同服务之间的交互。协调器负责调用和组合服务。
所有参与服务之间的关系由单个端点(即组合服务)描述。编制包括管理各个服务之间的事务。业务流程为服务组合采用集中式方法。
服务编排
服务编排是参与服务的全局描述,由两个或多个端点之间的消息交换、交互规则和协议定义。编排为服务组合使用了分散的方法。
编排描述了多个服务之间的交互,其中编排表示从一方的角度进行控制。这意味着编排与编排在控制所涉及服务之间交互的逻辑应该驻留的位置上有所不同。
其他回答
我认为编排在内部非常适合高度分散的组织。您不需要中央业务流程执行器。这有利于每个组织子单元的独立成长和发展。
(我赞同编配与编排问题的解释: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html)
服务可以区分为原子服务和由其他服务组成的服务。这样的作曲被称为“配器”。有时是工作流,有时是业务流程。例如,BPEL是一种编排语言,但自称为“业务流程执行语言”。
没有要求服务必须按层次结构组合。这意味着两个服务可以相互通信。在它们之间运行的协议被称为“编排”。它可能是两个服务,但通常会涉及两个以上的服务。编排中的每个服务都可以视为伙伴服务的编排器。参与编排的每个服务都可以实现为编排/工作流/流程。
编制显示每个服务的完整行为,而编排则组合每个服务的接口行为描述。
一篇区分编排、接口行为、提供者行为和编排的优秀科学文章如下: 杜马。面向服务的设计:一个多视角的方法。国际合作信息系统杂志,2004,13,337-368
另一种看待服务编排与编排的方法:
—服务编排:围绕业务域。 —服务编排:在多个业务域之间。
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中遇到编排,而编排更多地是一个学术概念和一个研究主题。我们经常在不知情的情况下编舞,就像在现实世界中一样。
编配和编排都是大规模的过程形式主义的两种哲学,即协作空间。协作空间是一个行业的正式表示,例如健康行业、食品行业、汽车行业或... .因此,在您决定编排它们或使用编排来提供对终端消费者有意义的需求之前,您应该有一些小规模的能够使用某种交流语言的服务提供者。
编排通常遵循分布式系统中著名的中间件。IT行业中一些很好的工具例子可以是Juju, Zapier IFTTT。您可以对所使用的服务进行集中控制、听觉、修改和故障排除。
Choreography is more decentralized than orchestration in the sense that it accepts more autonomous collaborators. For example bitcoin network is a collection of service providers called nodes which collectively provide a Defi service namely distributed ledger functionality to its service end-consumers. But this does not have any centralized authority in charge, and there is no total-view over whole network. There is just a consensus machanism that if respected candidate service provider joins the network and participate in end-consumer service provision. Anywhere you need to attack trusted third party and its side effects such as corruption, an orchestration would not suffice.
同样,任何行业参与者之间的任何协作都可能受到编排或编排的影响,因此我希望将示例仅限于IT行业不会造成误导。
我还可以补充一点,命名暗示了两者与舞台表演的相似之处。在管弦乐队中,如果每个乐器演奏者都跟随指挥,他/她就能与其他成员和谐相处。另一方面,类似于编舞中的舞台舞蹈,没有指挥,每个舞台舞者只与他/她的搭档协调(最好是作为同伴),没有单一的协调领导。但两者仍然向观众呈现和谐。