JSON, REST, SOAP, WSDL e SOA: como todos eles se vinculam

155

Atualmente estou fazendo alguns exames e estou lutando com alguns conceitos. Todos eles foram 'mencionados' nas minhas anotações, mas eu realmente não entendi como eles se relacionavam. Tanto quanto o meu entendimento é:

SOA - uma solução para fazer com que consumidores / provedores de serviços se comuniquem. (pelo que entendi, esse é o termo geral para todo o resto)

WSDL - Uma linguagem que descreve o serviço do provedor.

SOAP - Um 'wrapper' de protocolo XML usado pelos serviços para enviar mensagens. Trabalha em conjunto com o WSDL para fornecer parâmetros?

REST - Um padrão de design semelhante ao SOAP na função, mas evita o XML? (realmente não tenho certeza sobre este)

Uma alternativa para XML que usa javascript? (não tenho certeza sobre este também)

Olhando ao redor da internet, parece não haver uma definição clara do que são e como eles se interligam.

Jay
fonte

Respostas:

252

Imagine que você está desenvolvendo um aplicativo da Web e decide desacoplar a funcionalidade da apresentação do aplicativo, porque ele oferece maior liberdade.

Você cria uma API e permite que outras pessoas implementem seus próprios front-ends também. O que você acabou de fazer aqui é implementar uma metodologia SOA , ou seja, usar serviços da web.

Os serviços da Web tornam os blocos funcionais acessíveis através de protocolos padrão da Internet, independentemente de plataformas e linguagens de programação.

Portanto, você cria um mecanismo de intercâmbio entre o back-end (serviço da web) que processa e gera algo útil e o front-end (que consome os dados), que pode ser qualquer coisa. (Um aplicativo da Web, móvel ou de desktop ou outro serviço da Web). A única limitação aqui é que o front-end e o back-end devem "falar" o mesmo "idioma".


É aí que entram o SOAP e o REST. São maneiras padrão pelas quais você escolhe se comunicar com o serviço da web.

SABONETE:

O SOAP usa XML internamente para enviar e receber dados. As mensagens SOAP têm estrutura rígida e o XML de resposta precisa ser analisado. WSDL é uma especificação de quais solicitações podem ser feitas, com quais parâmetros e o que eles retornarão. É uma especificação completa da sua API.

DESCANSAR:

REST é um conceito de design.

A World Wide Web representa a maior implementação de um sistema em conformidade com o estilo de arquitetura REST.

Não é tão rígido quanto o SOAP. Os serviços da web RESTful usam URIs e métodos padrão para fazer chamadas para o serviço da web. Quando você solicita um URI, ele retorna a representação de um objeto, no qual você pode executar operações (por exemplo, GET, PUT, POST, DELETE). Você não está limitado a escolher XML para representar dados, você pode escolher qualquer coisa realmente (JSON incluído)

A API REST do Flickr vai além e permite retornar imagens também.


JSON e XML , são funcionalmente equivalentes e opções comuns. Também existem estruturas baseadas em RPC, como GRPC baseado em Protobufs e Apache Thrift, que podem ser usadas para comunicação entre os produtores e consumidores de API. O formato mais comum usado pelas APIs da web é JSON, pois é fácil de usar e analisar em todos os idiomas.

Anirudh Ramanathan
fonte
36
Excelente resposta até o cop-out em JSON x XML. Uma versão mais equilibrada seria: XML e JSON são maneiras de serializar dados. O XML é mais flexível e possui muitos padrões projetados, mas alguns acham que é muito complexo e detalhado. JSON é um formato mais simples que define algumas estruturas básicas de maneira concisa, fácil de usar para estruturas informais de dados; algumas pessoas estão trabalhando nos padrões para replicar aqueles que existem no XML.
IMSOP
30

WSDL : significa o serviço Web Language Description

No SOAP (protocolo de acesso a objetos simples), quando você usa o serviço da Web e adiciona um serviço da Web ao seu projeto, os aplicativos cliente não conhecem as funções do serviço da Web. Hoje em dia é algo antiquado e para cada tipo de cliente diferente você precisa implementar WSDLarquivos diferentes . Por exemplo, você não pode usar o mesmo arquivo para .Nete phpcliente. O WSDLarquivo tem algumas descrições sobre as funções de serviço da web. O tipo deste arquivo é XML. SOAPé uma alternativa para REST.

REST : representa transferência de estado representacional

É outro tipo de serviço de API, é realmente fácil de usar para clientes. Eles não precisam ter extensão de arquivo especial, como WSDLarquivos. A operação CRUD podem ser implementadas por diferentes HTTP Verbs(GET para a leitura, POST para a Criação, PUT ou patch para atualizar e DELETE para apagar o documento desejado), eles são baseados em HTTPprotocolo e na maioria das vezes a resposta está em JSONou XMLformato. Por outro lado, o aplicativo cliente precisa chamar exatamente o relacionado HTTP Verbpor meio de nomes e tipos de parâmetros exatos. Por não ter um arquivo especial para definição, WSDLé um trabalho manualmente usando o nó de extremidade. Mas não é grande coisa, porque agora temos muitos plugins para diferentes IDEs para gerar a implementação do lado do cliente.

SOA : significa arquitetura orientada a serviços

Inclui toda a programação com conceitos e arquitetura de serviços da web. Imagine que você deseja implementar um aplicativo em larga escala. Uma prática pode ser ter alguns serviços diferentes, chamados microsserviços, e todo o mecanismo do aplicativo chamaria o serviço da Web necessário no momento certo. Tanto os serviços web RESTcomo os da SOAPweb são SOA.

JSON : significajavascript Object Notation

Quando você serializa um objeto para javascript, o tipo de formato do objeto é JSON. imagine que você tem a classe humana:

class Human{
 string Name;
 string Family;
 int Age;
}

e você tem algumas instâncias desta classe:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

Quando você serializa o objeto h1 para JSON, o resultado é:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptpode avaliar esse formato por eval()função e criar uma matriz associativa a partir dessa JSONsequência. Este é um conceito diferente em comparação com outros conceitos que descrevi anteriormente.

Saman Gholami
fonte
Esta resposta contém alguns erros (por exemplo, HTML <> HTTP)
Yassin Hajaj
1
@YassinHajaj fixed
Saman Gholami