# data[].attributes.body
Numa sucinta história sobre middleware afirma BAKKEN (2013), que o termo middleware apareceu pela primeira vez no final de 1980 para descrever o software de gerenciamento de conexão de rede, mas não entrou em uso, generalizado até meados dos anos 1990, quando a tecnologia de rede tinha conseguido uma penetração visibilidade suficientes. Contudo, o tempo tinha evoluído para um conjunto de paradigmas e serviços oferecidos para ajudar a tornar mais fácil e mais gerenciável para construir aplicações distribuídas. O termo foi associado principalmente com bancos de dados relacionais para muitos praticantes no mundo dos negócios através do início de 1990. Conceitos semelhantes ao middleware de hoje já passou sob os nomes de sistemas operacionais de rede, sistemas operacionais distribuídos e ambientes de computação distribuída.

# data[].attributes.body
Middleware é semelhante a um sistema no qual pode suportar outros programas aplicativos fornecendo interações controladas, assim evitando interferência entre cálculos e facilitando sua comunicação entre diversos computadores por meios de serviços em rede, isso nos propõe deduzir que o middleware nada mais é que uma camada que está situada entre os aplicativos e o sistemas operacionais ou seja um software multiuso, suas principais funções nada mais é do que simplificar desenvolvimentos de aplicativos encobrindo suas diferenças entre sistemas operacionais.
Segundo BAKKEN (2013), Middleware é definido como uma camada acima dos sistemas operacionais, mas abaixo do programa de aplicação, sendo assim, fornece uma abstração de programação comum através de um sistema distribuído, Middleware às vezes chamado informalmente de ‘Encanamento’, porque ele conecta partes de um aplicativo distribuído com pipes de dados e em seguida, passar dados entre eles.

# data[].attributes.body
Middleware serve para uma variedade de funções, ele gerencia conectividade com vários recursos de back-end, ROUSE (2014), um componente de middleware pode criar um pool de conexão para fornecer acesso rápido e eficiente a um banco de dados, também pode criar conexões para filas e tópicos de mensagens.
Segundo ROUSE (2014), middleware desempenha um papel importante no processamento simultâneo, no balanceamento de carga e até no gerenciamento de transações, tem capacidade de dimensionar vertical e horizontalmente para ajudar máquinas virtuais ou zonas de disponibilidade da nuvem. O software Middleware também pode lidar com problemas que podem surgir quando dois ou mais clientes tentam acessar ou atualizar um determinado recurso de back-end ao mesmo tempo.
Podemos afirmar então que middleware tem um papel muito importante para proteger recursos back-end e capacidade de desafiar clientes que exigem uma conexão segura e criptografada.

# data[].attributes.body
Em sua visão geral, podemos deduzir, todas as solicitações baseadas em rede são tentativas de interagir com dados back-end, esses dados podem ser algo tão simples quanto uma imagem para exibir ou um vídeo para reproduzir ou pode ser tão complexo quanto um histórico de transações bancárias. Segundo ROUSE(2014), dados solicitados podem assumir muito formulários diferentes e podem ser armazenados de várias maneiras, provenientes de um servidor de arquivo, obtidos de uma fila de mensagens ou persistidos em um banco de dados, o papel do middleware é habilitar e facilitar o acesso a esses recursos de back-end.

# data[].attributes.body
Há muitos exemplos sobre tipos de middleware, cada um criado para sua função específica para conectar aplicativos e serviços web e da nuvem, a imagem abaixo cita alguns mais utilizados do middleware

# data[].attributes.body
Permite comunicação e interação com programas como contêineres em sistemas distribuídos, fornecendo uma abstração de um objeto ainda que remota, cujo métodos podem ser invocados como aqueles de um objeto no mesmo espaço de endereço.

# data[].attributes.body
Fornece uma fila de mensagens que podem ser acessados através de uma rede. É uma generalização da construção do sistema operativo conhecido como a caixa de correio.

# data[].attributes.body
Middleware podemos dizer que ele é uma API (Conjunto de rotinas e padrões de programação), que compõem, uma abstração de protocolos de comunicação e camada de infraestrutura. Programas de middleware são fornecidos em um software local e serviços em nuvem, pode ser usado independentemente ou juntos, dependendo do caso de uso.

# data[].attributes.body
Interações entre processos para trocar dados de modo a manter um estado global consistente, sendo possível abstrair completamente as interações entre os processos, evitando a necessidade de lidar diretamente com os mecanismos e tornando manutenção de estado global transparente.

# data[].attributes.body
A evolução do middleware é um sinônimo de conceitos de um servidor de aplicativos e a medida que a computação em nuvem aumenta sua popularidade o middleware muda. Middleware é uma classe de tecnologia de software que foi projetado para ajudar e gerenciar a complexidade dos sistemas distribuídos, contudo, seu uso é quase indispensável, tornando assim um software poderoso por se tratar de segurança e desempenho.