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

Integração Contínua com Team Foundation Server (deploy de um WebSite ASP.NET MVC + IIS)

Recentemente precisei automatizar o deploy de uma aplicação web para dois ambientes diferentes, basicamente qualquer commit para a branch Master, deveria fazer um publish para o ambiente de stage, e qualquer commit para branch Integration, deveria fazer um publish para o ambiente de homologação.

O Team Foundation Server oferece uma infraestrutura de automatização de builds, que entre as principais funções estão a execução de builds, scripts e testes de maneira agendada, manual e acionada através de algum trigger (como por exemplo um checkin ou commit). Essa solução de ALM oferece todo o conjunto de rastreamento do processo.

Continue reading

O Melhor da Campus Party BR 2014

Na semana passada (27/01–01/02) participei da Campus Party 2014, um evento singular, que traz diversos conteúdos e um ambiente muito legal. Com cerca de 8 mil pessoas, área de camping, jogos, batalhas de robôs, palestras e workshops acontecendo o tempo todo. Realmente um ambiente caótico 🙂

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

IIS – Url Rewrite: sitedemo.com.br para www.sitedemo.com.br – Canonical domain name

O Url Rewrite é um módulo para o IIS extremamente útil e poderoso, com ele é possível realizar diversas configurações e implementar diversas regras de redirecionamento e rewrite das urls. Neste post vou mostrar como criar uma regra de redirecionamento em nossos sites, que tem como objetivo redirecionar uma requisição feita para sitedemo.com.br para o destino de www.sitedemo.com.br , e com isso deixar o site acessível somente em um domínio.

Continue reading

Cache + .NET: Cache HTTP (aumente a performance de seu site)

O Cache HTTP é um recurso extremamente importante e disponível em qualquer plataforma de desenvolvimento web, neste quarto post da série de Cache + .NET vou apresentar o funcionamento do Cache HTTP e as principais maneiras de implementa-lo utilizando .NET.

Front End (80-20)

Para falar sobre Cache HTTP, vou começar com uma frase sobre performance de front end, de um dos maiores especialitas em web performance.image

“…somente 10-20% do tempo total do carregamento de uma página é gasto para receber o HTML do servidor para o navegador. Você precisa focar nos outros 80-90% se você quiser tornar suas páginas visivelmente mais rápidas…”

(Steve SoudersHigh Performance Web Sites)

Neste livro Steve Souders explica 14 regras, que são boas práticas para aumentarmos a performance de nossos sites, configurar e utilizar o Cache HTTP nos ajuda a evitar downloads de recursos e conexões desnecessários com o servidor. 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

Configurando Header de Expiração em Sites no Azure

Existem diversas técnicas para otimizar a performance de um site, em um livro chamado High Performance Web Sites, Steve Souders mostra que do tempo total de carregamento de uma página, cerca de 10% a 20% são gastos no processamento “server side” do html e os outros 80% a 90% do tempo de carregamento são gastos após o carregamento do html, em atividades como carregamento de css, js, imagens, renderização e execução dos scripts e outras atividades da renderização da página. Com isso, neste livro são abordadas 14 regras para melhorar a performance do front-end.

A 3ª regra deste livro consiste em adicionar um cabeçalho de expiração do recurso que será utilizado pela nossa página, utilizando dois tipos de headers (“Expires” e “Cache-Control”) podemos fazer com que um recurso(css, js, html, img) não tenha que ser baixado novamente do servidor para o navegador do cliente, melhorando assim a performance e diminuindo requisições ao servidor. 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