Esto es algo así como una cuestión de hermanos this programmers question.¿Existen peligros no obvios al usar subprocesos en ASP.NET?
En pocas palabras, estamos buscando "retrotraer" adecuadamente el trabajo que ha estado respaldando las solicitudes de los usuarios en el fondo. La pregunta vinculada me ha dado muchas ideas si tomamos la ruta del servicio, pero realmente no ha proporcionado ningún argumento convincente sobre por qué, exactamente, deberíamos.
tengo que admitir que, para mí, la capacidad de hacer el equivalente moral de
WorkQueue.Push(delegate(object context) { ... });
es muy convincente, así que si es un poco difícil (en lugar de por sí inviable) estoy inclinado a ir con el enfoque de hilo de fondo.
Por lo tanto, los problemas con hilos de fondo yo sepa (en el contexto de un AppPool):
- Pueden morir en cualquier momento debido a la AppPool ser reciclados
- Solución: realizar un seguimiento cuando se está ejecutando una tarea, por lo que se puede volver a ejecutar * deberían necesitar un nuevo hilo
- El ThreadPool se utiliza para responder a las consultas HTTP entrantes, así que usar que puede morir de hambre IIS
- Solución: construir nuestro propio grupo de subprocesos, limitando también el número de subprocesos.
Mi pregunta es, lo que me falta, en todo caso? ¿Qué más puede salir malǂ con hilos de fondo en ASP.NET?
* La tarea en las preguntas ya es segura para volver a ejecutar, por lo que este no es un problema.
ǂ Supongamos que no estamos haciendo nada realmente estúpido, como lanzar excepciones en los hilos de fondo.
no son la mayoría de los 'peligros' de enhebrado no obvios ?? –
@Mitch - Estoy buscando los peculiares de ASP.NET. Esos peligros para los peatones se pueden ignorar por ahora, :) –