Ferramentas e frameworks gratuitos para desenvolvimento em .NET

ferramentas-01

Uma das mais populares plataformas de desenvolvimento da atualidade, o .NET Framework se destaca pelo excelente suporte no desenvolvimento de softwares voltados às mais variadas finalidades. Muito deste sucesso se deve à visão da Microsoft em procurar atender não apenas ao ambiente corporativo, como também oferecer uma experiência satisfatória a usuários finais em aplicações dos mais diversos tipos.

Embora o .NET Framework por si só conte com uma ampla gama de bibliotecas e componentes nativos, não são raros os casos de projetos que acabam por recorrer a alternativas complementares que atendam a uma demanda específica. Por mais que ainda exista um certo preconceito da parte de algumas organizações, muitos destes frameworks e ferramentas são soluções gratuitas e/ou de código aberto que contam com uma grande aceitação dentro da comunidade técnica. A própria Microsoft tem investido pesado em iniciativas open source, com projetos vitais da plataforma .NET como o ASP.NET 5, o .NET Core 5 e o .NET Compiler Plataform (Roslyn) hospedados no GitHub.

O objetivo deste artigo é apresentar, em linhas gerais e de forma categorizada, alguns exemplos de ferramentas e frameworks gratuitos que podem ser úteis no dia-a-dia de desenvolvedores .NET. Buscando fornecer respostas a contextos bem definidos, tais soluções têm por meta simplificar o trabalho de implementação, assim como promover sempre que possível a adoção de boas práticas.

NHibernate: persistência de dados

Alternativa ao Entity Framework, o NHibernate é um framework open source para mapeamento objeto-relacional (ORM) com uma boa aceitação no mercado. Estruturas de bancos de dados são mapeadas através de arquivos XML de configuração. É possível ainda o seu uso com o Fluent NHibernate, o qual nada mais é do que uma extensão contendo classes próprias que dispensam a escrita de arquivos de configuração e que faz uso de uma interface fluente (a vantagem desta abordagem está na capacidade de evitar erros de mapeamento em tempo de compilação, algo que seria impraticável utilizando-se XML).

Referências:

Unity Application Block: injeção de dependências

Container open source para injeção de dependências mantido pela Microsoft, o Unity representa uma excelente alternativa para a implementação de aplicações que prezem por um baixo acoplamento entre os seus diferentes componentes.

Referências:

NInject: injeção de dependências

Outra opção open source para injeção de dependências, o NInject é mais uma solução que disponibiliza recursos para a construções de aplicações formadas por componentes com baixa acoplamento e alta coesão.

Referências:

reCAPTCHA: implementando validações CAPTCHA em Web sites

Procurando coibir a ação de robôs projetados para proliferar mensagens de spam, muitos sites vêm empregando há algum tempo uma técnica conhecida como CAPTCHA (“Completely Automated Public Turing test to tell Computers and Humans Apart”). Basicamente, este mecanismo prevê a geração automática de uma imagem levemente distorcida e contendo uma pequena sequência de caracteres.

A distorção mencionada é proposital, já que embora não comprometa a leitura por uma pessoa, dificultará (ou mesmo inviabilizará) a ação da parte de um programa concebido para o envio de mensagens automáticas. Usuários que pretendam utilizar uma determinada funcionalidade irão digitar o código que consta na imagem empregada para validação, de modo que o acesso à função em questão somente será liberado se o valor fornecido coincidir exatamente com o dado associado ao CAPTCHA.

O serviço reCAPTCHA é uma opção gratuita disponibilizada pela Google, a fim de permitir o uso deste tipo de validação em aplicações Web. A integração de aplicações Web com o reCAPTCHA acontece por meio de plugins, sendo o ASP.NET uma das plataformas suportadas por esta alternativa.

Referências:

Open XML SDK: manipulação de arquivos do Word, Excel e Power Point

O advento do Microsoft Office 2007 foi acompanhado por uma grande novidade: um novo formato de arquivos adotado pelas diferentes aplicações deste pacote e conhecido como Open XML. Esta especificação segue como padrão nas versões mais recentes do pacote Office e, como não poderia deixar de ser diferente, a Microsoft disponibilizou meios para que aplicações .NET suportem o mesmo: no caso, o framework Open XML SDK. As funcionalidades presentes nesta biblioteca permitem que arquivos .xlsx, .docx e .pptx sejam geradas de maneira flexível, sem grandes dificuldades na manipulação de tais recursos.

Referências:

NPOI: manipulação de arquivos do Word e Excel

