¿Cuál es el patrón aceptado para una aplicación que puede ejecutarse como un servicio o como una aplicación de consola?

Tengo un proyecto que se implementa en producción como un servicio de Windows. Sin embargo, para fines de desarrollo local, sería útil ejecutarlo como una aplicación de consola. En este momento tengo una clase llamadaReportingHost que proporciona mi funcionalidad principal, y una clase llamada ReportingServiceHost que hereda deServiceBase y me permite ejecutar la aplicación como un servicio. También hay una clase de programa con un método principal que llamaServiceBase.Run en mi ReportingServiceHost.

Creo que necesito escribir unReportingConsoleHost Clase que me permite ejecutar la funcionalidad en una consola. Entonces necesito modificar miMain para reaccionar a un interruptor de línea de comando y elegir uno u otro. Estos son los dos bits con los que estoy teniendo problemas.

He echado un vistazo aesta e intentó usar ese código, pero mi aplicación sale de inmediato, no muestra una ventana de consola y no espera a que Ingrese antes de cerrar.

Parte del problema es que no tengo una comprensión profunda de cómo funcionan estas cosas. Lo que espero lograr es un patrón definitivo para dividir mi funcionalidad, mis dos formas diferentes de ejecutar esa funcionalidad y un método principal que elige una de estas formas en función de un argumento de línea de comandos.

Respuestas a la pregunta(4)

Su respuesta a la pregunta