Por que é uma programação ruim usar um serviço da web com estado e por que isso seria permitido?

StackOverflow https://stackoverflow.com/questions/988819

  •  13-09-2019
  •  | 
  •  

Pergunta

Tenho necessidade de um serviço da Web com estado em nossa organização. No entanto, em todos os lugares que leio on -line diz que a construção de um serviço da Web com estado é uma programação ruim, mas nada diz o porquê. Acho que não entendo o que há tanto nisso. Eu também não entendo por que eles dariam um trabalho para permitir que você tenha estado em um serviço da web.

Então, acho que minha pergunta é: por que é uma programação ruim usar um serviço da Web com estado e por que isso seria permitido?

Foi útil?

Solução

Todo o objetivo de um serviço da Web é fornecer uma peça de funcionalidade em uma transação de uma maneira altamente escalável. Isso significa manter as coisas simples e atômicas.

Quando você precisa fazer várias chamadas para executar a operação, você tem um grande potencial de deixar transações penduradas. O cliente está voltando? Eles estão feitos? Quanto tempo a transação deve permanecer aberta? Eles travaram? Como deve ser tratada reversão?

As respostas a essas perguntas podem ter um impacto radical nos recursos necessários para executar seu serviço. É por isso que todo mundo recomenda fazer tudo de uma só vez.

Outras dicas

Aqui estão algumas razões pelas quais consigo pensar:

  1. O custo de manutenção do estado terá que ser apenas do lado do servidor - os consumidores de serviço raramente são navegadores da Web, por isso não têm cookies. Isso reduz o desempenho do servidor e aumenta sua complexidade de design.

  2. Um consumidor de serviço é um programa inteligente, em vez de um navegador idiota. Como tal, o programa (quase sempre) manterá seu próprio estado. Em outras palavras, quando você fornece um serviço, seu consumidor solicitará com precisão os dados que deseja. Manter o estado no servidor se torna obsoleto e desnecessário.

  3. Transações - Um serviço é um ponto pendurado no seu sistema, porque seus clientes são principalmente inteligentes e decidem quando informá -lo sobre as mudanças em seu estado. Isso significa que, se você manter o estado, talvez precise esperar entre chamadas de serviço para concluir uma operação transacional. E não há absolutamente nenhuma garantia de que o cliente jamais fará com que a próxima chamada de serviço.

Existem muitas razões, mas essas são as que eu consigo pensar no topo da minha cabeça :)

Eu acho que é um tipo de mito

Se o Google pode tornar seu aplicativo Web com estado escalável, por que não podemos escalar um serviço da Web com estado. É tudo sobre o servidor de aplicativos que reduz a escalabilidade.

Mesmo com um site ou serviço da web, o objetivo final é servir melhor. Se um "Stateful" é para melhorar seu serviço, não hesite em ir com isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top