# Sistemas de Informação Distribuídos/Interoperação/Introdução

A seção anterior discutiu as formas de representação dos dados visando a interoperabilidade dos mesmos. Esta seção discute a interoperação entre processos, utilizando os conceitos da seção anterior para tratamento de dados.
Interoperação entre processos consiste na capacidade interação entre um ou mais processos visando a troca de informações ou serviços entre eles, uni ou bidirecionalmente. Um processo pode ser entendido como uma aplicação localizada em determinado local (uma determinada máquina) que irá interagir com outra aplicação localizada neste mesmo local ou em qualquer outro local que tenha conexão com este (como em outras máquinas de uma rede).
Esta aplicação possui diversas características que definem seu contexto: ela foi desenvolvida em uma determinada linguagem de programação, está rodando em um sistema operacional, localiza-se em uma máquina com características próprias de hardware, possui sua própria forma de tratamento de dados, entre outras. Estas características podem ser extremamente diferentes de aplicação para aplicação, criando um elevado nível de heterogeneidade entre elas.
A heterogeneidade entre os processos corresponde ao principal desafio das arquiteturas que serão tratadas nesta seção: como criar uma estrutura que permita a interação de processos completamente heterogêneos utilizando um ambiente (a rede) também heterogêneo?
Uma primeira abordagem existente para melhorar a integração entre aplicações é o uso da computação orientada a componentes, ou seja, modelar cada um dos elementos do software como um componente. O desenvolvimento de software baseado em componentes já é bastante utilizado em soluções de software, principalmente em empresas, utilizando tecnologias como COM e Enterprise JavaBeans. Segundo, integrar estas soluções com tecnologias Web provou não ser suficiente por não integrar diferentes componentes como modelos de dados, ferramentas de workflow e regras de negócios, entre outros. Para resolver estes problemas surgiu o conceito de Enterprise Application Integration (EAI), que possibilita a integração entre diferentes componentes de software dentro de uma empresa. Porém, as soluções EAI disponíveis são em sua maioria proprietárias, complexas e não possuem uma boa interoperação, e a criação de novas soluções possui diversas desvantagens como o alto custo de desenvolvimento, grande consumo de tempo, necessidade de uma boa visão do sistema no início do processo (ter conhecimento de todas as aplicações que irão ser utilizadas, por exemplo), entre outras.
Diversas outras tecnologias foram criadas com o propósito de possibilitar a integração de processos heterogêneos, inicialmente entre processos dentro de uma mesma máquina e evoluindo para a integração de processos completamente heterogêneos em locais distintos em uma rede ou mesmo na Web. Nesta seção são comentados alguns tópicos relacionados à integração de processos em ambientes mais limitados ou específicos, e padrões e tecnologias que possibilitam o desenvolvimento de aplicações utilizando conceitos como o uso de componentes e o encapsulamento das regras de negócios, por exemplo, visando a comunicação entre processos. Estas tecnologias (que algumas vezes são chamadas de middlewares para comunicação) introduzem conceitos importantes que são utilizados nas tecnologias atuais mais abrangentes,como é o caso dos Web services.
O foco principal está nos ambientes heterogêneos que utilizam uma estrutura de rede para comunicação, especialmente a Web, onde temos como destaque o CORBA e, mais atualmente, os Web services.
Um dos principais usos destas tecnologias está na integração de processos de diferentes organizações, a chamada integração B2B (Business to Business). A utilização de sistemas computacionais para tal propósito ocorre devido ao novo paradigma de como as empresas conduzem seus trabalhos. Os serviços não estão mais localizados dentro de uma única empresa, mas espalhados em redes de negócios onde cada participante provê aos outros um conjunto de serviços especializados.

# Bibliografia

* 1 2 Stal, Michael. "Web Services: Beyond Component-Based Computing", Communications of the ACM, Volume 45, Issue 10, 71-76, October, 2002.
* ↑ "EAI na Wikipedia", Acessado em 24 de junho, 2007.
* ↑ Curbera, F.; Khalaf, R.; Mukhi, N.; Tai, S. and Weerawarana, S. "The next step in Web services" Communications of the ACM, Volume 46, Issue 10, Special Section: Service-oriented computing, 29-34, October, 2003