Answers:
诸如(XML,SOAP,WSDL)之类的基本技术提供了将服务描述,定位和调用为实体的手段。但是,这些技术并未提供有关服务在更复杂的协作中的角色的丰富行为细节。这种协作包括一系列活动以及活动之间的关系,从而建立了业务流程。有两种方法可以构建此过程:服务编排和服务编排。
服务编排表示单个集中的可执行业务流程(协调器),该业务流程协调不同服务之间的交互。协调器负责调用和合并服务。
所有参与服务之间的关系由单个端点(即复合服务)描述。编排包括各个服务之间的事务管理。编排采用集中式方法进行服务组合。
服务编排是参与服务的全局描述,它是通过两个或多个端点之间的消息交换,交互规则和协议来定义的。编排采用分散式方法进行服务组合。
编排描述了多个服务之间的交互,其中从一个参与方的角度来看,编排表示控制。这意味着一个编排 不同从编排相对于其中逻辑控制涉及应驻留在服务之间的交互。
服务编排:您通过固定逻辑将多个服务组合在一起。此逻辑在单个位置描述。您可以想象一个团队,其中有一个经理进行微观管理。经理清楚地告诉应该做什么,什么时候以及由谁做。团队成员并不关心整个工作目标,经理将输出合并为一个可交付成果。一个实际的例子是BPEL流程。BPEL流程包含逻辑,可以调用多个服务并将它们的响应组合为一个服务响应。
服务编排:决策逻辑是分布式的,没有集中点。您可以想象一个家庭,每个人都为共同的利益而努力,并且在没有微观管理的情况下主动工作。或者您可以想象一个人体,其中不同的成员相互依存,并为共同的目标而努力。一个实际的示例是事件驱动的处理,其中代理由事件激活并完成其工作。所有代理共同构成一个系统。没有集中的逻辑。编排的可能性可能会比编排更远,因为它与现实世界更加契合。
我的观点是,我们不需要在这两者之间做太多区分,因为我们需要专注于业务逻辑。在一个逻辑点完成任务的地方,我们进行编排。在集中式逻辑无法解决问题的地方,无论如何我们都被迫编排。这就是为什么我们经常在IT流程中遇到杂乱无章的原因,而杂乱无章仍然是一个学术概念和研究主题。就像在现实世界中一样,我们经常在没有实际了解的情况下进行编排。
服务可以在原子服务和其他服务组成的服务之间进行区分。这样的组成被称为“编排”。有时是工作流程,有时是业务流程。例如,BPEL是一种编排语言,但自称为“业务流程执行语言”。
不要求服务必须按层次构成。这意味着,两个服务可能会互相交谈。它们之间运行的协议称为“编排”。它可能是两个服务,但是通常涉及两个以上的服务。编排中的每个服务都可以视为伙伴服务的协调器。参与编排的每个服务可以被实现为编排/工作流程/过程。
编排显示了每个服务的完整行为,而编排则组合了每个服务的接口行为描述。
以下是一篇区分编排,界面行为,提供者行为和编排的优秀科学文章: Dijkman,R.&Dumas,M.面向服务的设计:一种多视角方法国际合作信息系统杂志,2004,13, 337-368
由于线程较旧,但仍为那些会像我一样在这里寻找这个问题的人而写。在面向服务的体系结构(SOA)中,这是一个备受争议的问题,它需要为初学者提供更清晰的解释。
编排:可执行过程
编舞:多方协作
相比之下,编舞并不依赖中央协调器。而是,编排中涉及的每个Web服务都确切知道何时执行其操作以及与谁进行交互。编排是一项协作工作,致力于在公共业务流程中交换消息。
编排的所有参与者都需要了解业务流程,要执行的操作,要交换的消息以及消息交换的时间。
编排与编排
从组合Web服务以执行业务流程的角度来看,编排是一种更灵活的范例,与编排相比具有以下优点:
组件过程的协调由已知的协调员集中管理。
可以合并Web服务,而无需知道它们正在参与更大的业务流程。
Andrei和其他人在解释什么是编排和什么是编排方面做得很好。对于在这两种选择之间进行选择的软件架构师,将它们在不同质量方面进行比较也很重要。
编排优于编排
编排优于编排
性能:由于工作流程脚本解释和业务流程平台本身的附加层,业务流程会产生性能开销。
成本:编舞不需要额外的中间件或语言,而中间件或语言具有相关的学习曲线和治理负担。
如果业务流程元素不采用高可用性机制,则业务流程解决方案可能会引入SPOF。感谢@Deepak por在评论中指出这一点。
我想说编排在内部非常适合高度分散的组织。您将不需要中央业务流程执行者。这有利于每个组织子单位的独立增长和发展。
(我同意这种对编排与编排问题的解释:http : //geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html)