Sem estado - Não há memória (estado) mantida pelo programa
Com estado - o programa tem uma memória (estado)
Para ilustrar o conceito de estado, definirei uma função com monitoração de estado e outra sem estado
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;
}
Como outros já disseram, o http é inerentemente sem estado. Portanto, o estado deve ser incorporado aos seus aplicativos.
Imagine uma solicitação pela Web em que você tenha um navegador cliente se comunicando com um processo do servidor. Para manter o estado sobre o protocolo http sem estado, o navegador envia normalmente um identificador de sessão ao servidor em cada solicitação. Para cada solicitação, o servidor será "ah, é esse cara". As informações de estado podem ser pesquisadas na memória do servidor ou em um banco de dados com base nessa identificação de sessão.
Em um ambiente puramente sem estado, você não precisaria desse ID de sessão. Cada solicitação conteria todas as informações que o servidor precisaria processar. Mas muitos aplicativos precisam manter o estado para controlar se uma sessão está ou não autenticada para exibir determinado conteúdo ou para acompanhar o que um usuário está fazendo. Você não deseja enviar credenciais de usuário por fio para cada solicitação.