Pregunta

Estoy depurando un servicio web ASMX que recibe " ráfagas " de peticiones. es decir, es probable que el servicio web reciba 100 solicitudes asíncronas en aproximadamente 1 o 2 segundos. Parece que cada solicitud tarda aproximadamente un segundo en procesarse (esto se espera y estoy de acuerdo con este rendimiento). Sin embargo, lo importante es que cada solicitud se trata de forma secuencial y no tiene lugar ningún procesamiento paralelo. No quiero ningún procesamiento de solicitud concurrente debido a los componentes externos llamados por el servicio web. ¿Hay alguna forma de forzar al servicio web a manejar solo cada respuesta secuencialmente?

He visto el atributo maxconnection en machine.config, pero esto parece funcionar solo para las conexiones salientes, donde, como deseo acelerar las conexiones entrantes.

Tenga en cuenta que refactorizar en WCF no es una opción en este momento.

Estamos utilizando IIS6 en Win2003.

¿Fue útil?

Solución

¿Quizás deberías estar poniendo en cola las solicitudes internamente y procesándolas una por una?

Puede hacer que los clientes consulten los resultados (si es que incluso los necesitan), pero obtendrías el canal secuencial que querías ...

Otros consejos

En IIS7 puede configurar un límite de conexiones permitidas a un sitio web. ¿Puedes usar IIS7?

Lo que he hecho en el pasado es simplemente poner una declaración de bloqueo alrededor de cualquier acceso al recurso externo que estaba usando. En mi caso, era un fragmento de código no administrado que decía ser seguro para subprocesos, pero que de hecho destruiría el montón de la biblioteca de tiempo de ejecución C si se accede desde más de un subproceso a la vez.

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