JSON, REST, SOAP, WSDL y SOA: ¿Cómo se unen?

155

Actualmente estoy haciendo algunos exámenes y estoy luchando con algunos conceptos. Todo esto ha sido 'mencionado' en mis notas realmente, pero realmente no entendí cómo se unían. Hasta donde yo entiendo es:

SOA: una solución para que los consumidores / proveedores de servicios se comuniquen. (hasta donde yo entiendo, este es el término general para todo lo demás)

WSDL: un lenguaje que describe el servicio del proveedor.

SOAP: un 'contenedor' de protocolo XML utilizado por los servicios para enviar mensajes. ¿Funciona junto con WSDL para proporcionar parámetros?

REST - ¿Un patrón de diseño que es similar a SOAP en función pero evita el XML? (Realmente no estoy seguro de esto)

JSON: ¿una alternativa a XML que usa JavaScript? (tampoco estoy seguro de esto)

Mirando en internet no parece haber una definición clara de lo que son y cómo se relacionan.

Arrendajo
fuente

Respuestas:

252

Imagine que está desarrollando una aplicación web y decide desacoplar la funcionalidad de la presentación de la aplicación, ya que ofrece una mayor libertad.

Usted crea una API y deja que otros implementen sus propios front-end también. Lo que acaba de hacer aquí es implementar una metodología SOA , es decir, usar servicios web.

Los servicios web hacen que los bloques funcionales sean accesibles a través de protocolos estándar de Internet, independientemente de las plataformas y los lenguajes de programación.

Entonces, diseña un mecanismo de intercambio entre el back-end (servicio web) que realiza el procesamiento y la generación de algo útil, y el front-end (que consume los datos), que podría ser cualquier cosa. (Una aplicación web, móvil o de escritorio, u otro servicio web). La única limitación aquí es que el front-end y el back-end deben "hablar" el mismo "idioma".


Ahí es donde intervienen SOAP y REST. Son formas estándar en las que elegiría comunicarse con el servicio web.

JABÓN:

SOAP utiliza internamente XML para enviar datos de un lado a otro. Los mensajes SOAP tienen una estructura rígida y el XML de respuesta debe analizarse. WSDL es una especificación de qué solicitudes se pueden realizar, con qué parámetros y qué devolverán. Es una especificación completa de su API.

DESCANSO:

REST es un concepto de diseño.

La World Wide Web representa la implementación más grande de un sistema conforme al estilo arquitectónico REST.

No es tan rígido como el jabón. Los servicios web RESTful utilizan métodos y URI estándar para realizar llamadas al servicio web. Cuando solicita un URI, devuelve la representación de un objeto, sobre el que puede realizar operaciones (por ejemplo, GET, PUT, POST, DELETE). No está limitado a elegir XML para representar datos, puede elegir cualquier cosa realmente (JSON incluido)

La API REST de Flickr va más allá y le permite devolver imágenes también.


JSON y XML son funcionalmente equivalentes y opciones comunes. También hay marcos basados ​​en RPC como GRPC basado en Protobufs y Apache Thrift que se pueden usar para la comunicación entre los productores y consumidores de API. El formato más común utilizado por las API web es JSON debido a que es fácil de usar y analizar en todos los idiomas.

Anirudh Ramanathan
fuente
36
Excelente respuesta hasta la eliminación en JSON vs XML. Una versión más equilibrada sería: XML y JSON son formas de serializar datos. XML es más flexible y tiene muchos estándares diseñados a su alrededor, pero algunos consideran que es demasiado complejo y detallado. JSON es un formato más simple que define algunas estructuras básicas de manera concisa, que es fácil de usar para estructuras de datos informales; algunas personas están trabajando en estándares para replicar los que existen sobre XML.
IMSoP
30

WSDL : significa lenguaje de descripción de servicio web

En SOAP (protocolo simple de acceso a objetos), cuando utiliza un servicio web y agrega un servicio web a su proyecto, su (s) aplicación (es) cliente (s) no conocen las Funciones del servicio web. Hoy en día es algo anticuado y para cada tipo de cliente diferente tienes que implementar diferentes WSDLarchivos. Por ejemplo, no puede usar el mismo archivo .Nety phpcliente. El WSDLarchivo tiene algunas descripciones sobre las funciones del servicio web. El tipo de este archivo es XML. SOAPEs una alternativa para REST.

RESTO : significa transferencia de estado representativo

Es otro tipo de servicio API, es realmente fácil de usar para los clientes. No necesitan tener una extensión de archivo especial comoWSDL archivos. La operación CRUD puede implementarse de diferentes HTTP Verbsmaneras (GET para lectura, POST para creación, PUT o PATCH para actualizar y DELETE para eliminar el documento deseado), se basan en el HTTPprotocolo y la mayoría de las veces la respuesta está en formato JSONo XML. Por otro lado, la aplicación cliente debe llamar exactamente a los relacionados a HTTP Verbtravés de nombres y tipos de parámetros exactos. Debido a que no tiene un archivo especial para la definición, WSDLes un trabajo manual que utiliza el punto final. Pero no es gran cosa porque ahora tenemos muchos complementos para diferentes IDE para generar la implementación del lado del cliente.

SOA : significa arquitectura orientada a servicios

Incluye toda la programación con conceptos y arquitectura de servicios web. Imagine que desea implementar una aplicación a gran escala. Una práctica puede ser tener algunos servicios diferentes, llamados microservicios, y todo el mecanismo de la aplicación estaría llamando al servicio web necesario en el momento adecuado. Ambos RESTy SOAPlos servicios web son algo así SOA.

JSON : significajavascript Object Notation

cuando serializa un objeto para javascript, el tipo de formato de objeto es JSON. imagina que tienes la clase humana:

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

y tienes algunas instancias de esta clase:

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

cuando serializa el objeto h1 a JSON, el resultado es:

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

javascriptpuede evaluar este formato por eval()función y hacer una matriz asociativa a partir de esta JSONcadena. Este es un concepto diferente en comparación con otros conceptos que describí anteriormente.

Saman Gholami
fuente
Esta respuesta contiene algunos errores (por ejemplo, HTML <> HTTP)
Yassin Hajaj
1
@YassinHajaj arreglado
Saman Gholami