Archive for the ‘.Net’ Category.

Agora é multi plataforma!

Olá a todos,

Neste primeiro post de 2017 vou falar de algo que já está afetando a vida dos desenvolvedores: criar software multi plataforma! Há muito tempo se fala neste tipo de desenvolvimento e muito se prometeu com ferramentas e linguagens, algumas um tanto mirabolantes!

Me lembro de ter ido conhecer uma ferramenta Windows que havia sido portada para Linux e quando comecei a fazer perguntas sobre funcionalidades bem básicas a resposta foi:  “Bem, isto ainda não fizemos…”, e nem preciso dizer que instalar a tal ferramenta era coisa para alguns dias de muitos comandos em um sistema Linux. E o pior: nenhuma compatibilidade com o que já existia!

Muita coisa mudou deste então e muitas outras ferramentas e plataformas surgiram, algumas muito semelhantes a que descrevi e outras que nem existem mais!

Como desenvolvedores, e muitas vezes, empresários, é muito complicado ficar apostando em tecnologias que prometem muita coisa e que no final não entregam absolutamente nada!

Primeiro gostaria de falar com vocês sobre desenvolvimento mobile, então vamos imaginar um cenário em que você vai desenvolver uma app: primeiro você faz para Android, afinal é a plataforma líder, depois para iOS e talvez você pense no Windows Phone. Mas o grande problema sempre foi aproveitar o código, e isto nunca foi possível de verdade, porque cada plataforma tem uma linguagem e um jeito de fazer!

Eis que então temos algumas alternativas:

  • Apache Cordova, uma plataforma baseada em HTML+JS+CSS que promete entregar uma app em qualquer plataforma, e realmente ela consegue fazer isto de maneira muito satisfatória! O Visual Studio traz um conjunto de ferramentas para você trabalhar com Cordova que pode ser baixado neste link. Mas o problema é a performance, pois você está rodando uma aplicação com um browser embutido nela, um WebView, e isto pode te trazer alguns inconvenientes! 
  • Algumas outras ferramentas também surgiram com a promessa do desenvolvimento mobile multi plataforma, como: PhoneGap, MonoDroid e finalmente o Xamarin, que agora pertence a Microsoft.

Com Xamarin temos um desenvolvimento realmente muiti plataforma, com o mesmo código. Então podemos desenvolver em C# para Android, iOS e Windows Phone, usando uma única linguagem para todas as plataformas, desenvolvendo somente uma vez!

Mas alguns podem dizer, eu não gosto de Windows, eu uso Linux, uso Mac! E aí que vem a beleza da ferramenta, pois existem versões para Windows, Linux e Mac, usando o Xamarin Studio e mais recentemente o Visual Studio for Mac. Se você estiver a fim de aprender mais sobre Xamarin, recomendo o Monkey Nights, que é um hub de conteúdo sobre Xamarin!

Muito bem, mas o mundo não é so desenvolvimento Mobile, temos também Desktop e Web, como fica isto no mundo multi plataforma ?

Se você é um desenvolvedor Asp.Net e trabalha com C#, a boa notícia é que agora podemos desenvolver uma aplicação que roda no Windows (IIS) e no Linux (com diversos servidores web) e isto traz, uma quebra de paradigma para desenvolvedores acostumados com o mundo Windows: a famigerada LINHA DE COMANDO, isto mesmo, você terá que digitar muito comando e não pense que isto é ruim não! Veja, eu gosto muito da IDE do Visual Studio, acho realmente muito produtiva, talvez a mais produtiva do mercado, mas quando eu trabalho com projetos no Git, eu prefiro usar a linha de comando, sabe por quê, simples: eu tenho mais controle sobre o que está acontecendo e talvez a IDE ainda não tenha todos os comandos que eu preciso…

Entâo caro amigo desenvolvedor, se acostume a ver as telas abaixo:

image

SNAGHTML37ff22fb

Esta segunda tela é um terminal Linux para um servidor da empresa. E isto é bem interessante, já que até algum tempo atráz tudo era somente Windows, e agora temos um SQL Server rodando no Linux. Então tem dias que eu trabalho mais no Linux que no Windows!

Mas por quê eu estou usando Linux afinal de contas ? Simples, por quê eu estou desenvolvendo para web multi plataforma usando Asp.Net Core, estou usando C# e criando ferramentas que podem ser hopedadas em Windows ou Linux.

Então vamos ao contexto: a Microsoft vem trabalhando em uma nova versão do Asp.Net, que foi totalmente reescrito, que roda muito mais rapido que o atual e principalmente, é totalmente multi plataforma: Windows, Linux e Mac.

Mas não precisa arrancar todos os cabelos por causa do terminal do Linux, pois o Visual Studio 2015 já trabalha com Asp.Net Core, basta instalar as ferramentas deste link. E se você gosta de coisas novas, assim como eu, também pode usar o Visual Studio 2017 RC, lembrando que ainda está em beta.

