O que é o middleware exatamente?

203

Eu ouvi muitas pessoas falando recentemente sobre middleware , mas qual é a definição exata de middleware? Quando olho para o middleware, encontro muitas informações e algumas definições, mas ao ler essas informações e definições, parece que quase todos os 'wares' estão no meio de alguma coisa. Então, todas as coisas são middleware?

Ou você tem um exemplo de mercadoria que não é middleware?

Michel
fonte

Respostas:

219

Digamos que sua empresa produz 4 produtos diferentes, seu cliente possui mais 3 produtos diferentes de outras 3 empresas diferentes.

Algum dia o cliente pensou: por que não integramos todos os nossos sistemas em um grande sistema? Dez minutos depois, o departamento de TI disse que levará dois anos.

Você (o desenvolvedor inteligente) disse: por que não integramos todos os diferentes sistemas e os fazemos trabalhar juntos em um ambiente homogêneo? O gerente de clientes olhando para você ... Você continuou, usaremos um Middleware, estudaremos as entradas / saídas de todos os sistemas diferentes, os recursos que eles usam e, em seguida, escolheremos uma estrutura apropriada de Middleware.

Ainda explicando ao gerente não técnico
Com a estrutura Middleware no meio, o primeiro sistema produzirá itens X, o sistema Y e Z consumiriam essas saídas e assim por diante.

medopal
fonte
Grande exemplo! Dessa forma, não se tornará um ambiente heterogêneo? não é homogêneo.
Rabia Naz khan
Middleware é um componente de dados (agregação + transformação).
overexchange 26/03
92

Middleware é um termo terrivelmente nebuloso. O que é "middleware" em um caso não estará em outro. Em geral, você pode esperar que algo classificado como middleware tenha as seguintes características:

  • Principalmente (geralmente exclusivamente) software; normalmente não precisa de nenhum hardware especializado.

  • Se não estivesse lá, os aplicativos que dependem dele precisariam incorporá-lo como parte do aplicativo e sofreriam muita duplicação.

  • Quase certamente conecta dois aplicativos e passa dados entre eles.

Você notará que essa é praticamente a mesma definição que um sistema operacional. Portanto, por exemplo, uma pilha TCP / IP ou cache pode ser considerado um middleware. Mas o seu sistema operacional também pode fornecer os mesmos recursos. De fato, o middleware pode ser pensado como uma extensão especial para um sistema operacional, específica para um conjunto de aplicativos que dependem dele. Apenas fornece um serviço de nível superior.

Alguns exemplos de middleware:

  • cache distribuído
  • fila de mensagens
  • monitor de transação
  • reescritor de pacotes
  • sistema de backup automatizado
John Feminella
fonte
20

A Wikipedia tem uma boa explicação: http://en.wikipedia.org/wiki/Middleware

Começa com

Middleware é um software de computador que conecta componentes ou aplicativos de software. O software consiste em um conjunto de serviços que permite que vários processos em execução em uma ou mais máquinas interajam.

O que é o Middleware fornece alguns exemplos.

aioobe
fonte
1
Eu encontrei-me allready, mas parece wikipedia diz que tudo está middleware ou você tem um exemplo de uma mercadoria que não é middleware
Michel
2
Eu esclareceria adicionando ... "uma ou mais máquinas para interagir que nativamente não seriam capazes". Caso contrário, concorde, nada de errado com essa resposta.
jeriley
1
Melhor dizer "um ou mais [processos] para interagir que nativamente não seriam capazes".
fstuijt 25/05
19

Existem (pelo menos) três definições diferentes que conheço

  • na computação comercial, o middleware é um software de mensagens e integração entre aplicativos e serviços

  • nos jogos, o middleware é muito bem qualquer coisa fornecida por terceiros

  • em (alguns) sistemas de software embarcados, o middleware fornece serviços que os aplicativos usam, compostos pelas funções fornecidas pela camada de abstração de hardware - fica entre a camada de aplicativo e a camada de abstração de hardware.

Pete Kirkham
fonte
15

Simplificando, o Middleware é um componente de software que fornece serviços para integrar sistemas diferentes.

Em um ambiente corporativo complexo, existem vários desafios quando você precisa integrar dois ou mais sistemas corporativos para conversar entre si. Normalmente, esses sistemas não entendem a linguagem um do outro, pois são desenvolvidos em plataformas diferentes usando linguagens diferentes (como C ++, Java, Cobol etc.).

Então aqui está o software de middleware que fornece serviços como

  • transformação de formatos de mensagens de um aplicativo para outro,
  • encaminhamento e enriquecimento de mensagens, além de cuidar da segurança,
  • criptografia,
  • validação e
  • aplicando regras de negócios diferentes a essas mensagens.

Um exemplo típico de middleware é um ESB produto , como o IBM Message Broker (WMB / IIB), WESB, Datapower XI50, Oracle Fusion, Mule e muitos outros.

Portanto, o middleware fica principalmente entre os aplicativos que consomem serviços e os provedores de serviços e ajuda esses aplicativos a se comunicarem.

SAK123
fonte
14

Middleware é sobre como nosso aplicativo responde às solicitações recebidas. Os middlewares examinam a solicitação recebida e tomam decisões com base nessa solicitação. Podemos construir aplicativos inteiros apenas usando middlewares. Por exemplo, o ASP.NET é uma estrutura da Web composta pelos seguintes componentes principais de middleware HTTP.

  1. Tratamento de exceção / erro
  2. Servidor de arquivo estático
  3. Autenticação
  4. MVC Middlewares

