Qual integration framework você deve usar parte 1

5
Qual Integration Framework você deve usar - Integração Spring, Mule ESB ou Apache Camel? Parte 1 Trocas de dados entre empresas estão aumentando muito. O número de aplicações que devem ser integrados está aumentando também. As interfaces usam diferentes tecnologias, protocolos e formatos de dados. No entanto, a integração destas aplicações devem ser modeladas de forma padronizada, realizado de forma eficiente e apoiada por testes automáticos. Três quadros de integração estão disponíveis no ambiente de JVM, que preenchem estes requisitos: Integração Spring, Mule ESB e Apache Camel. Eles implementar as Integration Patterns Enteprise bem conhecidas (EIP, http://www.eaipatterns.com) e, portanto, oferecem uma linguagem padronizada, de domínio específico para integrar aplicações. Estes quadros de integração pode ser usado em quase todos os projetos de integração dentro do ambiente de JVM - não importa quais tecnologias, protocolos de transporte ou formatos de dados são usados. Todos os projetos de integração pode ser realizado de uma forma consistente, sem código clichê redundante. Este artigo compara as três alternativas e discute os seus prós e contras. Se você quer saber, quando usar um mais poderoso Enterprise Service Bus (ESB) em vez de um desses quadros de integração leves, então você deve ler este post: http://www.kai- waehner.de/blog/2011 / 06/02 / quando de usar-apache-camelo / (ele explica quando usar o Apache Camel, mas o título também poderia ser "quando usar um framework de integração leve"). Critérios de comparação Vários critérios podem ser usadas para comparar estas três quadros de integração: Código aberto • Conceitos básicos / Arquitectura • Testability • implantação • popularidade

Transcript of Qual integration framework você deve usar parte 1

Page 1: Qual integration framework você deve usar parte 1

Qual Integration Framework você deve usar - Integração Spring, Mule ESB ou Apache Camel? – Parte 1

Trocas de dados entre empresas estão aumentando muito. O número de aplicações que devem ser integrados está aumentando também. As interfaces usam diferentes tecnologias, protocolos e formatos de dados. No entanto, a integração destas aplicações devem ser modeladas de forma padronizada, realizado de forma eficiente e apoiada por testes automáticos.

Três quadros de integração estão disponíveis no ambiente de JVM, que preenchem estes requisitos: Integração Spring, Mule ESB e Apache Camel. Eles implementar as Integration Patterns Enteprise bem conhecidas (EIP, http://www.eaipatterns.com) e, portanto, oferecem uma linguagem padronizada, de domínio específico para integrar aplicações.

Estes quadros de integração pode ser usado em quase todos os projetos de integração dentro do ambiente de JVM - não importa quais tecnologias, protocolos de transporte ou formatos de dados são usados. Todos os projetos de integração pode ser realizado de uma forma consistente, sem código clichê redundante.

Este artigo compara as três alternativas e discute os seus prós e contras. Se você quer saber, quando usar um mais poderoso Enterprise Service Bus (ESB) em vez de um desses quadros de integração leves, então você deve ler este post: http://www.kai-waehner.de/blog/2011 / 06/02 / quando de usar-apache-camelo / (ele explica quando usar o Apache Camel, mas o título também poderia ser "quando usar um framework de integração leve").

Critérios de comparação

Vários critérios podem ser usadas para comparar estas três quadros de integração:

• Código aberto

• Conceitos básicos / Arquitectura

• Testability

• implantação

• popularidade

Page 2: Qual integration framework você deve usar parte 1

• Suporte comercial

• IDE-Support

• ErrorHandling

• Monitoramento

• prontidão Empresa

• linguagem específica de domínio (DSL)

• Número de componentes para interfaces, tecnologias e protocolos

• Expansibilidade

Semelhanças

Todos os três quadros têm muitas semelhanças. Portanto, muitos dos critérios de comparação acima são mesmo! Todos implementar as PEI e oferecer um modelo e mensagens de arquitetura consistente para integrar várias tecnologias. Não importa quais tecnologias você tem que usar, você sempre fazê-lo da mesma forma, ou seja, mesma sintaxe, mesmo API, mesmos testes automáticos. A única diferença é a configuração de cada ponto final (por exemplo JMS precisa de um nome de fila, enquanto JDBC precisa de uma URL de conexão com banco de dados). IMO, esta é a característica mais importante. Cada estrutura usa nomes diferentes, mas a idéia é a mesma. Por exemplo, "Camel rotas" são equivalentes a "mula flui", "componentes Camel" são chamados de "adaptadores" em Spring Integration.

Além disso, várias outras semelhanças existe, que diferem de ESB pesados. Você apenas tem que adicionar algumas bibliotecas ao seu classpath. Portanto, você pode usar cada quadro em todo o ambiente JVM. Não importa se o seu projeto é um aplicativo independente Java SE, ou se você quer implantá-lo em um recipiente web (por exemplo, Tomcat), servidor de aplicação JEE (por exemplo Glassfish), container OSGi ou mesmo para a nuvem. Basta adicionar as bibliotecas, fazer algumas configurações simples, e está feito. Então você pode começar a implementar o seu material de integração (roteamento, transformação, e assim por diante).

Page 3: Qual integration framework você deve usar parte 1

Todos os três quadros são de código aberto e oferecem características familiares, públicos, como código-fonte, fóruns, listas de discussão, acompanhamento de problemas e votação para novos recursos. Boas comunidades escrever documentação, blogs e tutoriais (IMO Apache Camel tem a comunidade mais perceptível). Apenas o número de livros lançados poderia ser melhor para todos os três. suporte comercial está disponível através de diferentes fornecedores:

• Integração Spring: SpringSource (http://www.springsource.com)

• Mule ESB: MuleSoft (http://www.mulesoft.org)

• Apache Camel: FuseSource (http://fusesource.com) e Talend (http://www.talend.com)

Suporte IDE é muito bom, mesmo designers visuais estão disponíveis para todas as três alternativas para modelar problemas de integração (e deixá-los gerar o código). Cada um dos quadros é uma empresa pronta, porque todos oferecem recursos necessários, tais como manipulação de erro, o teste automático, transações, multithreading, escalabilidade e monitoramento.

Diferenças

Se você conhece um destes quadros, você pode aprender os outros muito facilmente devido aos seus mesmos conceitos e muitas outras semelhanças. Em seguida, vamos discutir suas diferenças para ser capaz de decidir quando usar cada um. As duas diferenças mais importantes são o número de tecnologias suportadas e a DSL (s) utilizado. Assim, vou concentrar-me especialmente sobre estes dois critérios a seguir. Vou usar trechos de código de execução da bem conhecida EIP "Router com base em conteúdo" em todos os exemplos. Julgue por si mesmo, qual você prefere.

Spring Integration

Primavera Integração é baseado no projeto Spring bem conhecido e estende o modelo de programação com suporte de integração. Você pode usar recursos de Primavera, como injeção de dependência, as transações ou a segurança como você faz em outros projetos da Primavera.

Primavera A integração é impressionante, se você já tem um projeto de Primavera e precisa adicionar algumas coisas integração. É quase nenhum esforço para aprender Spring Integration se você

Page 4: Qual integration framework você deve usar parte 1

sabe-se da Primavera. No entanto, Primavera Integration só oferece apoio muito rudimenary para as tecnologias - apenas "coisas básicas" como Arquivo, FTP, JMS, TCP, HTTP ou Web Services. Mula e Apache Camel oferecer muitos, muitos outros componentes!

Integrações são implementadas por escrever um monte de código XML (sem DSL real), como você pode ver no seguinte trecho de código:

<file:inbound-channel-adapter

id=”incomingOrders”

directory=”file:incomingOrders”/>

<payload-type-router input-channel=”incomingOrders”>

<mapping type=”com.kw.DvdOrder” channel=”dvdOrders” />

<mapping type=”com.kw.VideogameOrder”

channel=”videogameOrders” />

<mapping type=”com.kw.OtherOrder” channel=”otherOrders” />

</payload-type-router>

<file:outbound-channel-adapter

id=”dvdOrders”

directory=”dvdOrders”/>

<jms:outbound-channel-adapter

id=”videogamesOrders”

destination=”videogameOrdersQueue”

channel=”videogamesOrders”/>

Page 5: Qual integration framework você deve usar parte 1

<logging-channel-adapter id=”otherOrders” level=”INFO”/>

Você também pode usar o código Java e anotações para algumas coisas, mas no final, você precisa de um monte de XML. Honestamente, eu não gosto muito de declaração XML. É bom para configuração (como fábricas de conexão JMS), mas não para a lógica de integração complexa. Pelo menos, ele deve ser um DSL com melhor legibilidade, mas mais complexos exemplos Primavera de integração são realmente difíceis de ler.

Além disso, o designer visual para o Eclipse (chamado gráfico de integração) é ok, mas não tão bom e intuitivo que os seus concorrentes. Portanto, eu só iria usar Spring Integration se eu já tenho um projeto Spring existente e deve apenas adicionar um pouco de lógica de integração exigindo apenas "tecnologias básicas", como Arquivo, FTP, JMS ou JDBC.