Temos também uma ferramenta fantástica e multi plataforma, chamada Visual Studio Code, e esta ferramenta já é uma das mais utilizadas para desenvolvimento Javascript, pois é muito simples de trabalhar e conta com centenas de plugins que permitem a ela trabalhar com diversas linguagens! Eu já trabalhei com Arduino e Java no VS Code, veja alguns exemplos de linguagens:

image

Bom, eu falei tudo isto para enfatizar que existe uma nova Microsoft, que trabalha com Open Source (veja meus slides aqui) e que já é muiti plataforma, pois até Linux já existe dentro do seu Windows 10, se não acredita, veja este post aqui.

Então meu amigo desenvolvedor, é hora de quebrar paradigmas, de estudar Linux, de pensar diferente, pois o mundo é multi plataforma! Trabalhar com Windows, Linux, Mac, Visual Studio, VS Code, é o nosso dia a dia!!!

E viva a diversidade!

Abraços e até a próxima!
Carlos dos Santos.

Serializando JSon com JIL

Fala pessoal, tudo bem!

Hoje vou falar sobre uma biblioteca muito legal para serializar e deserializar objetos Json, pois este tipo de dados está cada vez mais comum com o advento das APIs web.

Um exemplo de dado em Json é o próprio WebAPI que faz parte do Asp.Net MVC, pois ele retorna basicamente dados em Json. Então qual o problema a ser resolvido ?

Você recebe um dado em Json, que é basicamente um texto, e precisa manipular seu conteúdo através de uma classe! E é aí que entra o JIL !!!

A biblioteca JIL, criada pela equipe do site StackExchange desempenha este trabalho com muita rapidez e simplicidade! Esta biblioteca está disponível através do NuGet.

Vamos codificar para ver!

Vou criar um projeto bem simples do tipo Console Application no Visual Studio 2015, mas você pode usar outras versões do Visual Studio também:

image_thumb1

E vamos instalar o JIL usando o NuGet Package Manager Console (Tools/NuGet Packager Manager/Packager Manager Console):

image_thumb3

Vamos agora criar um classe e trabalhar com a serialização e deserialização:

   1: public class Cliente

   2: {

   3:         public int ID { get; set; }

   4:         public string Nome { get; set; }

   5:         public string Cidade { get; set; }

   6: }

Agora vamos trabalhar com o JIL, veja como é simples:

Vamos criar um objeto do tipo cliente e serializar:

   1: var cli = new Cliente() { ID = 1, Nome = "Carlos", Cidade = "CPP" };

   2:  

   3: var json = JSON.Serialize<Cliente>(cli);

   4:  

   5: Console.WriteLine(json);

Criamos o objeto e passamos como parâmetro para a classe JSON.Serialize()

O retorno é este:

image

Agora vamos fazer o inverso, pegar uma string Json e converter para um objeto:

   1: var jsonData = "{\"ID\":1,\"Nome\":\"João\",\"Cidade\":\"SP\"}";

   2: var cliente = JSON.Deserialize<Cliente>(jsonData);

   3:  

   4: Console.WriteLine("ID: {0}\nNome: {1}\nCidade: {2}\n", cliente.ID, cliente.Nome, cliente.Cidade);

Temos o dado jsonData, que poderia ter vindo de qualquer serviço na web, e depois chamamos o método JSON.Deserialize(). Pronto, temos nosso objeto cliente!

Veja o retorno:

image

Veja o código todo aqui:

   1: using Jil;

   2: using System;

   3:  

   4: namespace ConsoleApplication2

   5: {

   6:     class Program

   7:     {

   8:         static void Main(string[] args)

   9:         {

  10:             var cli = new Cliente() { ID = 1, Nome = "Carlos", Cidade = "CPP" };

  11:             var json = JSON.Serialize<Cliente>(cli);

  12:             Console.WriteLine(json);

  13:  

  14:             var jsonData = "{\"ID\":1,\"Nome\":\"João\",\"Cidade\":\"SP\"}";

  15:             var cliente = JSON.Deserialize<Cliente>(jsonData);

  16:  

  17:             Console.WriteLine("ID: {0}\nNome: {1}\nCidade: {2}\n", cliente.ID, cliente.Nome, cliente.Cidade);

  18:  

  19:  

  20:         }

  21:     }

  22:  

  23:     public class Cliente

  24:     {

  25:         public int ID { get; set; }

  26:         public string Nome { get; set; }

  27:         public string Cidade { get; set; }

  28:     }

  29: }


Abraços e até a próxima,

Carlos dos Santos.

C# Interativo (REPL)

Alguma vez você já pensou em testar aquele trecho de código sem precisar compilar toda a solução ?

Acho que este é um sonho de vários desenvolvedores. Será que dá para executar só aquele “pedacinho” do código ? Normalmente você tem que executar o codigo todo e fazer um braek point e depois rodar o debug sem parar, ou mais ainda, quem de nós que nunca criou um programa console só para testar um trecho de código ?

