Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

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.

posted on Thursday, August 11, 2005 11:26 PM

Feedback

# re: Console Application vs. Windows Services 8/12/2005 7:56 AM Joao Paulo Carreiro

Pela tua descricao, e aposto que ja sabes disto, Windows Service é mesmo o ideal. Afinal foi para isto que eles foram feitos, processos de "background" que devem correr 24/7.

Mas como disseste, Windows Services sao um pouco mais elaborados, mas nao creio que sejam tao complicados assim para poderem ser discartados.

# re: Console Application vs. Windows Services 8/15/2005 9:28 AM Renato Almeida

Grande Aéééééce...

Eu também vou no Windows Service já que a aplicação não requer interação com o usuário e etc.

Grande abraço

# re: Console Application vs. Windows Services 9/7/2005 11:36 AM Alfred Gary Myers Jr.

Eu optaria por um Windows Service.
Com isto você pode utilizar o MMC para controlá-lo e não precisaria de ter um usuário logado para executar o serviço.

Title  
Name  
Url
Box Code
Protected by FormShield
Comments