Autor: Ricardo Shoiti Ikematu
MIDDLEWARE: A Market Overview
Rick van der Lans
Consultor independente, especialista em tecnologia de banco de dados, ferramentas de desenvolvimento em arquitetura cliente/servidor e modelagem de dados e membro do comitê holandês da ISO para SQL.
Nas aplicações centralizadas, a lógica de apresentação, a lógica da aplicação e os bancos de dados estavam na mesma plataforma e conversando com o mesmo protocolo de comunicação. Eram soluções proprietárias de um mesmo fabricante.
Com a popularização da arquitetura cliente/servidor esta situação mudou drasticamente. O cenário que se vê atualmente é várias ferramentas de front-end de várias gerações tendo de conversar com vários bancos de dados diferentes e sob protocolos de comunicação e plataformas heterogêneas.
Seria ótimo se tivéssemos o melhor da tecnologia cliente/servidor fornecida por um mesmo fabricante. Seria mais fácil de administrar este problema, pois facilitaria a integração dos vários componentes.
Porém, uma empresa não escolhe ter vários fornecedores de software ou várias plataformas de hardware. Determinadas tecnologias não estão disponíveis em determinada época, e um fornecedor de software não consegue dispor da melhor solução em todas as áreas que a empresa necessita em um determinado momento. Assim, as empresas vão construindo seus quebra-cabeças com peças de vários fabricantes. Em empresas maiores não se pode simplesmente jogar fora ou converter todo o seu aplicativo existente, comumente chamado de legado pela organização.
Esta situação decorre não pela falta de interesse, mas sim pela falta de recursos. Geralmente estas empresas estão com uma demanda reprimida, tendo na maioria das vezes que terceirizar estes serviços. Convivendo com esta pressão, as empresas não tem tempo, nem recursos técnicos, para cuidar do seu legado. Há ainda no Brasil a cultura de que em time que está ganhando e em sistema que está funcionando ...
Nas aplicações cliente/servidor corporativas, para ajudar a montar este difícil quebra-cabeças, um componente desta arquitetura vem ganhando destaque, e responde pelo nome de Middleware.
Segundo o palestrante, Middleware é uma categoria de produtos ou módulos de software que são utilizados por aplicações cliente, para acessar aplicações servidoras, e tentam esconder da aplicação a rede, a comunicação e plataformas específicas. O Middleware se posiciona entre a aplicação cliente e o protocolo de comunicação da rede, e entre o protocolo de comunicação e a aplicação no servidor.
O Middleware possibilitaria independência de tecnologia e de fornecedores no que se refere a sistemas operacionais, protocolos de comunicação, sistemas gerenciadores de banco de dados, hardware, etc. Possibilitaria, também, uma transparência de localização: a localização física dos processos no servidor estaria escondida e teríamos a habilidade de mover estes processos nos servidores. Vários módulos e plataformas poderiam ser misturados.
O palestrante divide o Middleware em 9 categorias:
- Middleware de transporte de SQL
DRDA, SQL*Net, SequeLink, EDA/SQL, Entire Access, SQLNetwork,...
- Middleware de adaptação,
ODBC, Q+E, Oracle Objects for OLE, DCL, ...
- Middleware de gateway para bases de dados
Oracle Transparent Gateway, OmniSQL Gateway, EDA/SQL, Infohub, ...
- Middleware para remote procedure call (RPC)
APPC, DCE, ...
- Middleware para gerenciamento de pedidos de objetos
CORBA, Microsoft COM, Sun DOE, IBM SOM, ...
- Middleware orientado para mensagem
MQSeries, Message Express, Pipes, ...
- Monitores de transação
Encina, Tuxedo, TopEnd, UTM, ACMS, CICS, ...
- Middleware para dar uma nova apresentação na tela
EHLLAPI, ...
- Middleware para apresentação remota X Windows
A seguir temos as características dos principais produtos de Middleware do mercado.
|
Database Gateway |
EDA/
SQL
|
Seque Linl |
SQL*Link |
Show Case |
DRDA |
Sybase |
Entire Access |
---|
buffer no servidor |
Não |
Não |
Não |
Não |
Não |
?? |
?? |
Não |
---|
buffer no cliente |
Sim |
Sim |
Sim |
Sim
(arrays)
|
Sim |
?? |
?? |
Não |
---|
múltiplos databases por aplicação |
Sim |
Sim |
Sim |
Sim |
Sim |
Sim |
Sim |
Via Natural |
---|
múltiplos db's em diferentes máquinas por aplicação |
Sim |
Sim |
Sim |
Sim |
Sim |
Sim |
Sim, via Omni |
Via Natural |
---|
múltiplos databases por transação |
Sim |
Não |
Sim |
Sim |
Não |
Não |
Sim |
Via Natural |
---|
múltiplos databases por instrução (multi-site join) |
Sim |
Sim |
Não |
Sim |
Não |
Não |
Sim, via Omni |
Não |
---|
multi-site update (2-phase commit) |
Não |
Não |
Não |
Sim, com certas condições |
Não |
Não |
Sim |
Não |
---|
O palestrante ainda divide os Middlewares em dois grupos distintos: um grupo para interface com bancos de dados relacionais e outro grupo para interface com bancos de dados não relacionais.
Middleware e RDBMS
|
Database Gateway |
EDA/ SQL |
Seque Link |
SQL *Net |
Show Case |
DRDA |
Sybase |
Open Link |
Entire Access |
---|
DB2/MVS |
Sim |
Sim |
Sim |
|
|
Sim |
|
|
Sim |
---|
DB2/2 |
Sim |
Sim |
Sim |
|
|
Sim |
|
|
Plan |
---|
DB2/400 |
Sim |
Sim |
Sim |
|
Sim |
Sim |
|
|
|
---|
DB2/6000 |
|
Sim |
Sim |
|
|
Sim |
|
|
Plan |
---|
Informix |
|
Sim |
Sim |
|
|
Sim |
|
Sim |
Sim |
---|
Ingress |
|
Sim |
Sim |
|
|
|
Sim |
Sim |
Sim |
---|
Oracle |
|
Sim |
Sim |
Sim |
|
Sim |
Sim |
Sim |
Sim |
---|
Oracle Rdb |
|
Sim |
Sim |
|
|
|
|
|
|
---|
Progress |
|
Sim |
Sim |
|
|
|
|
Sim |
|
---|
SQLBase |
|
|
|
|
|
|
|
Sim |
|
---|
SQLServer |
Sim |
Sim |
Sim |
|
|
|
Sim |
Sim |
|
---|
Sybase |
|
Sim |
Sim |
|
|
|
Sim |
Sim |
Sim |
---|
Middleware e SGBD não relacionais
|
EDA/SQL |
InfoHub |
Oracle
Transparent Gateway |
Sysbase
OminiSQL Gateway |
Adabas |
Sim |
Sim |
|
|
CA-Datacom/DB |
Sim |
|
|
|
CA-IDMS |
Sim |
Sim |
|
|
CA-ISAM files |
Sim |
|
Sim |
Sim |
dBASE files |
Sim |
|
|
Sim |
focus |
Sim |
|
|
|
IMS/DB |
Sim |
Sim |
|
|
RMS files |
Sim |
|
Sim |
Sim |
Total |
Sim |
|
|
|
TurboIMAGE |
Sim |
|
Sim |
|
VSAM files |
Sim |
Sim |
|
|
O tipo de arquitetura cliente/servidor mais utilizado é o gerenciamento dos dados no servidor, e a lógica da aplicação e a apresentação ficarem no cliente, este tipo de arquitetura tende a parar de crescer. A arquitetura cliente/servidor que tem mais evoluído é o gerenciamento dos dados estar no servidor, a apresentação no cliente e a lógica da aplicação dividida entre o servidor e o cliente.
O palestrante alerta, que devemos escolher bem o que queremos antes de começarmos a construir o aplicativo, porque mudar as coisas no meio é bastante complicado. É mais fácil jogar tudo fora e construir um aplicativo novo. As diferentes opções de arquitetura necessitam de elementos diferentes para serem construídos. Se um software não estava previsto, a sua integração no aplicativo será bem mais difícil e não aproveitará toda a potencialidade do software.
Para implementar a distribuição de funções são necessários os seguintes requisitos:
- Ter uma clara separação entre a apresentação e a lógica da aplicação;
- Identificar facilmente as regras de negócio;
- Poder distribuir livremente as funções entre os clientes e os servidores;
- Poder mover as funções dinamicamente;
- Utilizar se possível uma única linguagem para todas as funções;
- A localização de funções deve ser transparente;
- As funções podem ser replicadas.
Um dos grandes problemas nesta arquitetura é ter uma única linguagem de desenvolvimento e não duas, geralmente uma implementação de SQL no servidor e uma linguagem de front-end no servidor. Existem duas exceções: Oracle que tem uma plataforma proprietária e Gupta, porém, com uma plataforma restrita ao SQLBase em que as stored-procedures são desenvolvidas em linguagem SQLWindows. O palestrante recomenda as linguagens UnifyVision, Dinasty, NatStar e Forté, dentre outras para resolver este problema.
Na parte de Middleware ele recomenda fortemente ODBC e os padrões DCE e CORBA. Quanto ao ODBC ele diz que as novas versões do padrão são muito boas, e o que realmente existe são implementações boas e ruins.
A arquitetura cliente/servidor é considerada uma solução aberta e dessa abertura decorrem problemas de segurança. Devido ao problema de segurança, o palestrante recomenda seguir os padrões DCE ou CORBA para a distribuição dos seus dados. Ele cita, também, a World Wide Web como uma alternativa de Middleware bastante popular, mas que está bastante imatura quanto à segurança.
O palestrante conclui que o pessoal de desenvolvimento deve fazer um bom planejamento antes de iniciar a construção do aplicativo. A equipe deve se preocupar com os seguintes itens:
- Determinar os objetivos, quão aberta será a solução;
- Verificar a situação atual, reutilizar os dados do legado;
- Considerar o conhecimento da força de trabalho;
- Determinar o volume de transações e dados;
- Determinar as características das aplicações: OLTP, OLAP, cálculos complexos, etc.;
- Determinar o tipo de arquitetura cliente/servidor.
|