Dica: C# Debugger Display Attributes

Desenvolver classes e métodos com nomes que realmente expressem o que aquela estrutura faz é responsabilidade do nosso dia a dia como desenvolvedor. Porém em alguns cenários o debug de um código pode ser facilitado com o uso de Debugger Display Attributes, com eles é possível configurar como o objeto será exibido durante o debug, para isso vamos utiliza a namespace System.Diagnostics.

DebuggerDisplayAttribute

Com este atributo é possível configurar tanto o nome que a classe aparecerá no debug, como acessar algumas propriedades do objeto.

Continue reading

Testes com Moq e Entity Framework Async (EF6)

O Entity Framework possui diversos recursos que facilitam o desenvolvimento, um dos recursos que considero muito importante é a possibilidade de realizar queries de maneira assíncrona (http://msdn.microsoft.com/en-us/data/jj819165.aspx). Escrevi um post mostrando algumas maneiras de implementar testes com Entity Framework (Testes com Moq e Entity Framework (EF6)).

A ideia deste post é mostrar como implementar testes em cenários de queries assíncronas, como no post anterior vou continuar utilizando Moq e terei como base o projeto que publiquei no GitHub: https://github.com/rodolfofadino/TestesComMoqEEntityFramework

Para começar, no LivroService.cs vou criar um método que chamará GetLivrosAtivosAsync, deixando a classe da seguinte maneira:

Continue reading

Implementando Rate Limit e Throttling com Web API usando WebApiThrottle

Com a diversificação de devices e plataformas (mobile, wearable, sites, etc) os dados de nossas aplicações, regras de negocio e ações estão sendo expostos utilizando API’s HTTP. O ASP.NET Web API é um excelente framework de desenvolvimento para serviços HTTP, possuindo recursos como roteamento model binding, serialização, segurança, hospedagem entre outros.

Uma necessidade bastante comum neste cenário é  de controle do uso destas APIs, como por exemplo o numero máximo de requests que um cliente pode realizar em um determinado range de tempo (rate limit, throttling). Para isto existem diversas maneiras de realizar este gerenciamento, como por exemplo proxies(que ficam como um

Continue reading

Testes com Moq e Entity Framework (EF6)

Recentemente estava implementando um projeto utilizando TDD, onde as principais regras de negócios se baseavam em consultas e filtros aplicados ao banco de dados, por exemplo: “retorna todos os descontos ativos (select * from descontos where status=1 and datafim>getdate()”.

Pensando em uma abordagem para garantir a implementação destas diversas regras, acabei optando por utilizar o Entity Framework (EF6) para o acesso aos dados e o Moq como framework de mock.

Moq

O Moq é um framework para mock extremamente poderoso, que ajuda a simular o comportamento e ações de objetos de uma maneira controlada. Com ele é possível simular o retorno de um método de um objeto, e ainda realizar diversos testes como quantidade de get ou set em uma determinada propriedade, ou até mesmo verificar quantas vezes determinado método do objeto foi chamado.

Continue reading

Script para deploy: WebSite e NBL com PowerShell

Recentemente tive que automatizar um processo de sincronizar arquivos entre alguns servidores, e gerenciar estes mesmos servidores no NBL (network load balance) durante esse processo de sinc, parando o servidor e colocando ele de volta no NBL após o sinc e algumas urls tenham sido acessadas para testar.

Pensando nisso, fiz um script rápido que usa o modulo do windows para NBL, que basicamente automatiza esse processo.

Continue reading

API do Facebook com C#– Facebook SDK for .NET

Integrar nossas aplicações com as diversas redes sociais aumentam o engajamento e trazem diversos benefícios, como o aumento no engajamento dos usuários, a facilidade do usuário se cadastrar e logar em nossas aplicações, o compartilhamento e divulgação de nossos aplicativos, entre outros benefícios.

O Facebook é sem dúvida uma das redes sociais de maior utilização no momento, ele disponibiliza toda uma plataforma com diversas APIs (Facebook APIs) para realizar a integração de nossas aplicações.

Continue reading