Middleware Tarde

Middleware

Uma solução para o desenvolvimento de aplicações distribuídas

Middleware, conhecido como mediador, faz a medição entre vários softwares, sendo utilizado para trocar informações entre programas de softwares, dependendo do sistema operacional, conhecendo as plataformas para que possam ser melhoradas pelo desenvolvedor.
De acordo com a Wikipédia “O Middleware é a designação genérica utilizada para referir os sistemas de software que se executam entre as aplicações e os sistemas operativos.”
Constituído por um conjunto de interfaces de programação de aplicativos de alto nível proporcionando a sua união em diversas linguagens de programação e aquelas interfaces de baixo nível são independentes ao seu dispositivo.
Objetivando uma mascara heterogenia e oferece um produtivo modelo de programação para os desenvolvedores de aplicação, facilitando o entendimento das suas aplicações distribuídas para compreender os sistemas desenvolvidos desde que não sejam integrais.
Formado de processos ou objetos em uma rede de computador, que se comunica entre si de acordo com a comunicação implementada e suporta para compartilhar os recursos distribuídos da aplicação.

No que se refere à integração entre aplicações escritas em diferentes linguagens de programação, poucos middlewares suportam esta característica. Um bom exemplo de integração entre diferentes linguagens é o Commom Object Request Broker Architecture (CORBA), pois neste middleware é possível fazer o mapeamento de uma Interface Definition Language (IDL) em muitas linguagens de programação.Um ponto importante na utilização e funcionalidade dos middlewares é a sua padronização, o que causa problemas relacionados à integração, facilidade de uso e gerenciamento. A padronização, entretanto, é importante para auxiliar os consumidores a selecionarem middlewares baseados em qualidade.

Duas características importantes na construção de um middleware são: sua flexibilidade e performance. Porém, estes dois pontos são mutuamente exclusivos, já que o alto nível de flexibilidade acaba impedindo um alto nível de performance, sendo o ideal um balanceamento entre os dois. Outro ponto a ser destacado na utilização dos middlewares é a redução na complexidade do sistema, pois, ao utilizar um middleware, o sistema terá sua complexidade reduzida, sendo que este é um dos objetivos principais na utilização desta camada intermediária.

Os middlewares comumente fornecem os seguintes serviços:

Gerenciamento de Apresentação: Gerenciamento de formulários, gráficos, impressora e hipermídia.

Computação: Ordenação, dispositivos matemáticos, serviços internacionalizáveis,conversores de dados e serviço de tempo.

Gerenciamento de informação: Servidor de diretórios, gerenciador de log, gerenciador de arquivos.

Comunicação: Mensagens Peer-to-Peer, chamada remota de procedimento, fila de mensagens, mensagem eletrônica e exportação eletrônica de dados.

Controle: Gerenciamento de transações, de threads.

Gerenciamento do Sistema: Serviço de notificação de eventos, serviço de contas, gerenciamento de configuração, detector de falhas.

Sistema de entrega: Um padrão proposto é o Java Virtual Machine (JVM) para o sistema de entrega. Outro exemplo é o Remote Procedure Call (RPC).

Comunicação entre processos: É o coração do middleware. Como exemplo pode-se citar o Object Request Broker (ORB) do CORBA, que tem por objetivo a integração entre aplicações remotas.

Interface com o usuário: Como exemplo tem-se o HTML, e os formatos multimídia
aceitos pela Internet.

Em direção de uma utilização mais universal de middlewares comuns: Os esforços para a criação de middleware estão centrados, atualmente, em soluções proprietárias e direcionadas a algum interesse. Os resultados disso ainda são funcionalidades caras e proibitivas.

Soluções comuns suportando tanto variabilidade quanto controle: Os sistemas tendem a trabalhar de uma maneira adequada se tiverem todos os recursos necessários para o seu correto funcionamento. Há pouca ou nenhuma flexibilidade em seus comportamentos. O que é necessário, então, é uma reconfiguração do sistema em relação aos recursos disponíveis a eles, que tem dois focos: o comportamento individual e o agregado.

imagem.JPG

