Apache Camel到底是什么?


1360

我不明白骆驼到底在做什么。

如果您能用101个字来介绍骆驼:

  • 到底是什么
  • 它如何与用Java编写的应用程序交互?
  • 它与服务器一起使用吗?
  • 它是一个独立程序吗?

请解释一下骆驼是什么。

Answers:


719

如果您有5到10分钟的时间,我通常建议人们阅读Jonathan Anstey撰写的与Apache Camel集成。这是一篇写得很好的文章,简要介绍了Camel的一些概念并对其进行了概述,并且使用代码示例实现了用例。乔纳森在其中写道:

Apache Camel是一个开放源代码Java框架,致力于使集成更容易并且对开发人员更易于访问。为此,它提供了:

  • 所有广泛使用的企业集成模式(EIP)的具体实现
  • 连接到各种传输和API
  • 易于使用的领域特定语言(DSL)将EIP连接在一起并进行传输

骆驼在行动中也有一个免费的章节,在第一章中介绍了骆驼。乔纳森与我合着那本书。


55
《行动中的骆驼》是一本非常不错的书,可以学习基础知识以及如何使用骆驼的一些更复杂的功能。我强烈推荐它!(我绝不隶属于这本书或出版商)
Matt Aldridge

2
@Clause如果要在m子ESB和Camel之间选择。我选择另一个时的败坏应该是什么
kuhajeyan

8
请参见camel.apache.org/articles.html上与骆驼竞争对手进行比较的一些链接。
克劳斯·易卜生

1
是的,它绝对可以用于连接微服务,毕竟它只是一个Java工具包/框架。《 Camel in Action》第二版书中有完整的Camel微服务章节。
克劳斯·易卜生

1
您问什么是“企业集成模式(EIP)”?您所需要做的就是“购买企业集成模式...”
Jose Quinteiro

1130

我以一种更易于理解的方式描述了这一点...

为了了解什么是Apache Camel,您需要了解什么是企业集成模式。

让我们从我们大概已经知道的内容开始:Singleton模式,Factory模式等;它们只是组织问题解决方案的方式,而本身并不是解决方案。四人帮在他们出版《设计模式》一书时,对其他人进行了分析和提取。他们节省了我们中的一些人在思考如何最好地构建代码结构方面的精力。

就像“四人帮”一样,Gregor Hohpe和Bobby Woolf撰写了《企业集成模式》(EIP)一书,他们在其中提出并记录了一组新的模式和蓝图,以帮助我们最佳地设计大型基于组件的系统,其中可以使用组件。在同一进程或另一台计算机上运行。

他们基本上建议我们将系统构造为面向消息的-组件之间使用消息作为输入和输出相互通信,而绝对没有其他消息。它们向我们展示了一套完整的模式,我们可以从中选择并在不同的组件中实施,这些组件将一起构成整个系统。

那么什么是Apache Camel?

Apache Camel为您提供了EIP的接口,基础对象,通常需要的实现,调试工具,配置系统以及许多其他帮助器,当您要实现遵循EIP的解决方案时,将为您节省大量时间。

以MVC为例。MVC在理论上非常简单,我们可以在没有任何框架帮助的情况下实现它。但是好的MVC框架为我们提供了现成的结构,并花了很多功夫,并在创建大型MVC项目时考虑了您需要的所有其他“方面”,这就是我们大多数时候使用它们的原因。

这正是Apache Camel用于EIP的含义。对于想要实施其解决方案以遵循EIP的人们来说,这是一个完整的生产就绪框架。


183
这可能是该问题的最佳答案。所有其他的答案是一样混乱的互联网上的所有其他条款
Nerrve

19
EIP是关键。如果您不了解EIP,则可以像盲人和大象一样使用骆驼。EIP - eaipatterns.com
hutingung

22
对于此答案+50-从EIP简介开始,并与GOF和MVC和框架进行类比。从问题上看,OP似乎没有EIP的想法。在阅读此答案之前,我正
学习者2014年

6
该说明应添加到Apache Camel主页,因为它回答了这个问题,然后回答了一些问题。确切地说,他使用的是与手写MVC相似的类比,或者通过使用“工具”来帮助完成此问题,这使我有了理解,而无需在无休止的其他(有用的)链接中进行拖曳,而这一切都只需要简洁即可。回答。
Azkuma 2015年

