services informatica entre diferencia terminology stateful stateless

terminology - informatica - stateless vs stateful ejb



Stateless vs Stateful: podría usar información concreta (7)

Me interesan los artículos que contienen información concreta sobre el diseño sin estado y con estado en la programación. Estoy interesado porque quiero obtener más información al respecto, pero realmente no puedo encontrar ningún artículo bueno al respecto. He leído docenas de artículos en la web que discuten vagamente el tema, o están hablando de servidores web y sesiones, que también son "stateful vs stateless", pero me interesa el diseño de atributos stateless vs stateful en codificación . Ejemplo: He oído que las BL-classes son apátridas por diseño, clases de entidad (o al menos eso es lo que yo llamo, como Person (id, name, ...)) con estado, etc.

Creo que es importante saberlo, porque creo que si puedo entenderlo, puedo escribir un código mejor (por ejemplo, la granularidad en mente).

De todos modos, realmente corto, esto es lo que sé ''sobre stateful vs stateless:

Stateful (como WinForms): Almacena los datos para un uso posterior, pero limita la escalabilidad de una aplicación, ya que está limitada por límites de CPU o memoria.

Sin estado (como ASP.NET, aunque ASP intenta ser con estado con ViewStates): una vez completadas las acciones, los datos se transfieren y la instancia se devuelve al grupo de subprocesos (Amorphous).

Como puede ver, es información bastante vaga y limitada (y bastante centrada en la interacción del servidor), así que estaría muy agradecido si pudiera proporcionarme algunos datos más sabrosos de información :)


El adjetivo Stateful o Stateless se refiere solo al estado de la conversación, no está relacionado con el concepto de función que proporciona el mismo resultado para la misma entrada. De ser así, cualquier aplicación web dinámica (con una base de datos detrás) sería un servicio con estado, lo cual es obviamente falso. Con esto en mente si confío la tarea para mantener el estado conversacional en la tecnología subyacente (como una sesión de coockie o http) estoy implementando un servicio con estado, pero si toda la información necesaria (el contexto) se pasa como parámetros, '' m implementando un servicio sin estado. Cabe señalar que incluso si el parámetro pasado es un "identificador" del estado conversacional (por ejemplo, un ticket o un sessionId) todavía estamos operando bajo un servicio sin estado, porque la conversación es sin estado (el ticket se pasa continuamente entre el cliente y servidor), y son los dos extremos a ser, por así decirlo, "con estado".


El dinero transferido en línea de una cuenta a otra cuenta es con estado, porque la cuenta receving tiene información sobre el remitente. Entregando efectivo de una persona a otra persona, esta transacción no tiene sentido, porque una vez que se recibe el efectivo, la identidad del donante no está allí con el efectivo.


Hacemos Webapps Statefull anulando el comportamiento sin estado HTTP mediante el uso de objetos de sesión. Cuando usamos el estado de los objetos de sesión, se lleva a cabo, pero todavía utilizamos HTTP.


Sugiero que empiece con una question en que discute las ventajas de la programación sin estado. Esto es más en el contexto de la programación funcional, pero lo que leerá también se aplica en otros paradigmas de programación.

La programación sin estado está relacionada con la noción matemática de una función, que cuando se llama con los mismos argumentos, siempre devuelve los mismos resultados. Este es un concepto clave del paradigma de programación funcional y espero que pueda encontrar muchos artículos relevantes en esa área.

Otra área que podría investigar para obtener una mayor comprensión son los servicios web RESTful. Estos son por diseño "sin estado", en contraste con otras tecnologías web que intentan mantener el estado de alguna manera. (De hecho, lo que dices que ASP.NET es sin estado no es correcto: ASP.NET intenta mantener el estado usando ViewState y definitivamente se caracterizará por ser con estado. ASP.NET MVC por otro lado es una tecnología sin estado). Hay muchos lugares que discuten sobre la "apatridia" de los servicios web RESTful (como this blog), pero podría volver a comenzar con una question SO.


Tenía la misma duda sobre el diseño de clase stateless v / s apátrida e hice algunas investigaciones. Acabo de completar y mis hallazgos han sido publicados en mi blog

  • Las clases de entidad deben ser con estado
  • Las clases de ayudante / trabajador no deben ser con estado.

Una aplicación con estado es aquella que almacena información sobre lo que sucedió o cambió desde que comenzó a ejecutarse. Cualquier información pública acerca de en qué "modo" se encuentra, o cuántos registros se han procesado, o lo que sea, lo hace con estado.

Las aplicaciones sin estado no exponen ninguna de esa información. Dan la misma respuesta a la misma solicitud, función o llamada de método, todo el tiempo. HTTP es sin estado en su forma cruda: si haces un GET a una URL en particular, obtienes (teóricamente) la misma respuesta cada vez. La excepción, por supuesto, es cuando comenzamos a agregar statefulness en la parte superior, por ejemplo, con aplicaciones web ASP.NET :) Pero si piensas en un sitio web estático con solo archivos e imágenes HTML, sabrás a qué me refiero.


Apátrida significa que no hay memoria del pasado. Cada transacción se realiza como si se hiciera por primera vez.

Stateful significa que hay memoria del pasado. Las transacciones anteriores se recuerdan y pueden afectar la transacción actual.

Stateless: //The state is derived by what is passed into the function function int addOne(int number) { return number + 1; } Stateful: //The state is maintained by the function private int _number = 0; //initially zero function int addOne() { _number++; return _number; }

Consulte de: https://softwareengineering.stackexchange.com/questions/101337/whats-the-difference-between-stateful-and-stateless