Visual Studio 2015: integração nativa com npm, Grunt e Bower

Ontem foi disponibilizado para download a nova versão do Visual Studio 2015 Preview, existem diversas novidades incríveis como: .NET Open Source, CrossPlataform e Visual Studio Community. Além de isto ser uma revolução no ecossistema de desenvolvimento web, o time responsável pelas “web tools” do Visual Studio também fez um excelente movimento, trazendo nativamente a integração com as ferramentas padrões de mercado para desenvolvimento web/frontend. A idéia deste post é mostrar um pouco como ficaram estas features, e se você é um desenvolvedor web, e ainda não conhece o npm (Node Package Manager), Grunt e Bower, corra atrás para aprender como elas funcionam, pois estas tecnologias já são o presente do mercado de desenvolvimento web.

Ferramentas envolvidas

image

  • node.js: plataforma JavaScript construída sobre o runtime do Chrome, tem como objetivo o rápido desenvolvimento, performance e escalabilidade.
  • npm (Node Package Manager): o npm é um gerenciado de pacotes, que utiliza o node.js como plataforma para execução, tanto o Bower quanto o Grunt utilizam ele para gerenciar os pacotes que eles instalarão
  • Bower: gerenciador de pacotes para web/frontend, como bibliotecas js e css, notem que o projeto default do ASP.NET MVC 6 deixará de utilizar o NuGet package para pacotes de frontend (jquery por exemplo)
  • Grunt: task runner baseado em JavaScript, é utilizado para automatizar rotinas como geração de .min e outras automatizações (também é possível utilizar o Gump)

Continue reading

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

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

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

Microsoft MVP (Most Valuable Professional)

Não tenho palavras para descrever a sensação de ter recebido hoje um e-mail da Microsoft com a nomeação para o título de Microsoft MVP (Most Valuable Professional) em Visual C#, ainda estou tentando assimilar.

Estava pensando em como foram estes 5 anos na carreira de desenvolvedor, lembrei de como compartilhar conhecimento (em posts, palestras, vídeos, etc) é extremamente importante na construção do conhecimento, lembrei o quanto aprendi lendo e assistindo materiais de pessoas como: Alexandre Tarifa, Diego Nogare, Facunte, Cleber Dantas, Evilázaro, Taurã Figueiredo, Israel Aece, Giovanni Bassi, Alfred Myers, Helio Sá, Fabio Hara, entre muitos outros.

Além disso, lembrei que uma das primeiras coisas que fiz, antes mesmo de começar a trabalhar foi criar um blog (eu programei ele, kkk) e decidi escrever nele sobre cada coisa que tive que aprender para trabalhar. Outro momento que lembrei foi quando o Alexandre Tarifa me convidou para apresentar uma palestra em um evento do Codificando.NET (4 anos atrás), era uma palestra sobre como integrar com Redes Sociais usando C# e ASP.NET (Twitter, Flickr e Facebook).

Mas do que aprender lendo e consumindo conteúdo, hoje, compartilhar conhecimento é a minha principal forma de aprendizado.

A ideia deste post também é agradecer algumas pessoas que sempre me ajudaram na carreira e na vida como um todo, em especial agradecer ao Alexandre Tarifa e o Diego Nogare por tudos estes anos de trabalho em conjunto, toda a confiança e as oportunidades. Agradecer todos os MVPs que me indicaram em especial ao Luan Moreno e ao Alexandre Chohfi. E também a MVP Lead Fernanda Saraiva, por confiar no meu trabalho 🙂

https://mvp.microsoft.com/en-us/default.aspx

Abs

Rodolfo

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

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: 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