acs05

Propaganda
Arquitetura
Cliente/Servidor
Parte V
Middleware
Eduardo Xavier
UNIFACS – Universidade Salvador
Prof.
Email:
Introdução
• Toda vez que separamos uma aplicação em componentes e
colocamos esses componentes em máquinas separadas suge
um novo problema: como estes componentes vão interagir
entre si?
– Devemos providenciar uma forma de comunicação
• Middleware é um termo genérico para todos as ferramentas de
software que ajudam a conectar as diversas camadas e
componentes de um sistema distribuído
– Dependendo do modelo de distribuição adotado, isso pode significar
coisas bem diferentes de ambiente para outro
• Do início da década de 1990 até hoje, o middleware
cliente/servidor creceu rapidamente (especialmente nos
últimos anos)
– Diversas filosofias, tecnologias e abordagens
www.redes.unifacs.br
Definição
• O que é Middleware?
– Segundo Cris Loosley, em “High Performance Client/Server”, o
problema em definir middleware é que grande parte da literatura
técnica se preocupa mais em estabelecer “o que não é” do que “o que
é” middleware.
– Assim, se o software em questão não for enquadrado em nenhuma
outra categoria conhecida, como SGBDs, programas de aplicação ou
sistema operacional, então é associada ao termo middleware
– Em termos realísticos, middleware é computação cliente/servidor, por
que provê os meios pelos quais clientes e servidores estabelecem sua
comunicação.
• Podemos considerar middelware como:
– Um conjunto de drivers, APIs, ou outro software que melhora a
conectividade entre uma aplicação do cliente e um servidor
– Um conjunto de serviços encarregado de fornecer meios para
comunicação e distribuição, oferecendo transparência à
aplicação
www.redes.unifacs.br
Justificativa Técnica
• Por que vale a pena adotar Middleware?
– Porque construir sistemas distribuídos
diretamente sobre a camada de transporte da
rede é muito mais difícil.
• Comunicação em geral precisa manipular o envio de
parametros complexos
• Diferentes codificações de tipos de dados
• Desenvolvedores e administradores teriam que
implementar a ativação de componentes
• Implementar sincronização é complexo e propenso a
erros
www.redes.unifacs.br
Objetivo
• O Middleware se propõe a:
– Ser uma camada adicional de software usada para ocultar a
heterogeneidade da coleção de plataformas
• Melhorar e simplificar a distribuição, o encapsulamento e a transparência.
– Estar entre as aplicações e o sistema operacional de rede,
oferecendo um alto nível de abstração.
• Assim, tais aplicações não fazem uso direto da interface de programação.
– Permitir que uma aplicação ou um usuário em um cliente
acesse uma variedade dos serviços no servidor sem que
haja preocupação sobre diferenças entre usuários.
– Oferecer portabilidade para componentes de aplicações
distribuídas
– Aumentar a interopreabilidade em aplicações distribuídas
www.redes.unifacs.br
Camadas
• O middleware pode ser decomposto em camadas
de funcionalidades
Aplicações
Serviços de Middleware Específicos do Domínio
Camadas
de
Serviços Comuns de Middleware
Middleware
Middleware de Distribuição
Middleware de Infra-estrutura do Hospedeiro
Sistema Operacional e Protocolos
Hardware
www.redes.unifacs.br
Camada: Middleware de
Infra-estrutura do Hospedeiro
• Esta camada encapsula e
potencializa a comunicação
nativa do sistema operacional e
seus mecanismos para controle
de concorrência para criar uma
rede de componentes
reutilizáveis.
• Estes componentes abstraem as
peculiaridades individuais de
cada ambiente e ajudam a
eliminar diversos aspectos
trabalhosos, não portáveis e
sujeitos a erros de quem
manipula diretamente as APIs
de programação em baixo nível
do sistema operacional local
www.redes.unifacs.br
Camada: Middleware de
Infra-estrutura do Hospedeiro (cont.)
• Exemplos:
– Sun Java Virtual machine (JVM)
• Provê um meio independente de plataforma de executar código
Java através da abstração de diferenças entre sistemas operacionais
e arquiteturas de CPU.
• A JVM é responsável pela interpretação de bitecode Java e por
traduzir isso em ações ou chamadas ao sistema operacional,
encapsulando detalhes da plataforma hospedeira
– .NET
• Plataforma da Microsoft para Web Services em XML, projetada
para conectar informações, serviços e pessoas de uma forma
customizada.
• A solução é totalmente construída de forma similar à JVM,
provendo um ambiente para execução que gerencia códigos
executáveis e simplifica o desenvolvimento de software de mais
alto nível
www.redes.unifacs.br
Camada: Middleware de
Distribuição
• Define os modelos de
programação de mais alto
nível, cujas APIs
automatizam e ampliam as
capacidades de programação
nativas do SO, que foram
encapsuladas na camada de
middleware de infra-estrutura
do hospedeiro
• Permitem a inteligação de
aplicações remotas de forma
transparente
www.redes.unifacs.br
Camada: Middleware de
Distribuição
• O coração desta camada é o que se chama de “request
broker”. Alguns exemplos de request brokers:
– RMI (Remote Method Invocation)
• Desenvolvido pela Sun Microsystems, este middleware de distribuição
permite que desenvolvedores criem aplicações distribuídas em Java,
onde os métodos remotos possam ser invocados a partir de outras
JVMs a partir de hospedeiros diferentes.
• O modelo RMI só funciona para Java, mas graças a JVM, executa em
diversas plataformas
– CORBA (Common Object Request Broker Architecture)
• Padrão aberto de distribuiçao que permite que objetos interajam
através de uma rede sem preocupações com compatibilidades de
linguagem de programação ou plataforma
www.redes.unifacs.br
Camada: Middleware de
Distribuição (cont.)
• Mais exemplos de request brokers:
– DCOM (Distributed Component Object Model)
• Criado pela Microsoft, este modelo permite que componentes de
software se comuniquem remotamente a partir de instanciamento e
invocação de métodos.
• Diferente das soluções CORBA e RMI, que executam em qualquer
sistema operacional, o modelo DCOM é exclusivo da plataforma
Windows
– SOAP (Simple Object Access Protocol)
• Tecnologia baseada em um protocolo simples e leve estruturado em
XML que permite que aplicações troquem informações estruturadas
via web.
• Pode ser escrita em uma ampla gama de linguagens de programação e
usada de forma combinada com diversos protocolos e formatos internet
(HTTP, SMTP, MIME, ...) e RPC
www.redes.unifacs.br
Camada: Serviços Comuns de
Middleware
•
•
Serviços independestes de alto
nível que permitem que
desenvolvedores de aplicações se
concentrem em programas
apenas a lógica de negócio, sem
a necessidade de escrever o
código responsável pela
distribuição da aplicação (que
fica nas camadas anteriores)
O desenvolvedor não precisa
mais escrever o código que lida
com o comportamento de
transações, segurança, conexão
com o banco de dados, etc. por
que isso tudo é provido pela
camada de serviços comuns do
middleware na forma de
componentes reutilizáveis
www.redes.unifacs.br
Camada: Serviços Comuns de
Middleware (cont.)
•
Exemplos:
– CORBA (Common Object Request Broker Architecture)
• Provê independência de domínio nas interfaces e capacidades que podem ser
usadas por diversas aplicações
• Existem diversos serviços disponíveis, tais como notificação de eventos,
streaming, persistência, segurança,...
– EJB (Enterprise Java Beans)
• Tecnologia da Sun Microsystems que permite aos desenvolvedores criar SDs ncamadas ligando um certo número de serviços pré-fabricados (chamados de
“beans”) sem necessidade de muita codificação
• Por ser construído no topo da especificação da tecnologia Java, os componentes
EJB só podem ser implementados nessa linguagem, mas existe uma
especificação no modelo CORBA que também aceita outras linguagens
– Web Services .NET
• Complementação da plataforma .NET que permite aos desenvolvedores
“empacotar” sua lógica de aplicação em componentes que são acessados
usando protocolos internet de alto nível (como HTTP).
• Os web services funcionam em uma filosofia de “caixa-preta”, que descreve a
interface sem se preocupar com a forma como o serviço foi implementado
• Diferente dos modelos tradicionais, os web services .NET não são acessados
usando os protocolos definidos pelas tecnologias CORBA, RMI e DCOM, e
sim usando XML e protocolos web
www.redes.unifacs.br
Camada: Serviços de Middleware
Específicos do Domínio
•
•
•
São confeccionados a partir dos
requerimentos particulares de cada
domínio, como telecomunicações, ecomerce, saúde, automação de
processos ou indústria areoespacial.
Diferente das demais camadas, que
provêem mecanismos e serviços
reutilizáveis “horizontais”, esta
camada enfoca alvos “verticais”
(voltados apenas para o domínio
específico a que se dedica)
É a camada que tem maior potencial
para aumentar a qualidade de um
sistema e reduzir tempo e esforços
gastos no desenvolvimento de
aplicações específicas
.
www.redes.unifacs.br
Camada: Serviços de Middleware
Específicos do Domínio (cont.)
• Exemplos:
– O OMG (Object Management Group) criou diversas “Domais Task
Forces” concentradas em padronizar serviços de middleware com
foco específico em certas áreas, como o comércio eletrônico,
pesquisas biológicas, automação de processos
– O Siemens Medical Engineering Group desenvolveu o Syngo, que é
tanto uma coleção integrada de servicós de middleware quanto uma
plataforma aberta de aplicações voltadas para tarefas relacionadas a
tratamento de imagens (ultra-som, radiografia, tomografia,
ressonância magnética, medicina nuclear, monitoramento de
pacientes,...)
– A Boing lançou uma arquitetura não-propietária chamada “Bold
Stroke” de componentes voltados para ampliar as capacidades
computacionais de aplicações em aviação militar, como navegação
computadorizada, conrole de armas, sensores, etc.
– Outros domínios onde é comum a adoção de middleware específico:
• Telecomunicações, comércio eletrônico, computação móvel, automação,
energia, ...
www.redes.unifacs.br
Benefícios do Uso de
Middleware em Camadas
• Aumento do foco na integração, substituindo a programação
• Maior demanda por qualidade de ponta-a-ponta, não apenas
pala qualidade de cada componente
• Aumento de viabilidade de sistemas abertos
• Incentivo ao desenvolvimento baseado na “Lei da Disrupção”,
reduzindo custos e aumentando a competição global
• Potencial encapsulamento de complexidade para as próximas
gerações de sistemas complexos
• Esconde do programador de aplicações distribuídas as
diferenças entre:
•
•
•
•
•
•
Plataformas de hardware
Sistemas operacionais
Bibliotecas e protocolos de comunicação
Formatação de dados
Linguagens de programação
Modelos de programação
www.redes.unifacs.br
Modelos de Construção
• Para simplificar o desenvolvimento e a integração de
aplicações distribuídas, a maioria dos produtos oferecidos
na categoria de middleware se baseia em um ou mais
modelos (paradigmas) de distribuição e comunicação
• Os quatro modelos mais conhecidos são:
– Modelo Remote Procedure Call (RPC)
• Permitem que um cliente acione funções que se processam remotamente por
meio de troca de mensagens
– Modelo Transacional (TPs)
• Também conhecidos como “Transaction Processing Monitors”, se focam no
controle de transações envolvendo componentes que executam em hosts
distribuídos
– Modelo Orientado a Mensagens (MOMs)
• Residem nos dois lados da arquitetura cliente/servidor e suportam chamadas
assíncronas entre aplicações
– Modelo Object Request Broker (ORB)
• Permitem que uma aplicação seja composta de objetos distribuídos em redes
heterogêneas
www.redes.unifacs.br
Modelos de Construção:
O Modelo Remote Procedure Call
• Como funciona:
– RPC permite que programas chamem procedimentos localizados em
outras máquinas sem saber que esta chamada é remota.
• Isso é feito durante a compilação dos componentes, por meio da inclusão de
códigos chamados “stubs”, que se responsabilizam por proteger os programas de
aplicação de detalhes de comunicação em mais baixo nível (exemplo: sockets)
– É preciso existir algum dispositivo que tenha uma lista dos serviços
remotos disponíveis e suas localizações na rede. Este serviço é
chamado binder
• Principais características
– O RPC é um método de tranferência de controle de execução
– É um método de transferência de controle
• Quem aciona o procedimento remoto suspende sua execução e fica aguardando o
retorno do mesmo (ou seja, passa o controle da execução adiante)
• O procedimento remoto assume o controle, executa suas funções e devolve o
controle para quem o acionou
• O acionador retoma sua execução do ponto em que parou
• Uma chamada remota de procedimento usa comunicação direta e síncrona
www.redes.unifacs.br
Modelos de Construção:
O Modelo Remote Procedure Call
www.redes.unifacs.br
Modelos de Construção:
O Modelo Transacional
• Como funciona:
– Se baseia no mapeamento de pedidos de clientes por meio de serviços
de aplicação (rotinas) localizadas em um servidor.
– Essa tecnologia controla transações, computações de regras de negócio
e atualizações em banco de dados
• Principais características
– É usado em aplicações que demandam rapidez na execução de
transações remotas
– É uma alternativa de baixo custo para atualização de sistemas legado
com bases de dados grandes e plataformas complexas
– Inclui aspectos de gerenciamento (exemplo:balanceamento dinâmico
de carga)
– Usa chamadas de procedimento remoto associadas a controle de
transações
– É independente da arquitetura de banco de dados
– Escalabilidade, flexibilidade e robustez
– É capaz de efetuar comunicação síncrona e assíncrona
www.redes.unifacs.br
Modelos de Construção:
O Modelo Transacional
www.redes.unifacs.br
Modelos de Construção:
O Modelo Orientado a Mensagens
•
Como funciona:
– Reside tanto no lado cliente quanto no lado servidor
– Cada lado possui uma fila de mensagens
– Sempre que o programa destino da mensagem está ocupado ou desconectado,
a mensagem é colocada na fila
– Um gerente de filas rodando em separado gerencia as filas e garante que não
importa o que ocorra na rede, apenas uma cópia da mensagem eventualmente
chega ao seu destino
– O armazenamento de mensagens é temporário (são apagadas a medida que são
atendidas)
•
Principais características:
– As filas permitem que cada lado funcione de forma assíncrona em relação ao
outro
– Aumenta a interoperabilidade, portabilidade e flexibilidade da aplicação
– Suporta plataformas heterogêneas
– A comunicação entre um processo e o gerente de filas geralmente é síncrona
– Altamente tolerante a falhas
– Fica a cargo do desenvolvedor de aplicações garantir que emissores e
receptores conhecem o formato da mensagem
www.redes.unifacs.br
Modelos de Construção:
O Modelo Orientado a Mensagens
• O MOM é usado quando a comunicação assíncrona confiável
é a forma dominante de interação de um sistema distribuído
• Variações do MOM:
– Message Queueing (baseado em fila)
• Usa filas de mensagem conforme já foi descrito anteriormente
• Geralmente usado em ambientes orientados à transação
• Não há conexão direta entre as partes
– Publish/Subscribe
• Subscribe:
–
Clientes se registram para receber mensagens de uma determinada fila
• Publish:
–
O middleware envia mensagens deste fila para os clientes registrados
• Exemplos:
– MSMQ da Microsoft
– Java Message Service (JMS) da SUN
– Tuxedo/Q da BEA Systems
www.redes.unifacs.br
Modelos de Construção:
O Modelo Orientado a Mensagens
www.redes.unifacs.br
Modelos de Construção:
O Modelo Object Request Broker
•
Como funciona:
– Um ORB (Object Request Broker) age como um intermediário para as requisições
que os clientes enviam para os servidores
– O ORB serve como distribuidor de comunicação entre agrupamento de objetos
(componentes de software) em diferentes máquinas, diferentes softwares e diferentes
fornecedores
– Os desenvolvedores da aplicação deixam de se preocupar com detalhes referentes à
implementação do ORB e se concentram apenas na interface de cada objeto (como
acionar o objeto e o que esperar como resposta)
– Cada ORB provê uma lista de serviços e colabora no estabelecimento da conexão
entre cada cliente e estes serviços
– Cada ORB pode ser implementado de diversas formas. Por exemplo
• Compilados dentro do cliente
• Processados separadamente
• Ser parte do kernel de um sistema operacional
•
Principais caractrísticas:
– Fornece transparência de localização e suporte a arquiteturas heterogêneas
(interoperabilidade)
– Esconde detalhes de implementação dos objetos (linguagem, sistema operacional,
hardware,...)
www.redes.unifacs.br
Modelos de Construção:
O Modelo Object Request Brokers
www.redes.unifacs.br
Download