web-services - test - motivos para ir al psicologo
Servicios web con estado frente a sin estado (3)
Estado es donde se esconden la mayoría de los errores.
Imagine una aplicación CRUD más compleja que tiene una arquitectura de tres niveles y se comunica a través de los servicios web. El cliente inicia una conversación con el servidor y hace algo parecido a un asistente. Para procesar el asistente, el cliente necesita comentarios dados por el servidor.
Comenzamos un debate sobre servicios web con estado o sin estado para este enfoque. Hice algunas investigaciones combinadas con mi propia experiencia, lo que me lleva a la pregunta que mencioné más adelante.
Servicios web sin estado con las siguientes propiedades (en nuestro caso):
+ high scalability
+ high availability
+ high speed
+ rapid testing
- bloated contract
- implementing more logic on server-side
Pero podemos tachar los dos primeros puntos, nuestra aplicación no necesita alta escalabilidad y disponibilidad.
Así que venimos al servicio web con estado. He leído un montón de blogs y publicaciones en foros y el punto más inventado para implementar un servicio web con estado fue:
+ simplifies contract (protocol)
- bad testing
- runs counter to the basic architecture of http
Pero, ¿casi todas las aplicaciones web no tienen estos puntos malos? Las aplicaciones web utilizan cookies, cadenas de consulta, identificadores de sesión y todo para evitar la apatridia de http.
Entonces, ¿por qué es tan malo para los servicios web?
He tenido buena suerte con los servicios web con estado. Se sienten un poco sucios porque la cosa de la sesión de cookies de agujero en la parte superior de HTTP es eso; pero, por otro lado, eran SOAP, por lo que sería un poco estúpido estar demasiado molesto por la belleza en ese punto.
Una cosa a tener en cuenta es la interoperabilidad: si está haciendo un servicio web con estado, sus clientes deberán respaldar la misma idea del estado en que se encuentra (generalmente las cookies). Pero de nuevo, funcionó bien para mí.
PD. Supongo que está en un contenedor que se encargará de hacer un seguimiento de las sesiones por usted.
Porque mantener el estado en un servicio web es difícil y si no es extremadamente cuidadoso y / o experimentado tarde o temprano, es posible que encuentre algunos errores muy difíciles de encontrar.