Automatizando a criação de NuGet Packages

Criar um NuGet Package é uma excelente maneira de distribuir nossos projetos e bibliotecas entre as diferentes aplicações que irão  consumi-los. Já apresentei um Codificando Livre explicando como criar o seu próprio servidor Nuget (http://live.codificando.net/2013/09/edicao-6-nuget-principais-recursos-e-funcionamento/).

A ideia deste post é mostrar como automatizar o processo de criação de um Nuget Package, utilizando um XMLde configuração, o nuspec file. Para isto, vamos começar entendendo que o NuGet.exe é um utilitário que possui diversos comandos para o gerenciamento de nossos packages, comandos como adicionar um package, listar, remover, etc (http://docs.nuget.org/docs/reference/command-line-reference).

Continue reading

MongoRepository

Recentemente estava desenvolvendo uma aplicação que logava a exibição de certos tipos de publicidade e intervenção para os usuários, como infraestrutura de banco de dado, optei por usar o MongoDB, para aceso a dados, utilizei um projeto que já era utilizado em outras aplicações da empresa, o MongoRepository, que é uma biblioteca que implementa o padrão Repository em cima do driver oficial para C# do MongoDB.

Continue reading

The Developer Conference: Quem derrubou o meu site?

Pessoal, abaixo segue o conteúdo que apresentei com o Alexandre Tarifa no The Developer Conference 2014

“O cenário de aplicações Web apresenta um novo desafio a cada dia… no Brasil já atingimos 100 milhões de usuários com acesso a internet. E se seu projeto vira um sucesso e 1% dessas pessoas resolvem acessar ao mesmo tempo a sua aplicação ASP.NET? Nesta apresentação, mostraremos técnicas e recursos para que sua aplicação suporte um grande volume de usuários e que você também identifique os gargalos e pontos críticos de suas aplicações.” by @AlexandreTarifa Continue reading

Testes em C# com internal, private e protected (modificadores de acesso)

O uso de modificadores de acesso é extremamente importante para isolar e garantir a separação, organização e uso correto de nossas classes, métodos ou propriedades.

No C# existem diferentes modificadores de acesso:

  • public: acesso irrestrito.
  • protected: o acesso é limitado a classe ou a tipos que derivem da mesma classe.
  • internal: o acesso é limitado ao assembly.
  • protected internal: o acesso é limitado ao assembly, a própria classe ou a tipos derivados dela.
  • private: o acesso é limitado a própria classe.

Com isso, é muito comum em cenários de implementação de testes ter que acessar alguns objetos que estão protegidos, ou inacessíveis de acordo com os modificadores de acesso. Continue reading

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

Test Mode Values para o Microsoft Advertising SDK – Windows 8 (publicidades de teste)

Com o Windows 8 a Microsoft trouxe diversas linguagens de desenvolvimento e um crescente Market Place de aplicações, onde é possível um desenvolvedor criar suas aplicações e distribui-las, entre a formas de rentabilizar as aplicações está a publicidade. Em aplicações para Windows 8 existe uma forma extremamente simples de implementar publicidade, parta isso precisaremos fazer download do Microsoft Advertising SDK, além de criar uma conta no pubCenter, onde é possível gerenciar as aplicações e posições de publicidade.

 

Continue reading

Cache + .NET: Sistemas de Cache Distribuído

Neste terceiro post da série de Cache + .NET vou abordar sistemas de cache distribuído, um conceito muito importante em cenários de grande escala e muita concorrência. É muito importante testar e utilizar sistemas de cache distribuído quando o uso e cenário fizer sentido, isso varia muito do perfil e tamanho de sua aplicação e volumes de acesso.

Sistemas de Cache Distribuídos

Para este post vou caracterizar um sistema de cache distribuído como um sistema heterogêneo, que armazena objetos em memória, por determinado tempo, e com um ferramental de inserção e manutenção (purge, insert, get), executado em diversos servidores, e que se conecta com seus clientes ou demais partes do sistema utilizando TCP/IP (exemplo), proporcionando uma grande escalabilidade horizontal (adicionando mais servidores), redundância, resiliência, disponibilidade e performance.

Continue reading

Cache + .NET: OutputCache

Como eu disse em um post anterior (Cache + .NET: Cache de Objetos), existem diversas técnicas para conseguirmos melhorar a performance de nossas aplicações web. Seguindo a série de 4 posts que eu estou escrevendo sobre as diversas técnicas para utilizar Cache com .NET e aplicações Web, vou abordar temas como: Cache de Objetos, OutputCache, Sistemas de Cache Distribuídos e Cache Http.

Neste segundo post vou abordar o OutputCache.

O OutputCache é sem dúvida uma das melhores maneiras de aumentarmos a performance em nossas aplicações, ele vem evoluindo e existe desde o ASP.NET 1.1, com ele é possível manter em memória (ou em outro meio) uma versão gerada daquela página, user control, action ou partial, tendo diversos mecanismos de controles, como o tempo de duração do cache e a variação e versionamento de acordo com alguns parâmetros (querystring, paginas, ids, etc).

Continue reading

Dica: ASP.NET MVC Display Mode e SEO (Google)

ASP.NET MVC Display Mode

A partir da versão do ASP.NET MVC 4 existe um excelente recurso chamado Display Mode que consiste na aplicação selecionar a view adequada dependendo da versão do navegador ou dispositivo que está sendo utilizado.

No exemplo abaixo, em uma requisição feita em um dispositivo mobile, a view que a aplicação selecionará será a Index.Mobile.cshtml, já nas demais requisições, a view que será utilizada na requisição será a Index.cshtml. Continue reading

Utilizando a API do MSDeploy com C#

Recentemente estava estudando algumas maneiras de automatizar o sinc de web sites entre diversos servidores. Para este fim, o Web Deploy (MSDeploy) é uma excelente ferramenta, com ele é possível realizar diversas operações de deploy, sincronização entre Web Servers (IIS), e outras configurações.

Além de ser possível utilizar esta plataforma via script e ferramentas de gerenciamento, também é possível consumir e executar os diversos comandos da API do MSDeploy utilizando .NET.

Para isto, precisaremos referenciar a seguinte dll: Microsoft.Web.Deployment.dll, que geralmente fica na pasta: C:\Program Files\IIS\Microsoft Web Deploy V3\ Continue reading

Sinc de Aplicações no IIS com Web Deploy (msdeploy)

O Web Deploy 3.0 é uma plataforma extremamente poderosa que permite diversas opções de instalações e configurações de aplicativos Web. image Através do Visual Studio é possível configurar diversos perfis de publicação de nossos aplicativos, podemos configurar a publicação em diversos ambientes, como: homologação, stage e produção. Continue reading

Dica: Nightly Builds do ASP.NET via NuGet

Faz algum tempo que o ASP.NET e seus diversos projetos possuem o código fonte disponível publicamente, os repositórios podem ser encontrados em: http://aspnetwebstack.codeplex.com/SourceControl/latest. Com isso é possível baixar, clonar, compilar e testar os projetos e features que estão em desenvolvimento.

Se você quer testar as novas features em desenvolvimento, mais não que ter o trabalho de baixar os projetos, compilar e utilizar, o time do ASP.NET disponibiliza um servidor NuGet (http://www.myget.org/F/aspnetwebstacknightly/) com os “Nightly Builds” dos projetos, com ele configurado no Visual Studio, é possível atualizar a versão do ASP.NET MVC em um determinado projeto e utilizar as features que estão em desenvolvimento. Continue reading