¿Múltiples instancias de la misma aplicación que un servicio de Windows?

Tengo una aplicación que administra el procesamiento pesado de mi proyecto y necesito convertirlo en un "Servicio de Windows". Necesito permitir correr múltiplesversiones instancias del procesamiento de la aplicación, lo que parece ser un requisito bastante normal.

Puedo ver al menos tres enfoques para hacer esto:

Cree un único directorio instalado (EXE, DLL, configuración) pero instale como múltipleServicios instancias de ello.Tener una solaServicios La instancia genera múltiples instancias de sí misma después del lanzamiento, a la Apache.Tener una solaServicios La instancia genera múltiples hilos que funcionan dentro del mismo espacio de proceso.

Mi intención era el enfoque # 1, pero seguí tropezando con las limitaciones, tanto en diseño como especialmente en documentación paraServicios:

Son parametrossiempre pasó aOnStart () ¿Por los mecanismos normales de Servicios en un sistema desatendido? Si es así, ¿cuándo / por qué?Pasando parámetros de tiempo de ejecución a través de laImageKey El registro parece un kludge, ¿hay algún mecanismo mejor?Tengo la aplicación para instalar / desinstalarse como un par de servicios ("XYZ # 1", "XYZ # 2", ...), usando elImageKey para darle un número de instancia de parámetro de línea de comando ("-x 1", "-x 2") pero me faltaba algo. Al intentar iniciar el servicio, fallaría con "El programa ejecutable en el que está configurado este servicio para ejecutarse no implementa el servicio.

Entonces, las preguntas:

¿Hay una descripción concisa de lo que sucede cuando se inicia un servicio, específicamente para aquellas situaciones en las queNombre del Servicio no está codificado (ver Q arriba).¿Alguien ha utilizado el enfoque # 1 con éxito? ¿Algún comentario?

NOTA: He dejado de lado el problema usando el enfoque # 3, así que no puedo justificar mucho tiempo para resolver esto. Pero pensé que alguien podría tener información sobre cómo implementar # 1, o buenas razones por las que no es una buena idea.

[Editar] Originalmente tuve una cuarta opción (Instalar múltiples copias de la aplicación en el disco duro.) pero lo quité porque solo se siente, um, hackish. Es por eso que dije "al menos tres enfoques".

Sin embargo, a menos que la aplicación se vuelva a compilar, debe establecer dinámicamente su ServiceName, por lo tanto, tiene la solución al tercer punto / problema anterior. Entonces, a menos que se necesite una instancia para alterar sus archivos de instalación, el # 1 debería funcionar bien conN Los archivos de configuración en el directorio y una entrada de registro que indica qué instancia debe usar.

Respuestas a la pregunta(3)

Su respuesta a la pregunta