¿Diferencia entre API web y servicio web?

Respuestas:

86

Servicios web: ese es el estándar definido por W3C, por lo que se puede acceder de forma semiautomática o automática (WSDL / UDDI). Todo se basa en XML, por lo que cualquiera puede llamarlo. Y cada aspecto del servicio está muy bien definido. Hay un estándar de descripción de parámetros, un estándar de paso de parámetros, un estándar de respuesta, un estándar de descubrimiento, etc., etc. Probablemente podría escribir un libro de 2000 páginas que describiera el estándar. Incluso hay algunos estándares "adicionales" para hacer cosas "estándar", como la autenticación.

A pesar del hecho de que la invocación y el descubrimiento automáticos apenas funcionan porque los clientes son bastante pobres, y no tiene ninguna garantía real de que se pueda llamar a ningún servicio desde ningún cliente.

La API web generalmente se realiza como HTTP / REST, nada está definido, la salida puede ser, por ejemplo. JSON / XML, la entrada puede ser XML / JSON / o datos sin formato. No hay estándares para nada => no hay llamadas y descubrimiento automáticos. Puede proporcionar alguna descripción en un archivo de texto o PDF, puede devolver los datos en Windows-1250 en lugar de Unicode, etc. Para describir el estándar, sería un folleto de 2 páginas con información simple y definirá todo lo demás.

Web está cambiando hacia API web / REST. Los servicios web no son realmente mejores que la API web. Muy complicado de desarrollar y consumen muchos más recursos (ancho de banda y RAM) ... y debido a todas las conversiones de datos (SOLICITUD-> XML-> DATOS-> RESPUESTA-> XML-> VALIDACIÓN-> CONVERSIÓN-> DATOS) son muy lento.

P.ej. En WebAPI puede empaquetar los datos, enviarlos comprimidos y descomprimir + desempaquetar en el cliente. En SOAP solo puedes comprimir la solicitud HTML.

Slawek
fuente
1
gracias @Slawek, lo explicaste mejor ... y gracias por el ejemplo también ...
Harish Kurup
2
En realidad, escucho que las personas se refieren a SOAP y REST como "servicios web". Sin embargo, la API web tiende a ser REST.
Ben Thurley
@Slawek, la forma en que lo dijiste 2000 páginas versus un par de páginas, explica en sí mismo la complejidad reducida. Buena manera de decirlo simplemente ...
Jaqen H'ghar
20

Un servicio web permite comunicaciones de máquina a máquina a través de HTTP. Una API web es un subconjunto de servicios web que utilizan convenciones REST (Resumiendo el artículo de Wikipedia ). Los conceptos definitivamente se superponen. Creo que todavía hay un enlace en la mente del servicio web de la mayoría de las personas -> SOAP / XML-RPC que puede confundir innecesariamente las cosas.

Al final, tendrás que hacer algunas preguntas para aclarar lo que significan las personas. No todos hacen una distinción o usan los términos indistintamente.

Berin Loritsch
fuente
Gracias @Berin Loritsch, sí, es cierto, causa confusión entre API y WS ..
Harish Kurup
6

Los servicios web son una arquitectura y un enfoque definidos para un dominio problemático según lo establecido por el W3C .

Los servicios web proporcionan un medio estándar de interoperabilidad entre diferentes aplicaciones de software, que se ejecutan en una variedad de plataformas y / o marcos

Web API es un concepto y resume los medios sobre cómo se implementa el concepto.

En términos simples ... la API web es para motor mientras que WS es para BMW N53 .

Aaron McIver
fuente