2
EIP有点问题:“多年来,有很多库和框架可以帮助集成。但是,企业集成模式背后的概念经常被转换成一些复杂的类层次结构或对象,因此需要将它们连接在一起。 ,而最初的意图和模式常常会丢失。从那时起,开发人员被迫专注于底层细节和一些复杂的类库API,从而失去了更大的画面和模式。”
Quan Nguyen

659

创建项目描述应该不复杂。

我说:

Apache Camel是消息传递技术与路由的结合。它将消息的起点和终点连接在一起,从而允许将消息从不同的源传输到不同的目的地。例如:JMS-> JSON,HTTP-> JMS或渠道FTP-> JMS,HTTP-> JMS,JSON-> JMS

维基百科说:

Apache Camel是基于规则的路由和中介引擎,它使用API​​(或声明性的Java域特定语言)来配置路由和中介规则,从而提供了基于Java对象的企业集成模式实现。特定领域的语言意味着Apache Camel可以使用常规Java代码在IDE中支持类型安全的路由规则智能完成,而无需使用大量XML配置文件。尽管还支持Spring内部的XML配置。

看到?那不难吗?


307
Apache Camel主页涉及此线程...他们没有提供简短的功能说明。
youi 2013年

15
本文是一个很好的例子,说明了建设性的批评和诚实的努力可以创造出色的文档。它是骆驼官方网站上的精选内容。但是,让我们保持其建设性,避免使用名称标记。文档编写者和其他贡献者有时很难相处,他们值得我们尊重。顺便说一句-我们有许多Java编码标准...并以自豪和荣幸地坚持使用...像Wiki和官方指南这样的媒体文档标准又如何呢?
2014年

1
像细粒度的反向代理吗?
阿萨德·哈桑

1
我通过Camel主页链接找到了这个答案。令我感到惊讶的是,他们没有在页面上直接引用它,甚至没有具体链接到答案。
Jelling

9
现在,这就是我所说的清晰的答案。奇怪的是,被接受的答案看起来像是广告。+1
EMM 2015年

120

简而言之:

当需要连接/集成系统时,您可能需要连接到某些数据源,然后处理该数据以匹配您的业务需求。

为了做到这一点:

1)您可以开发执行此操作的自定义程序(可能耗时且难以理解,对于其他开发人员而言则难以维护)

2)或者,您可以使用Apache Camel以标准化方式进行操作(它已经为您开发了大多数连接器,您只需要进行设置并插入逻辑-称为Process)即可:

骆驼将帮助您:

  1. 消费任何来源/格式的数据
  2. 处理此数据
  3. 将数据输出到任何源/格式

通过使用Apache Camel,您将易于理解/维护/将系统扩展到其他开发人员。

Apache Camel是使用企业集成模式开发的。这些模式可以帮助您很好地集成系统:-)


这意味着其他开发人员也可以使用另一种编程语言来更改逻辑吗?
JavaTechnical 2015年

1
@JavaTechnical提供了消息传递模式(EIP),您已经可以使用不同的语言编写不同的组件代码,因为这些消息采用的是与语言无关的格式,例如JSON。骆驼提供了一个简单的框架来实现EIP。这是基于我的理解。如果我弄错了,请纠正我。
Dheeraj Bhaskar,2015年

98

骆驼将消息从A发送到B:

在此处输入图片说明

为什么要为此建立一个整体框架?好吧,如果您有:

  • 许多发送者和许多接收者
  • 协议的一打(ftphttpjms等)
  • 许多复杂的规则
    • 仅向收件人A和B发送消息A
    • 将消息B 作为XML发送给Receiver C ,但要进行部分转换充实消息(添加元数据)和IF条件X,然后也将其作为CSV发送给ReceiverD 。

所以现在您需要:

  • 在协议之间翻译
  • 组件粘合在一起
  • 定义路线- 去哪里
  • 在某些情况下过滤一些东西

骆驼开箱即用为您提供以上(以及更多)功能:

在此处输入图片说明