Conforme mostrado no diagrama acima, existem vários componentes de middleware no ASP.NET que recebem a solicitação de entrada e a redirecionam para uma classe C # (nesse caso, uma classe de controlador).

Eldiyar Talantbek
fonte
10

Middleware é um termo geral para software que serve para "colar" programas separados, geralmente complexos e já existentes. Alguns componentes de software que são freqüentemente conectados ao middleware incluem aplicativos corporativos e serviços da Web.

falcucci
fonte
6

Existe uma definição comum no desenvolvimento de aplicativos da web que é (e eu estou elaborando essa redação, mas parece que se encaixa): Um componente projetado para modificar uma solicitação e / ou resposta HTTP, mas que geralmente não atende à resposta na íntegra, projetado para ser encadeado para formar um pipeline de mudanças comportamentais durante o processamento da solicitação.

Exemplos de tarefas que são comumente implementadas pelo middleware:

  • Compactação de resposta gzip
  • Autenticação HTTP
  • Solicitar log

O ponto principal aqui é que nenhum deles é totalmente responsável por responder ao cliente. Em vez disso, cada um altera o comportamento de alguma forma, como parte do pipeline, deixando a resposta real vir de algo posteriormente na sequência (pipeline).

Geralmente, os middlewares são executados antes de algum tipo de "roteador", que examina a solicitação (geralmente o caminho) e chama o código apropriado para gerar a resposta.

Pessoalmente, eu odeio o termo "middleware" por sua genericidade, mas é de uso comum.

Aqui está uma explicação adicional especificamente aplicável ao Ruby on Rails.

Brad Peabody
fonte
6

Middleware fica entre aplicativos da web e serviços da web que originalmente não conseguem se comunicar e geralmente são escritos em diferentes idiomas / estruturas.

Um exemplo é o OWIN middleware for .NETambiente, antes que as pessoas fossem forçadas a hospedar aplicativos da Web em um software de hospedagem da Microsoft chamado IIS. Depois que o owin foi desenvolvido, ele adicionou capacidade para hospedar no IIS e no host próprio, no IIS acabou de ser adicionado suporte ao Owin, que agia como uma interface. Também se tornou possível host .NET web apps on Linux via Mono, o que novamente adicionou suporte para Owin.

Também adicionou capacidade para criar Single Page Applications , o Owin manipulando o Httpcontexto de solicitação / resposta; portanto, além do owin, você pode adicionar authentication/authorizationlógica via OAuth2, por exemplo, pode configurar o middleware para registrar uma classe que contém lógica de autenticação do usuário (por exemplo, implementação do OAuth2) ou classe que contém a lógica de como gerenciar mensagens de solicitação / resposta http, para que você possa fazer com que um aplicativo se comunique com outros aplicativos / serviços através de diferentes formatos de dados (como json, xml, etc., se você estiver direcionando a web).

Daniel
fonte
3

Alguns exemplos de middleware: CORBA, RMI (Remote Method Invocation), ...

Os exemplos mencionados acima são todos os softwares que permitem cuidar da comunicação entre diferentes processos (sendo executados na mesma máquina ou distribuídos na Internet, por exemplo).

fstuijt
fonte
2

De minha própria experiência com trabalho na web, um middleware era algo entre usuários (o navegador da web) e o banco de dados back-end. Foi o software que pegou as coisas que os usuários colocaram (por exemplo: pedidos de iPads, fez alguma lógica mágica de negócios, ou seja, verifique se há iPads suficientes disponíveis para atender o pedido) e atualizou o banco de dados de back-end para refletir essas alterações.

eviljack
fonte
2

É apenas um software ou uma ferramenta na qual seu aplicativo executa e recursos de replicação com relação à alta disponibilidade, escalabilidade, integração com outros softwares ou sistemas sem você se preocupar com as alterações no código no nível do aplicativo.

Por exemplo: O sistema operacional no qual o aplicativo é executado exige uma alteração de IP, você não precisa se preocupar com isso no seu código, é a pilha de middleware na qual você pode atualizar a configuração com facilidade.

Exemplo 2: você tem problemas com a alocação de memória de tempo de execução e sente que o uso do aplicativo aumentou, você não precisa fazer muita coisa a menos que tenha um bug ou gargalo no código, isso é facilmente possível ajustando a configuração do software de middleware em qual seu aplicativo é executado.

Exemplo 3: você tem vários softwares diferentes e precisa que eles conversem entre si ou enviem dados em um formato comum que seja compreensível para todos os sistemas; é aqui que os sistemas de middleware são úteis.

Espero que as informações fornecidas ajudem.

Afzal Haque
fonte
2

é uma camada de software entre o sistema operacional e os aplicativos em cada lado de um sistema de computação distribuído em uma rede. De fato, ele conecta sistemas de rede e software heterogêneos.

Maryam Sheikh
fonte
0

Eu sempre pensei nisso como o software mais antigo que tive que instalar. O aplicativo total usou um servidor da web, um servidor de banco de dados e um servidor de aplicativos. O servidor da web é o middleware entre os dados e o aplicativo.

Rick
fonte
0

Se não estou errado, na estrutura de aplicativos de software , com base no contexto , você pode considerar middlewareas seguintes funções que podem ser combinadas para executar determinadas atividades entre o usuário requeste o aplicativo response.

  • Adaptador
  • Desinfetante
  • Validador
ANM Saiful Islam
fonte