Vez em quando preciso configurar alguns serviços criados em C# em ambiente de homologação ou mesmo produção e em alguns casos estes serviços acabam possuindo dependência de um ou mais serviços para que possam funcionar. Se você chegou até aqui certamente esta pode ser a sua dificuldade.
Configurar a dependência para um serviço é relativamente simples e você precisa apenas executar algumas instruções de linha de comando no Windows. A dica a seguir está independente da linguagem de programação utilizada para implementar o serviço.
Vou usar como exemplo um caso prático que já tive de fazer. Tenho um serviço que implementa um client MQTT e este depende do Broker MQTT e ambos estão sendo executados dentro do mesmo ambiente. A título de exemplo vou chamar o serviço client de “Cliente MQTT” e o Broker de “Servidor MQTT”. Para configurar a dependência devemos executar a seguinte instrução:
sc config “Cliente MQTT” depend= “Servidor MQTT”
Você só precisa usar aspas duplas nos casos em que o nome do serviço tiver espaços. Com esta configuração, o serviço “Cliente MQTT” não será iniciado até que o serviço “Servidor MQTT” esteja iniciado. Se o serviço “Servidor MQTT” for interrompido, o serviço “Cliente MQTT” será interrompido automaticamente.
Para visualizar as dependências configuradas para um serviço podemos usar a seguinte instrução:
sc qc “Cliente MQTT”
Neste caso listaremos as dependências do serviço “Cliente MQTT”.
É importante saber que ao configurar uma dependência, o serviço perderá qualquer configuração de dependência anterior que tenha sido configurada. Para remover todas as dependência utilize a seguinte instrução:
sc config “Cliente MQTT” depend= /
Na instrução acima estamos removendo todas as dependências configuradas para o serviço “Cliente MQTT”.
Já ia me esquecendo, é muito comum ocorrer mais de uma dependência para um mesmo serviço. Neste caso basta separar cada dependência com uma “/”. Por exemplo: Service1/Service2/”Service 3″.
Com esta dica você poderá evitar vários problemas e quem sabe até algumas linhas de código.