Pregunta

¿Alguien tiene alguna experiencia sobre qué tan bien se ampliarán los servicios web creados con WCF de Microsoft a una gran cantidad de usuarios?

El nivel en el que estoy pensando es en la región de más de 1000 usuarios de clientes que se conectan a una colección de servicios WCF que proporcionan la lógica empresarial para nuestra aplicación, y estos se comunican con una base de datos, similar a una arquitectura tradicional de 3 niveles.

¿Hay algún problema particular que haya ralentizado el rendimiento o alguna lección de diseño aprendida que haya permitido este nivel de escalabilidad?

¿Fue útil?

Solución

Para garantizar que su aplicación WCF pueda escalar al nivel deseado, creo que es posible que deba modificar su forma de pensar sobre las estadísticas que deben cumplir sus servicios.

Usted menciona brindar servicio a "más de 1000 usuarios de clientes", pero para evaluar si sus servicios pueden funcionar a ese nivel, también necesitará tener algunas cifras de uso estimadas, que lo ayudarán a calcular algunas estadísticas más simples, como la cantidad de solicitudes por segundo de su aplicación. necesita manejar.

Después de terminar de trabajar en un proyecto WCF, logramos obtener 400 solicitudes por segundo en nuestro hardware de prueba, lo que combinado con nuestro patrón de uso esperado de que cada usuario realice 300 solicitudes por día indicó que podríamos manejar un promedio de 100.000 usuarios por día (asumiendo un gráfico de uso plano a lo largo del día).

Además, dado que es bastante común hacer que el código de servicio WCF sea sin estado, es bastante fácil escalar el código WCF real agregando cuadros adicionales, lo que significa que es mucho más probable que el rendimiento general de su sistema esté limitado por su lógica de negocios y capa de persistencia que por WCF.

Otros consejos

Probablemente las 4 cosas más importantes que puede empezar a considerar primero (además de tener un buen código de servicio) son elementos relacionados con:

  • Fijaciones - algunos enlaces y los protocolos que ejecutan son más rápidos que otros, tcp será más rápido que cualquiera de los enlaces http
  • Modo de instancia - esto determina cómo se asignan sus clases frente a las personas que llaman a la sesión
  • Operaciones unidireccionales y bidireccionales - si no es necesaria una respuesta al cliente, entonces hazlo unidireccional
  • estrangulamiento - Sesiones máximas/llamadas e instancias simultáneas

Diseñaron WCF para que fuera seguro de forma predeterminada, por lo que los valores predeterminados son muy limitantes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top