Dadas esas áreas, puedo dar una visión general, pero no puedo sacar sus conclusiones para usted. Hay dos áreas principales donde los dos protocolos difieren:
- Formato de mensaje
- Descubrimiento de servicio
El formato del mensaje es más fácil de entender. El paquete SOAP para solicitudes y respuestas es bastante pesado. Existe el sobre SOAP que contiene una sección de encabezado y cuerpo. El encabezado puede ser utilizado por varios filtros en la cadena de solicitud para realizar algún tipo de identificación, autorización, etc. Sin embargo, XML es costoso de analizar, lo que genera una cierta penalización en la escalabilidad de su sistema. Cuánto depende de la capa de procesamiento SOAP en su pila.
El descubrimiento de servicios es donde probablemente tendrá más contención. REST por su propia naturaleza proporciona puntos finales predecibles , y el contenido de la solicitud es una simple solicitud HTTP. El beneficio es que no hay gastos adicionales, y los usuarios finales pueden adivinar cómo hacer lo que necesitan una vez que entienden la estructura de URL de su sitio. Por supuesto, las personas ingenuas conscientes de la seguridad lo verán como una debilidad. Después de todo, con SOAP, debe consumir un WSDL para saber cuáles son los puntos finales. Por supuesto, con SOAP se le dio el formato de mensaje completo para que pueda realizar ataques más específicos.
Desglosado por las categorías que dio:
Seguridad
Ninguno de los dos es inherentemente más seguro que el otro. Use buenos principios de seguridad:
- Cifrar comunicaciones
- Asegúrese de autenticar y autorizar a los usuarios antes de procesar
- Buenos hábitos de codificación para evitar ataques directos.
- Y esa es solo la lista corta.
¡Recuerda la oscuridad! = Seguridad.
Actuación
Tanto el rendimiento sin procesar como la escalabilidad irán a REST debido a la solicitud que sigue a los protocolos HTTP simples. La mayoría de las pilas SOAP utilizan el análisis SAX (análisis basado en eventos) que mejora en gran medida la escalabilidad de las pilas SOAP, pero hay un impacto medible en la sobrecarga. SOAP tiene la sobrecarga de procesamiento HTTP normal además de la sobrecarga de análisis XML. REST solo tiene la sobrecarga de procesamiento HTTP.
Complejidad
Desde la perspectiva del sistema, REST gana. Hay menos piezas móviles, una cadena de solicitud más ágil, etc. Eso significa que es más fácil hacer confiable.
Desde la perspectiva del programador, SOAP puede ganar si el IDE o el marco que está utilizando le brinda un buen soporte. Esencialmente, con REST le corresponde a usted realizar el trabajo de preprocesamiento (autenticación / autorización / etc.), mientras que con SOAP se puede lograr mucho con una cadena de procesamiento conectable.
Mi preferencia
Me siento muy cómodo con las solicitudes HTTP y sé cómo funciona la web. Como resultado, el enfoque REST es más preferible para mí. Sin embargo, sé que algunos de mis clientes se sienten incómodos con eso. Han leído algunos artículos de la industria que denuncian la seguridad de REST frente a SOAP, etc. La conclusión es que ninguno de los enfoques garantiza la seguridad. Depende de usted asegurarse de que la aplicación sea tan segura como sea necesario. Obviamente, una aplicación web social no exige (o desea) tanta seguridad como un sistema bancario o gubernamental. Muchas pilas SOAP incluyen procesadores que puede conectar para proporcionar una apariencia de seguridad, pero aún es su responsabilidad buscarlos y ponerlos en su lugar.