Quão bem o WCF será dimensionado para um grande número de usuários clientes?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Alguém tem alguma experiência em como os serviços da Web criados com o WCF da Microsoft serão dimensionados para um grande número de usuários?

O nível em que estou pensando está na região de mais de 1.000 usuários clientes conectando-se a uma coleção de serviços WCF que fornecem a lógica de negócios para nosso aplicativo, e estes se comunicam com um banco de dados - semelhante a uma arquitetura tradicional de 3 camadas.

Há alguma pegadinha específica que tenha diminuído o desempenho ou alguma lição de design aprendida que tenha permitido esse nível de escalabilidade?

Foi útil?

Solução

Para garantir que seu aplicativo WCF possa ser dimensionado para o nível desejado, acho que talvez você precise ajustar seu pensamento sobre as estatísticas que seus serviços devem atender.

Você mencionou atender "mais de 1.000 usuários clientes", mas para avaliar se seus serviços podem funcionar nesse nível, você também precisará ter alguns números de uso estimados, que o ajudarão a calcular algumas estatísticas mais simples, como o número de solicitações por segundo do seu aplicativo precisa lidar.

Tendo acabado de trabalhar em um projeto WCF, conseguimos obter 400 solicitações por segundo em nosso hardware de teste, o que, combinado com nosso padrão de uso esperado de cada usuário fazendo 300 solicitações por dia, indicou que poderíamos lidar com uma média de 100.000 usuários por dia (assumindo um gráfico de uso plano ao longo do dia).

Além disso, como é bastante comum tornar o código de serviço WCF sem estado, é muito fácil expandir o código WCF real adicionando caixas adicionais, o que significa que o desempenho geral do seu sistema tem muito mais probabilidade de ser limitado pela sua lógica de negócios e camada de persistência do que no WCF.

Outras dicas

Provavelmente, as quatro maiores coisas que você pode começar a observar primeiro (além de apenas ter um bom código de serviço) são itens relacionados a:

  • Ligações - algumas ligações e os protocolos em que são executados são mais rápidos que outros, o tcp será mais rápido do que qualquer uma das ligações http
  • Modo de instância - isso determina como suas classes são alocadas em relação aos chamadores de sessão
  • Operações unidirecionais e bidirecionais - se uma resposta não for necessária para o cliente, faça uma resposta unilateral
  • Estrangulamento - Máximo de sessões / chamadas e instâncias simultâneas

Eles projetaram o WCF para ser seguro por padrão, portanto os padrões são muito limitantes.

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