Qual é o padrão aceito para um aplicativo que pode ser executado como um serviço ou como um aplicativo de console

Eu tenho um projeto que é implantado para produção como um serviço do Windows. No entanto, para fins de desenvolvimento local, seria útil executá-lo como um aplicativo de console. No momento eu tenho uma classe chamadaReportingHost que fornece minha funcionalidade principal, e uma classe chamada ReportingServiceHost que herda deServiceBase e me permite executar o aplicativo como um serviço. Há também uma classe de programa com um método principal que chamaServiceBase.Run no meu ReportingServiceHost.

Eu acho que preciso escrever umReportingConsoleHost classe que me permite executar a funcionalidade em um console. Então eu preciso modificar meuMain para reagir a um interruptor de linha de comando e escolha um ou outro. Estes são os dois bits com os quais estou tendo problemas.

Eu dei uma olhadaisto e tentou usar esse código, mas meu aplicativo sai imediatamente, ele não mostra uma janela de console e não espera Enter antes de fechar.

Parte do problema é que eu não tenho um profundo entendimento de como essas coisas funcionam. um padrão definitivo para dividir minha funcionalidade, minhas duas maneiras diferentes de executar essa funcionalidade e um método principal que escolha uma dessas formas com base em um argumento de linha de comando é o que espero conseguir.

questionAnswers(4)

yourAnswerToTheQuestion