Bom, para acabar com este sofrimento, o Visual Studio introduz uma funcionalidade de C# interativo ou REPL (read-eval-print-loop), como é também conhecido, e que nada mais é do que um shell de execução interativa para a linguagem.

Vamos a um exemplo prático, mas você precisa ter o Visual Studio Update 1 ou Update 2, no meu caso estou com o Update 2.

Vou criar um programa Console em C# para trabalharmos com o exemplo, mas você pode executar em qualquer projeto C# ou VB:

image

Após criar a solução, vamos abrir o console interativo:

image

Feito isto, teremos o console na parte inferior da IDE do Visual Studio:

image

Aqui podemos fazer várias coisas, como por exemplo escrever um código qualquer, que será executado imediatamente, por exemplo:

image

Veja que eu criei uma lista e depois adicionei dois elementos. Ao final digitei “lista.Count” e o resultado está na tela! Simples assim!

Agora vamos imaginar que você já tenha um código e queira testá-lo no modo interativo. Mais simples ainda, basta selecionar o trecho do código e clicar com o botão direito do mouse, escolhendo a mesma opção “Execute in Interactive”:

image

O resultado será a mesma janela do modo interativo, mas com o seu código carregado:

image

Logicamente que códigos mais complexos também podem ser utilizados. Vamos então fazer um exemplo acessando um banco de dados de modo totalmente interativo:

> #r "System.Data.dll"
> using System.Data.SqlClient;
> var conexao = new SqlConnection("data source=(local); initial catalog=northwind; integrated security=true");
> conexao.Open();
> conexao.Database
"northwind"
> conexao.Close();
>

Na primeira linha estamos carregando a DLL System.Data para o contexto do compilador interativo e após isto temos o código para se conectar no SQL e por fim estou apenas mostrando o nome do banco de dados.

Acredito que agora vocês estão imaginando as possibilidades!!!

PAra complementar, neste link tem um guia várias informações interessantes que podem complementar seu estudo!

Abraços e até a próxima,
Carlos dos Santos.

Desenvolva com Microsoft sem gastar dinheiro

Ola pessoal,

Esta semana tivemos fortes emoções no mundo Microsoft durante o evento Build. Foram tantos anúncios que levaremos semanas para entender tudo que aconteceu e principalmente o que vai acontecer daqui para frente, mas resumindo em poucas palavras: Muita coisa agora é open source, de graça mesmo!

Nesta onda de ferrmentas gratuitas e open source, gostaria de apresentar a vocês o portal Visual Studio Dev Essentials:

image

Bom, mas o que tem de tão especial neste portal ? Simples, todas as ferramentas que você precisa para desenvolver uma aplicação, vamos ver como funciona ?

Primeiro acesse o portal, clicando em “Ingressar agora”, coloque seu live ID e senha:

image

E pronto, veja a quantidade de softwares disponíveis:

image

Se você clicar em Download, verá uma lista separada por tipos de ferramentas:

image

E você pode ter acesso tambem ao SQL Server Developer Edition, que agora é FREE:

image

E não podemos esquecer do Xamarin, que a partir de agora também possui versões gratuitas:

image

Como eu disse no facebook, este é o começo de uma nova era para desenvolvedores, fique atento pois muita coisa está mudando!

Abraços e até a próxima,
Carlos dos Santos.

Entity Framework PowerTool no Visual Studio 2015

Olá,

Se você usa bastante o EF CodeFirst como eu e já está no Visual Studio 2015, deve ter sentido falta do EF PowerTools. Infelizmente ele ainda não foi portado para esta versão do Visual Studio.

Mas calma aí, existe uma maneira de instalar a versão atual no VS 2015. Para isto, primeiro baixe o componente da Visual Studio Galery. Veja na imagem abaixo que ele não suporta o VS 2015:

image

Agora vem o truque…

Não sei se vocês sabem, mas o aqrquivo VSIX é na verdade um arquivo ZIP, então vamos renomear o arquivo baixado para .ZIP e depois vamos extair o conteúdo no mesmo diretório, ficando assim:

image

Agora vamos abrir o aqrquivo “extension.vsixmanifest”, pois é nele que estão as versões suportadas do Visual Studio. Com o arquivo aberto vamos adicionar as linhas, logo abaixo do bloco da versão 12.0:

<VisualStudio Version="14.0">
     <Edition>Pro</Edition>
</VisualStudio>

Altere o arquivo e salve-o, ele vai ficar assim:

image

Agora só precisamos compactar tudo novamente. Vamos fazer isto colocando o nome de EFPowerToolsVS2015.zip. Não se esqueca de apagar o arquivo original antes (o que renomeamos para ZIP). Agora teremos a seguinte lista de arquivos:

image

Para finalizar renomeie o arquivo .ZIP para .VSIX e clique para instalar!

Pronto, agora você tem o Entity Framework PowerTools funcionando no seu Visual Studio 2015!

Se você não quiser realizar os passos acima, cliquei aqui e baixe o arquivo VSIX pronto!

Abraços e até a próxima,
Carlos dos Santos.