Objetivo - É facilitar o desenvolvimento de aplicações e a integração de sistemas legados ou desenvolvidos de forma não integrada. (Transparência)

  • API
  • Camada de software entre o SO e a aplicação
imagem8.JPG
imagem7.JPG

Tipos de Middleware

  • RPC (Cliente/ Servidor)
  • Síncrono
  • Orientado a Mensagens
  • Assíncronos
  • Memória Compartilhada
  • Componentes

RPC

imagem9.JPG

Mensagens

imagem5.JPG

Memória Compartilhada

imagem6.JPG

O que é middleware?

Middleware é o neologismo criado para designar camadas de software que não constituem diretamente aplicações, mas que facilitam o uso de ambientes ricos em tecnologia da informação. A camada de middleware concentra serviços como identificação, autenticação, autorização, diretórios, certificados digitais e outras ferramentas para segurança.
Aplicações tradicionais implementam vários destes serviços, tratados de forma independente por cada uma delas. As aplicações modernas, no entanto, delegam e centralizam estes serviços na camada de middleware. Ou seja, o middleware serve como elemento que aglutina e dá coerência a um conjunto de aplicações e ambientes.

Camada de software que fornece facilidades para o desenvolvimento de aplicações distribuídas.
mediador entre cliente e servidor

Facilidades Oferecidas:

  • comunicação
  • segurança
  • resolução de nomes
  • transações
  • persistência
  • replicação
  • esconde heterogeneidade

hardware, sistemas operacionais, linguagens de
programação

Tecnologias Tradicionais:

– CORBA
– DCOM
– Java RMI

Escassez de Recursos:

  • Dispositivos móveis podem ter restrições quanto a memória, poder de processamento e energia.
  • Algumas funcionalidades podem não ser necessárias e podem ser omitidas.
  • Deve ser possível configurar a plataforma para cada ambiente/aplicação.

Conectividade Intermitente:

  • Dispositivos móveis podem sofrer desconexões freqüentes (preparadas ou não).
  • Necessidade de comunicação assíncrona e armazenamento intermediário das informações a transferir.

Dinamismo:

  • Mudanças no contexto de aplicações são freqüentes.
  • Deve ser possível adaptação e reconfiguração da plataforma.

Avanços em Middleware:

  • Maiores facilidades para desenvolvimento de aplicações complexas.

– CORBA 3, J2EE e .NET oferecem modelos de Componentes.

  • Middleware baseado em componentes

– Quarterware permite configurar a infraestrutura conforme as necessidades das aplicações.

  • Middleware Reflexivo

– DynamicTAO e OpenORB permitem reconfigurar a infra-estrutura conforme mudanças no contexto das aplicações.

Middlewares que oferecem Componentes

Motivação: aplicações distribuídas estão cada vez mais complexas.

Componente: unidade de composição e desenvolvimento independente.

Componentes têm interfaces:

Fornecidas: para serviços oferecidos pelocomponente.
Requeridas: para serviços que o componente precisa de outros.

  • Componentes devem fornecer informações sobre propriedades não funcionais.

Vantagens:

– Facilita desenvolvimento de sistemas grandes.
– Facilita reuso reduzindo custo e tempo de desenvolvimento.
– Várias pessoas podem participar.

Desvantagens

– Decomposição é difícil.
– Sistemas construídos com componentes podem.
• ficar maiores
• ter pior desempenho
se complexidade de componentes diminui interconexão fica mais complexa.
– Relutância de engenheiros de software na utilização de software de terceiros.

Motivação:

  • Construção de middleware mais enxuto conforme requisitos de aplicações
  • Possibilidade de ter versões alternativas para cada tipo de componente. É possível escolher componentes.

Referências Bibliográficas:

http://pt.wikipedia.org/wiki/Middleware

http://www.rnp.br/noticias/2006/not-060926.html

http://www2.dc.ufscar.br/~paulovic/MidSDs.pdf

http://www.frb.br/ciente/Impressa/Info/I.8.Semiramis.Middleware.pdf

Componentes:

* Bruno Del'rey

* Josenel Ribeiro

* Rogerio Miranda

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License