Pregunta

Tengo un servicio de WCF que se utiliza de forma sincrónica, pero su ConcurrencyMode se establece en el valor ConcurrencyMode.Multiple, porque el servicio no tiene estado de hecho. La cantidad de sobrecarga impone este modo? ¿Tiene sentido para cambiar el modo a ConcurrencyMode.Single?

¿Fue útil?

Solución

En realidad no impone ningún tipo de gastos - aparte del hecho de que la instancia de servicio único debe manejar el acceso concurrente, que tiene que ser 200% seguro de rosca -. Y eso es bastante complicado de programación

El cambio a ConcurrencyMode.Single hace que la programación sea más fácil - no hay más preocupaciones acerca de la concurrencia en la clase de servicio. Pero serializa todas las solicitudes -. Sólo uno a la vez puede ser manipulado y por lo tanto se convertirá en un cuello de botella rápidamente

Usted menciona su servicio no tiene estado - ¿por qué no hacer que use el general estuvo de acuerdo en las mejores prácticas - no es un producto único, pero un habitual "por llamada" clase de servicio. En ese modo, cada solicitud obtiene una nueva instancia nueva de su clase de servicio, no hay que lidiar acerca de la programación multihilo es necesario (todo el multihilo es manejado por el tiempo de ejecución de WCF), se obtiene el manejo simultáneo de múltiples peticiones - a mí, eso es sólo beneficios y no por los lados!

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