Console Application vs. Windows Services


Estamos prestes a automatizar um serviço de envio e recebimento de arquivos para um dos clientes da empresa onde trabalho. Essa automação consistirá em enviar um arquivo contendo uma relação de documentos para serem cadastrados na base de dados interna.

Existe um serviço de terceiro de faz o papel intermediário, ou seja, é um serviço (client (feito em Java)) que fica instalado em uma máquina qualquer e, dentro deste fazemos um agendamento de quanto em quanto tempo queremos que ele corra e assim, ele vai até um servidor, recupera o arquivo com a relação de documentos e deposita em um diretório local na máquina (em nossa empresa) em que o mesmo está instalado/configurado.

Meu papel entra agora, ou seja, teremos que criar algo para também de tempo em tempo ficar verificando se existe ou não um novo arquivo neste diretório e, caso existir, tenho que consistí-lo e consequentemente move-lo para uma outra máquina que irá processar este arquivo e fazer todas as entradas dentro da DB. Bem, não se tem muito segredo em como “ouvir” um determinado diretório do disco, ou seja, podemos, por exemplo, utilizar a classe FileSystemWatcher para alcançarmos isso.

A questão é como “hospedar” isso, ou seja, que tipo de aplicação desenvolver para alcançar essa funcionalidade: Windows Service ou uma Console Application? Com um Windows Service, poderia no evento OnStart deste iniciar o Watcher para “escutar” o diretório. Poderia também criar uma Thread que corra de X em X tempo executar; e quando ela executar, utilizaria o método GetFiles da classe Directory para verificar a existencia de arquivos.

É também perfeitamente possível criar uma Console Application que, também poderia utilizar o FileSystemWatcher para “escutar” o diretório e processar os arquivos.

A guerra entre estes dois tipos de aplicação é qual é melhor usar. Windows Services tem um ponto positivo, onde podemos definir para ele iniciar sozinho quando o sistema operacional “subir”, mas requer a instalação através do utilitário installutil.exe e também exige que o desenvolvedor conheça um pouco mais sobre essa tecnologia. Já as Console Applications não necessitam de uma instalação (claro, o .NET Framework deve existir onde vai correr a aplicação), mas seu ponto negativo é que necessitam de uma intervenção humana para inicializá-la.

Podemos de certa forma transformar uma Console Application com as mesmas características de um Windows Services, ou seja, no Iniciar do Windows poderia definí-la para inicializá-la automaticamente e como a mesma ficará “eternamente ouvindo” o diretório pré-definido, conseguiria alcançar o meu ideal. Além disso, ainda poderia utilizar o agendador do Windows para estipular quando e de quanto em quanto tempo quero que ele execute.

Pois bem, como essa automatização ainda estamos iniciando e estudando o processo, vai dar analisada para saber qual deles escolher e, também se alguém tiver alguma solução e/ou comentário, deixe-me saber por favor.

Publicidade

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s