用很酷的DSL语言为您定义内容和方式:

  new DefaultCamelContext().addRoutes(new RouteBuilder() {
        public void configure() {
            from("jms:incomingMessages")
                    .choice() // start router rules
                    .when(header("CamelFileName")
                            .endsWith(".xml"))
                    .to("jms:xmlMessages")
                    .when(header("CamelFileName")
                            .endsWith(".csv"))
                    .to("ftp:csvMessages");
}

另请参阅《本》,《本》和《骆驼在行动》(正如其他人所说,是一本好书!)



55

基于类比

通过将自己置于航空公司所有者(例如:美国航空,Jet Airways)的鞋子中,可以很容易地理解基于骆驼的航线。

“您的航空公司”的目的是将“乘客”从一个“城市”运送到世界上的另一个城市。您使用波音,空中客车,HAL等不同“飞机公司”的飞机载客。

您的航空公司使用出发城市的“机场”登上乘客,并使用出发城市的机场下车。乘客可能会“旅行”到多个城市,但是他们必须经过机场才能在航空公司的飞机和城市之间旅行。

请注意,从城市“起飞”的乘客实际上是在“抵达”您航空公司的飞机。一架“进入”市区的护照实际上是从飞机上起飞的。由于我们是航空公司的主人,因此“到达旅客”和“出发旅客”一词与我们从城市角度出发的传统观念相反。

每个城市的“机场”基础设施都由“出发”和“到达”的旅客使用。机场为离港旅客提供“离港基础设施”,这与为到达旅客提供的“到达基础设施”不同。

由于您的航空公司在飞行中在飞机内提供了各种“便利设施”,因此乘客可以继续进行日常活动。

最重要的是,您的航空公司还提供休息室设施,以提供特殊待遇,例如“了解当地语言”或为您的“旅行”做准备。

让我们用以下内容替换上面使用的几个单词/短语:

您的航空公司:Apache Camel

飞机公司:运输机制

您航空公司的飞机:Apache Camel的基本运输机制

携带:路线

乘客:留言;

城市:系统;

机场:骆驼成分;

了解当地语言:类型转换;

离开:生产,生产

到达:消费,消费

旅行:路线

便利设施:提供

替换单词之后,您将获得:

“ Apache Camel”的目的是将“消息”从一个“系统”路由到世界上的另一个系统。Apache骆驼使用不同的传输机制进行消息路由。

Apache Camel使用'from'系统的'基于Camel的组件'接收消息,并使用'to'系统的'基于Camel的组件'删除消息。一条消息可能会路由到多个系统,但是到处它们都必须经过“基于Camel的组件”才能在“ Apache Camel的基础传输机制”和系统之间传播。

请注意,从系统“生成”的消息实际上已“消耗”到Apache Camel的基础传输机制中”。系统消耗的消息实质上是由“ Apache Camel的基础传输机制”产生的。

由于我们试图理解骆驼,因此我们必须从骆驼的角度出发进行思考。因此,术语“消费者消息”和“生产者消息”的含义与基于系统角度的常规概念相反。

“生产者消息”和“消费者消息”使用相同的“基于骆驼的组件”的编码基础结构。“基于骆驼的组件”为“生产者消息”提供了“生产者端点”,为“消费者消息”提供了“消费者端点”。

邮件在路由时可以由骆驼处理。

除了此路由之外,骆驼还提供特殊功能,例如“类型转换”等。


很好的解释,易于阅读,易于记忆。我想知道,如果它们甚至存在于骆驼中,那么哪个角色有跑道或飞行员。
斯廷普森猫

很好的解释特别是机场的例子。如果您添加了更多扩展术语,并且一点点代码示例将非常棒!谢谢
Ankur Nirmalkar

50

在尝试了解Apache Camel之前,您需要了解的一件事是企业集成模式。实际上,并不是每个人都知道它们。虽然您当然可以阅读《企业集成模式》这本书,但是更快地了解它们的更快方法是阅读诸如Wikipedia上有关Enterprise Application Integration的文章。

您已经阅读并理解了该主题领域,那么您很有可能理解Apache Camel的目的。

高温超导


35

如果您了解企业集成模式,则Apache Camel是一个实现所有EIP的集成框架。

您可以将Camel作为独立的应用程序部署在Web容器中。

基本上,如果必须集成具有不同协议和技术的多个应用程序,则可以使用Camel。


22

从另一个角度定义:

Apache Camel是一个集成框架。它由一些Java库组成,可帮助您在Java平台上实现集成问题。我的文章“ 何时使用Apache Camel ”中介绍了这意味着什么,以及它与一方面的API和另一方面的企业服务总线(ESB)有何不同。


18

到底是什么

Apache Camel是一个轻量级的集成框架,可实现所有企业集成模式。您可以使用所需的模式轻松集成不同的应用程序。

您可以使用Java,Spring XML,Scala或Groovy。您可以想象到的几乎每种技术都可以使用,例如HTTP,FTP,JMS,EJB,JPA,RMI,JMS,JMX,LDAP,Netty等。

看看这篇文章EIP模式文章

它如何与用Java编写的应用程序交互?

骆驼使用Java领域特定语言或DSL来创建企业集成模式或各种领域特定语言(DSL)的路由,如下所示。

Java DSL-使用流畅的构建器样式的基于Java的DSL。

企业集成模式的故事围绕以下概念进行了解析:

消息,端点,生产者,使用者,路由,总线,转换和过程

看看Anirban Konar的这篇文章,了解其中的一种实时用例。

它与服务器一起使用吗?

它充当跨多个企业子系统的桥梁。

它是一个独立程序吗?

Apache Camel是一个集成框架,集成了不同的独立应用程序。

Camel的主要优点:您可以通过对每个集成使用相同的概念来将不同的应用程序与不同的技术(和不同的协议)集成在一起。


我不知道您为什么使用“轻量级”一词。我的观察是,Apache Camel实际上很重。
Krzysztof Tomaszewski

13

计算中的大多数“新”事物并不是真正的新事物,它们只是围绕已经被很好理解的事物的神秘包装。当他们很难理解,它通常是因为有人决定要发明新的语言术语或定植用于不同的目的现有术语(一个很好的例子是X开发是什么‘客户端’和‘服务器’平均的逆转。)

Camel是用于应用程序间中间件的基于Java的包装器/ API。

中间件是软件的通用术语,它在不共享公共语言或数据类型的实体之间提供解释服务。

那就是骆驼的底部。我们可以通过提供EIP类型的中间件来充实描述。

它不提供中间件本身,因为它不知道应用程序需要通信什么的细节。但是它提供了用于创建中间件不变部分的API(创建起点,创建终点,为起点和终点创建条件等)

希望能有所帮助。


4
“计算中的大多数“新”事物根本不是真正的新事物,它们只是已经被很好理解的事物的神秘包装。” <<<<我整周读过的最好的东西!
戴夫

8

这是另一种尝试。

您知道如何/有类似Webmethods,ICAN Seebeyond,Tibco BW,IBM Broker的东西。他们都为企业集成解决方案提供了帮助。这些工具通常被称为企业应用程序集成(EAI)工具。

大多数围绕这些技术构建的拖放工具,而在某些部分中您必须使用Java编写适配器。这些适配器代码未经测试,或者在测试过程中工具/自动化不佳。

就像编程中的设计模式一样,您具有用于通用集成解决方案的企业集成模式。它们由格雷戈尔·霍普(Gregor Hohpe)和鲍比·伍尔夫(Bobby Woolf)的同名书而闻名。

尽管很可能实现使用一个或多个EIP的集成解决方案,但是Camel尝试使用XML,Java,Groovy或Scala之一在您的代码库中实现此目的。

Camel通过其丰富的DSL和路由机制支持本书中列出的所有企业集成模式。

因此,Camel是其他EAI工具的竞争技术,并为测试集成代码提供了更好的支持。由于域专用语言(DSL),因此代码简洁。甚至企业用户也可以阅读它,并且它是免费的并使您高效。


7

有很多框架可以帮助我们进行消息传递并解决消息传递中的问题。这样的产品之一就是Apache Camel。

大多数常见问题已被证明是称为设计模式的解决方案。用于消息传递的设计模式是企业集成图形(电子信息产品),其很好地解释这里。Apache骆驼帮助我们使用EIP实施我们的解决方案。

集成框架的优势在于其通过EIP或其他模式为我们提供便利的能力,传输和组件的数量以及易于开发的能力(Apache骆驼位居榜首)

每个框架都有其自身的优势。Apache骆驼的一些特殊功能如下。

  1. 它提供了在许多DSL中的编码,即流行的Java DSL和基于Spring xml的DSL。
  2. 易于使用且易于使用。
  3. Fuse IDE是一款产品,可帮助您通过UI进行编码

7

用简单的英语来说,骆驼不需要很多样板代码就能完成很多事情。

为了给您一个视角,下面给出的Java DSL将创建一个REST终结点,该终结点将能够接受包含产品列表的XML,并将其拆分为多个产品,并调用BrandProcessor的Process方法。只需添加.parallelProcessing(请注意已注释掉的部分),它将并行处理所有产品对象。(产品类是从XSD用JAXB / XJC生成的Java存根,其输入XML被限制在其中。)这么多的代码(以及很少的Camel依赖项)将完成工作,该工作过去需要使用数百行Java代码。

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

添加路由ID和日志记录语句后

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

这只是一个示例,Camel不仅仅是REST端点。只需看一下可插入组件列表http://camel.apache.org/components.html


6

骆驼有助于路由,转换,监视。

它使用路线;可以描述为:

当服务总线接收到特定消息时,它将通过服务/代理目的地(例如队列/主题)中的任何一条路由。该路径称为路线。

示例: 您的股票应用程序得到分析师的一些输入,它将通过应用程序/ Web组件进行处理,然后将结果发布给所有感兴趣/注册的成员,以进行特定的股票更新。


5

假设您创建了一个像亚马逊这样的电子商务公司,并且您只想专注于要销售产品的策略/选择。与亚马逊运输车队不同的是,您不必自己处理将货物从卖方转移到仓库,而是像包装一样在仓库中进行更改并将其发送到其他城市和客户。您雇用一家公司来完成所有这些工作,并仅向他们提供所有仓库位置,车辆类型,交货位置的信息以及何时执行操作的列表。然后他们自己处理,那就是Apache Camel。一旦您将内容移交给他们,他们就会将事情从一端转移到另一端,这样您就可以自由地专注于其他事情。


5

101字简介

Camel是具有一致的API和编程模型的框架,用于将应用程序集成在一起。该API基于企业集成模式中的理论-即,倾向于使用消息传递的一堆设计模式。它提供了大多数这些模式的现成实现,并附带了200多种不同的组件您可以使用它们轻松地与各种其他系统进行对话。要使用Camel,首先要在POJO中编写业务逻辑,并实现围绕消息的简单接口。然后使用Camel的DSL创建“路由”,这是将应用程序粘合在一起的规则集。

扩展介绍

从表面上看,骆驼的功能可以与传统的企业服务总线产品相媲美。我们通常认为骆驼路线是驻留在服务器端的“中介”(也称为编排)组件,但由于它是Java库,因此易于嵌入,并且也可以驻留在客户端应用程序中,并帮助您集成它具有点对点服务(又称为编排)。您甚至可以带您的POJO来处理Camel路由中的消息,并轻松地将它们分解到自己的远程使用者进程中,例如,如果您只需要独立扩展一个消息。您可以根据需要使用Camel通过任意数量的不同远程传输/协议连接路由或处理器。您是否需要一种非常高效,快速的二进制协议,还是更易于阅读和调试的工具?如果要切换怎么办?使用骆驼,这通常就像更改路线中的一两条线一样简单,根本不需要更改任何业务逻辑。或者您可以同时支持两者-您可以在Camel上下文中自由地一次运行许多Route。

您实际上并不需要将Camel用于将要存在于单个进程或JVM中的简单应用程序-这太过分了。但是从概念上讲,这并不比编写自己的代码困难。而且,如果您的需求发生变化,则业务逻辑和胶合代码的分离将使维护更容易。一旦学习了Camel API,就可以像一把瑞士军刀一样容易地使用它,并在许多不同的上下文中快速应用它,以减少您不得不编写的自定义代码量。您可以学习一种口味-例如Java DSL,一种易于链接在一起的流利的API-并轻松挑选其他口味。

如果您尝试进行微服务,那么总体而言Camel非常适合。我发现它对于演化体系结构而言是无价的,因为您可以推迟有关协议,传输和其他系统集成问题的许多困难,“容易弄错”的决定,直到您对问题域有了更多了解为止。只需关注您的EIP和核心业务逻辑,并在了解更多信息时切换到带有“正确”组件的新路由。


4

是的,这可能有点晚了。但是要添加到其他所有人的评论中的一件事是,Camel实际上是一个工具箱,而不是一整套功能。在开发时应牢记这一点,并且需要进行各种转换和协议转换。

Camel本身依赖于其他框架,因此有时您也需要了解那些框架,以便了解最适合您的需求的框架。例如,有多种处理REST的方法。刚开始时这可能会使您感到困惑,但是一旦您开始使用和测试,您会感到很自在,并且您对不同概念的了解也会增加。


4

Apache Camel是用于企业集成的Java框架。例如:-如果您要构建一个与许多供应商API交互的Web应用程序,我们可以将骆驼用作外部集成工具。根据用例,我们可以做更多的事情。曼宁出版物中的《骆驼在行动》是一本学习骆驼的好书。集成可以定义如下。

Java DSL

from("jetty://0.0.0.0:8080/searchProduct").routeId("searchProduct.products").threads()
    .log(LoggingLevel.INFO, "searchProducts request Received with body: ${body}")
    .bean(Processor.class, "createSearchProductsRequest").removeHeaders("CamelHttp*")
    .setHeader(Exchange.HTTP_METHOD, constant(org.apache.camel.component.http4.HttpMethods.POST))
    .to("http4://" + preLiveBaseAPI + searchProductsUrl + "?apiKey=" + ApiKey
                    + "&bridgeEndpoint=true")
    .bean(Processor.class, "buildResponse").log(LoggingLevel.INFO, "Search products finished");

这只是创建一个REST API端点,该端点依次调用外部API并将请求发送回

春季DSL

<route id="GROUPS-SHOW">
    <from uri="jetty://0.0.0.0:8080/showGroups" />
    <log loggingLevel="INFO" message="Reqeust receviced service to fetch groups -> ${body}" />
    <to uri="direct:auditLog" />
    <process ref="TestProcessor" />
</route>

提出您的问题

  1. 到底是什么 回答:-这是一个实现企业集成模式的框架
  2. 它如何与用Java编写的应用程序交互?回答:-它可以与任何可用的协议进行交互,例如http,ftp,amqp等
  3. 它与服务器一起使用吗?回答:-它可以部署在tomcat之类的容器中,也可以作为Java进程独立部署
  4. 它是一个独立程序吗?回答:-可以。

希望能帮助到你


3

Apache Camel是一个轻量级的集成框架,可实现所有企业集成模式。您可以使用所需的模式轻松集成不同的应用程序。您可以使用Java,Spring XML,Scala或Groovy。

Apache Camel在Java虚拟机(JVM)上运行。... Apache Camel的核心功能是其路由引擎。它根据相关路由分配消息。路由包含流和集成逻辑。它是使用EIP和特定的DSL实现的。

在此处输入图片说明


1
Camel在EIP中实施40模式:企业集成模式。
雅各布

2

就像管道连接一样

From---->To

您可以在两者之间添加尽可能多的通道和管道。水龙头可以是用于数据流的自动或手动的任何类型,以及用于引导水流的路径。

它支持并实现所有类型和种类的处理。对于相同的处理,有许多方法,因为它具有许多组件,并且每个组件还可以使用其下的不同方法来提供所需的输出。

例如,文件传输可以在骆驼中完成,文件类型可以移动或复制,也可以从文件夹,服务器或队列中进行。

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

从/到----文件夹,直接,seda,vm可以是任何东西


0

另一种观点(基于更基本的数学主题)

最通用的计算平台是[ https://en.wikipedia.org/wiki/Turing_machine]

图灵机出现问题。所有输入/输出数据都保留在图腾机内部。在现实世界中,图灵机外部有输入源和输出接收器,通常由我们控制范围之外的系统控制。即,那些外部系统将以任何期望的数据调度器以任何格式随意发送/接收数据。

问题:我们如何设法使独立的图灵机以最通用的方式相互交谈,以使每台图灵机将其对等方视为输入数据源或输出数据宿?

答:使用诸如骆驼,m子,BizTalk或任何其他ESB之类的东西来抽象化完成不同的“物理”(或虚拟软件)图灵机之间的数据处理。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.