A Microsoft Open Technologies, braço da empresa que trabalha com tecnologias abertas, anunciou recentemente o lançamento do Tx, um projeto de código aberto que pode ajudar a depuração utilizando Logs e Traces, e construir sistemas para monitoramento de eventos e alerta em tempo real.
Algumas funcionalidades interessantes:
- Permite o uso de LINQ em fontes de eventos do Windows;
- Habilita o uso de Reactive Extensions em fontes de eventos reais com suporte para sequência de eventos multiplexados (uma única sequência contendo eventos de diferentes tipos em ordem de ocorrência);
- É possível fornecer consultas únicas através de diferentes fontes, com a mesma API tanto para eventos em tempo real quanto para eventos históricos;
- Em logs históricos, múltiplas consultas podem ser executadas em uma leitura - por exemplo, contar todos os eventos de "Warning", comparar eventos "Begin" e "End" e calcular a duração média de cada atividade.
Também é possível usar o LINQPad para analisar ou construir aplicações .NET de monitoramento. No LINQPad, a experiência do Tx é como se todos os eventos estivessem em um banco de dados.
O lançamento fornece quatro pacotes diferentes para o NuGet:
- Tx.Core - componentes comuns sem um formato de rastreamento especifico;
- Tx.Windows - Suporte para o rastreamento de eventos (Event Tracing) no Windows, Event logs, e contradores de performance de arquivos e uma API de contador em tempo real, logs texto do IIS no formato W3C;
- Tx.SqlServer - Eventos estendidos do SQL Server;
- Tx.All - Um pacote de conveniência, com todos os listados acima.
Note que a Microsoft também aconselha quando não usar o Tx:
- Quando não há nenhum tipo de fornecimento de dados em tempo real envolvido e os dados já estão em memória ou em um único arquivo de fácil leitura, o guia é usar Linq-To-Objects ao invés do Tx;
- Quando existe alimentação de dados em tempo real, mas cada fonte ou arquivo contém apenas um tipo de evento, use apenas as Reactive Extensions.
A ferramenta tem sido utilizada internamente na Microsoft, nas equipes do WCF e Service Bus e agora está disponível para todos os desenvolvedores .NET usarem em seus projetos. Para mais informações confira a documentação.