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.
ritchie@lepus.celepar.br

|