Além compatibilidade com o padrão Open XML (mais especificamente arquivos .docx e .xlsx), o framework NPOI dispõe ainda de recursos para a leitura e gravação de planilhas no formato .xls. Esta última característica pode ser particularmente útil, sobretudo em aplicações que manipulem arquivos de versões anteriores ao Excel 2007.

Referências:

Google Chart Tools

O Google Chart Tools é uma biblioteca JavaScript voltada à renderização de gráficos em aplicações Web, com este processo acontecendo a partir de dados no formato JSON. Trata-se de uma alternativa bem interessante para desenvolvedores .NET, sobretudo se considerado o suporte ao padrão JSON disponibilizado pelo ASP.NET MVC.

Quanto ao processo de renderização das imagens, o mecanismo de geração de gráficos do Google Chart Tools emprega as tecnologias HTML5 e SVG (sigla do inglês “Scalable Vector Graphics”). A ideia com isto é garantir, dentro do possível, a portabilidade na utilização de elementos visuais para os mais diversos browsers e plataformas.

Referências:

Fiddler: monitoramento de Web Services

Independente da escolha por tecnologias como WCF ou Web API, a necessidade de monitorar chamadas a Web Services representa um tipo de demanda bastante corriqueiro para desenvolvedores .NET. Levando em consideração tais aspectos, a empresa Telerik disponibilizou um utilário chamado Fiddler. Dentre as ações possibilitadas por essa ferramenta destacam-se:

  • O debugging/depuração de solicitações enviadas a um serviço;
  • Testes de segurança e performance;
  • A customização das funcionalidades de monitoramento, a partir da implementação de extensões baseadas no .NET Framework.

Referências:

GitHub for Windows: controlando projetos de software na Web

Comumente associado ao mundo open source, o GitHub é atualmente o principal repositório para hospedagem de projetos de software na Web. Conforme mencionado no início deste artigo, a própria Microsoft vem fazendo uso desta solução para controlar diversas iniciativas consideradas vitais dentro da plataforma .NET.

No caso específico do Visual Studio, é importante destacar ainda que esta IDE conta com meios (em suas versões mais recentes) para o controle de versão de projetos no GitHub. Embora se trate de um excelente suporte, uma outra alternativa para gerenciamento de soluções seria o GitHub for Windows. Este utilitário disponibiliza todas as funcionalidades básicas para gerenciamento de repositórios do GitHub, com as mesmas sendo acessadas através de uma interface gráfica concebida para simplificar o trabalho do desenvolvedor.

Referências:

GitHub for Windows – Site
https://windows.github.com/

GitHub for Windows 2.0: controlando projetos de software hospedados na Web
http://www.devmedia.com.br/github-for-windows-2-0-controlando-projetos-de-software-hospedados-na-web/31347

xUnit.net: testes automatizados na plataforma .NET

Considerado uma evolução do NUnit, o xUnit.net é um projeto open source para a implementação de testes unitários na plataforma .NET. É importante ressaltar que esta alternativa vem crescendo em popularidade dentro da comunidade técnica, com o próprio time de desenvolvimento do ASP.NET 5 utilizando a mesma na validação dos recursos desta nova plataforma Web.

Referências:

SpecFlow: testes baseados em user stories

Baseando-se na implementação de testes automatizados a partir de user stories, o framework SpecFlow viabiliza a adoção de conceitos de BDD (Behavior-Driven Development) em projetos desenvolvidos com o .NET Framework. Uma das grandes vantagens desta solução é a possibilidade de utilização de histórias estruturadas e inteligíveis para usuários comuns, sendo que as mesmas podem escritas em idiomas como o português.

Referências: 

Moq: simulando o comportamento de objetos em testes unitários

Mock objects são estruturas que procuram simular o comportamento de objetos, de forma a tornar possível validações que muitas vezes seriam impraticáveis num ambiente de testes. O Moq é um bom exemplo de framework que viabiliza o uso deste tipo de técnica em aplicações .NET, focando em aspectos como simplicidade e facilidade de uso.

Referências:

Conclusão

Procurei com este artigo apresentar, de forma resumida, algumas alternativas gratuitas e que julgo úteis para o desenvolvimento de soluções em .NET. Muito embora existam outras soluções para cada uma das demandas aqui discutidas, as opções mencionadas podem ser bem interessantes em organizações que não disponham de condições financeiras (ou mesmo vontade) para investir na aquisição de produtos específicos.

Renato Groffe

Consultor em TI, MTAC (Microsoft Technical Audience Contributor)
https://www.facebook.com/RenatoGroffeSW

  • Levy Furst Neto

    muito útil esse artigo, parabéns!