Foram quatro capítulos e meio, muitos conceitos e muita informação. Então achei de bom tom dar uma recapitulada, citando algumas referências para futuras pesquisas. Além disto, achei bom concentrar todos os links em um único lugar.
Índice
Criando um Monitor de diretórios - Parte 1 / 4
Criando um Executor de tarefas - Parte 2 / 4
Criando um Controller para o Windows Service - Parte 3 / 4
Testando a Controller - Parte 3.5 / 4
Criando o Windows Service - Parte 4 / 4
Ao longo do desenvolvimento da solução falamos dos seguintes assuntos:
FileSystemWatcher - Classe da API System.IO que permite monitorar um diretório e receber eventos quando um certo acontecimento ocorre, a criação de um arquivo com sufixo .txt, por exemplo. Mais detalhes na documentação da classe.
Testes unitários – Processo de testar isoladamente pequenas unidades de código. Em aplicações OO as unidades podem ser métodos, propriedades ou funções. A ferramenta de testes unitários utilizada na solução é o NUnit. A coluna Tools da 1ª edição da revista Mundo.Net também fala sobre o assunto.
Mock objects - Objetos que copiam a assinatura de uma classe e simulam seu comportamento de forma controlada. A idéia é conseguir testar o comportamento de um objeto garantindo que outros objetos com os quais ele se relaciona se comportarão de forma esperada. A ferramenta utilizada foi o Rhino Mocks. Também falei sobre o assunto na 2ª edição da revista Mundo.Net. Mais detalhes podem ser lidos nestes artigos:
Timer – Na solução utilizei a classe Timer, do namespace System.Timers. Todavia o .Net Framework oferece outra opções, para conhecê-las melhor, leia este artigo.
Inversion of Control (IoC) – Inverter a lógica de um programa, delegando o controle de seu código para outro módulo ou componente, normalmente um framework. Leia a definição no Wikipédia. Na 6ª edição da Mundo.Net (nas bancas), Hamilton explica melhor este conceito e também sobre o próximo assunto.
Dependency Injection containers – Frameworks de inversão de controle que se responsabilizam em instanciar as classes e controlar as dependências entre elas. No exemplo o container utilizado é o Windsor container. Além do artigo do Hamilton na última edição da Mundo.Net, na 5ª edição eu falei sobre estas ferramentas. Um outro artigo da MSDN Magazine sobre o mesmo assunto. Martin Fowler também tem um artigo sobre estes conceitos.
Código-fonte: Esta pasta contém um arquivo zip contendo o código-fonte em cada etapa do artigo.