2018 – Um grande ano de transição e mudanças.

2018 foi um ano intenso, um ano de transição. O início de novos e maiores desafios profissionais e pessoais.

2018 era uma incógnita, ninguém sabia exatamente qual seria o rumo do país, da economia, se era um ano para pisar no freio ou acelerar. Eu resolvi acelerar.

Acredito que muitas pessoas tem o costume de fazer uma lista de metas para o ano que inicia, eu também tenho. O engraçado é que eu fiz tudo diferente do planejado desde que o ano começou.

desenvolvedor.io

Em janeiro de uma hora para outra eu resolvi que não dava mais para controlar a operação da minha empresa de treinamentos do meu home-office. Gravar conteúdos era difícil devido aos horários de silêncio absoluto, infra-estrutura, ar-condicionado e qualidade de vida (madrugar deve ser exceção e não uma rotina). Então busquei um espaço para montar meu escritório / studio de gravação. Encontrei um de 55m² apenas 5 minutos de casa num prédio comercial novo e bem moderno. Fechei na hora.

Faz mais de 3 anos que eu tinha a visão que precisava reestruturar meu negócio de treinamentos, não tinha escala, dependia muito de mim e tendia a ficar obsoleto. Resolvi mudar, mesmo meio que tarde, mas mudei.

Assim nasceu a ideia do desenvolvedor.io que é a minha nova plataforma de treinamentos. No inicio de 2019 será lançada e a meta é fechar 2019 com pelo menos 20 treinamentos completos. Certamente que pretendo ter treinamentos de outros profissionais (alguns em conjunto comigo). É por isso que estou deixando de usar meu nome na empresa e adotei um nome objetivo e fácil de lembrar.

Agora terei espaço para produzir conteúdos e cursos com alta qualidade, poderei transmitir eventos online e também compartilhar este espaço com a comunidade técnica. Poderei alocar confortavelmente uma equipe completa. (financeiro, edição de vídeo, desenvolvimento e etc).

Valeu a pena tanto esforço né? Confira abaixo todo o processo desde o comecinho 😉

https://www.instagram.com/s/aGlnaGxpZ2h0OjE3ODU1NzcyMjA1MjQ2MDEx/

Microsoft Regional Director

Em Abril eu fui nomeado Diretor Regional Microsoft. É uma premiação super exclusiva, apenas 150 pessoas no mundo possuem esse reconhecimento e a própria Microsoft reconhece estes profissionais como os maiores especialistas do mundo. Wow 🙂

Microsoft MVP 2018

Pelo sexto ano consecutivo eu fui reconhecido como Microsoft MVP.
É sempre uma honra e um privilégio receber esse reconhecimento. Muito grato a todos que me ajudaram a chegar aqui.

Eduardo Pires on Instagram: “Ontem me inscrevi para o MVP/RD Summit 2019. Cada anel nesse troféu significa uma viagem, muitas histórias, conteúdos e aprendizados. Em 2019 não será diferente. #mvp #mvpbuzz #microsoft #proud #community”

169 likes, 6 comments – eduardopiresbr on November 15, 2018: “Ontem me inscrevi para o MVP/RD Summit 2019. Cada anel nesse troféu significa uma viagem, muitas histórias, conteúdos e aprendizados. …”.

Site / Blog

Onde tudo começou, ter um site foi a minha primeira iniciativa de compartilhar meus conteúdos na comunidade técnica. Os resultados tem me surpreendido muito, recebo feedbacks fantásticos, eu mal consigo responder todos em tempo.

Alguns números sobre o site:

  • Acessos: 1.873.344 quase dois milhões de visitas em 2018 \o/
  • Média diária: 3.900
  • Posts: 143
  • Horas de vídeo: 42
  • Comentários: 4.234

O que dizer sobre esse resultado? São tantas coisas, fico muito satisfeito e gostaria de dizer MUITO obrigado a todos que fizeram parte destes números.

Conquistas pessoais

Em 2018 eu foquei um pouco mais em mim, cuidei da saúde, visual, comecei a comer melhor, praticar exercícios e etc. Nunca estive em tão boa forma como nos últimos 10 anos.

Fiz uma ótima viagem pelos EUA onde cruzei de Seattle até São Francisco de carro, conheci Los Angeles, Vegas, Portland, São Francisco e etc. Foi sensacional!

Foi um ano de muita mudança pessoal também, novo relacionamento, amigos, rotina e forma de pensar. Foi um “reboot” completo.

Minha visão de 2019

Em poucas palavras…
2019 PROMETE! Vamos usar toda nossa energia, foco, determinação em conquistar nossas metas e enfrentar desafios de verdade.

Para mim continua sendo um ano de transição, minha meta é finalizar 2019 com um novo modelo de vida onde vou usufruir dele por pelo menos 5 anos. Então vou ter que caprichar.

O que vem pela frente?

Meu ano vai ser mais um ano de muito trabalho. Profissionalmente irei focar em 2 frentes:

  • Transformar o desenvolvedor.io em uma plataforma completa de cursos e uma referência para todos os desenvolvedores.
  • Continuar entregando conteúdo para comunidade através de vídeos, posts, palestras, meetups e etc.

2018 foi um ano inesquecível. Muito obrigado por fazer parte dele.

Desejo a você um excelente 2019! Muito sucesso, estudos, foco e dedicação!
Grande Abraço.

Microservices – Por que você não deveria (ainda) utilizar?

Microservices é uma das sensações do momento, muito se fala sobre este estilo arquitetural e para muitos é a solução de todos os problemas. Entenda sobre os desafios de implementar uma arquitetura de microservices e o que deve ser feito antes para evitar problemas futuros.

Microservices é (mais) um novo termo que está sendo bastante utilizado como definição de arquitetura ideal para aplicações corporativas, o termo inclusive é mais novo do que a própria implementação de fato, sendo que o principal objetivo é desenvolver serviços distribuídos e independentes que compõem uma ou mais aplicações.

“O conteúdo técnico está no vídeo ao final do post, o texto a seguir é apenas uma introdução ao assunto.”

Microservices

Microservices em poucas palavras

Microservices (ou arquitetura de microsserviços) é um estilo arquitetural que propõe uma abordagem de desenvolver uma aplicação através da construção de pequenos serviços, cada um com sua própria responsabilidade (capacidade de negócios) e comunicando-se através de mecanismos “leves”. Geralmente assumem o formato de API’s conversando através de HTTP.

Por serem independentes e pequenos (micro) eles funcionam através de mecanismos de deploy independentes e totalmente automatizados onde há o mínimo de gerenciamento centralizado sobre como são escritos. Sendo assim podem ser escritos em diferentes linguagens e tecnologias e utilizar diferentes tipos de persistência de dados (BD).

Muitas empresas já utilizam com sucesso este estilo arquitetural, por que eu devo evitar começar a desenhar minha arquitetura neste estilo?

Conforme a tecnologia avança ela se torna cada vez mais complexa e requer mais conhecimento técnico de quem vai implementar. No cenário de grande escassez técnica (principalmente no Brasil) percebo que muitos desenvolvedores não estão aptos tecnicamente para entregar uma solução baseada na arquitetura de microservices.

Isso sempre foi um problema, porém a arquitetura de microservices exige muito mais conhecimento do que projetar uma aplicação monolítica tradicional. Sendo assim é altamente recomendável que o arquiteto da futura aplicação em microservices esteja ciente de todos os pré-requisitos e habilidades antes de começar o projeto.

Atuando como consultor eu já atendi dezenas de grandes empresas que falharam na implementação de uma arquitetura de microservices e pior deixaram de entregar a aplicação no prazo ou entregaram com falhas muito graves que comprometeram a disponibilidade e confiabilidade da empresa / serviço.

Como implementar uma arquitetura de microservices de forma responsável e dentro dos pré-requisitos técnicos esperados?

Não existe uma receita para isto. Tudo depende dos skills técnicos da equipe e das plataformas / tecnologias utilizadas na empresa. O que podemos fazer é observar e até mesmo gerar uma lista com pontos cruciais que realmente irão fazer toda a diferença.

Esta lista dos 10 motivos não foi obtida de algum livro / artigo / material. Eu a criei baseada em minhas “cicatrizes” de anos de consultoria, portanto trata-se de minha visão técnica e de consultor, portanto recomendo que assista meu vídeo para compreender melhor sobre estes pré-requisitos/motivos e o por que eles são tão fundamentais.

Espero que vocês aproveitem as dicas e qualquer dúvida estou a disposição.


Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.

Implementando o padrão CQRS em aplicações .NET

O padrão CQRS está sendo cada vez mais utilizado para o desenvolvimento e modelagem de aplicações que necessitam de expressividade no domínio, integrações com outras aplicações e um controle mais avançado sobre leitura e escrita de dados.

O conteúdo deste material está em vídeo, pois foi uma palestra online que realizei no Canal .NET e foi gravada ao vivo.

CQRS

O CQRS além de ajudar muito na expressividade do domínio e sobre as intenções de negócio também vai facilitar muito a implementação de uma arquitetura “Event Driven”, que está sendo cada vez mais utilizada em projetos de Microservices e em cenários de muitas integrações.

Caso não conheça o padrão CQRS além deste tutorial eu indico este post que escrevi:

CQRS – O que é? Onde aplicar?

O código fonte de exemplo é do meu projeto open-source chamado Equinox.

Espero que vocês aproveitem o material e qualquer dúvida estou a disposição.


Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.

Fui nomeado Microsoft Regional Director

No dia 9 de Abril de 2018 fui nomeado Microsoft Regional Director.
É a premiação mais importante que já recebi e agora faço parte de um time muito enxuto e seleto de profissionais. São apenas cerca de 150 em todo o mundo.

Microsoft Regional Director

O que é ser Microsoft Regional Director?

Microsoft Regional Director é uma premiação. O texto abaixo foi extraído do site oficial rd.microsoft.com

Estabelecido em 1993 o programa conta com 150 dos maiores visionários de tecnologia do mundo, escolhidos especificamente por sua comprovada expertise multiplataforma, liderança comunitária e comprometimento com os resultados do negócio.

Normalmente os Microsoft Regional Directors estão em destaque nos principais eventos do setor, liderando grupos comunitários e iniciativas locais, liderando empresas com foco em tecnologia ou realizando consultorias e implementando os mais recentes avanços em uma corporação multinacional.


Como é receber esta premiação?

Receber uma premiação que me destaca pela própria Microsoft entre 150 dos maiores visionários de tecnologia do mundo é algo surreal. A princípio é difícil me ver merecedor ao ponto de fazer parte deste número extremamente seleto, mas com certeza darei o meu melhor para honrar a premiação que recebi.

Recebi esta premiação devido o meu trabalho com foco de consultor em grandes empresas e meu papel de influenciador tecnológico através de meus treinamentos que já impactaram mais de 9000 alunos e também devido aos eventos dos quais sou organizador ou palestrante.

Para ser um Regional Director além de um grande expertise técnico comprovado é necessário ter uma visão bem generalista sobre tecnologia e como ela pode ser utilizada para gerar negócios. É necessário também ter experiência comprovada como consultor em grandes empresas o que garante que saiba ouvir e entender a necessidade do cliente e ao mesmo tempo entregar soluções técnicas de alta complexidade.

O que muda daqui em diante?

Na minha atuação profissional basicamente nada, vou continuar tocando minhas empresas e contribuindo cada vez mais com a comunidade técnica. Provavelmente devo aumentar meu foco em consultorias especializadas, porém já é algo que faço hoje.


O texto abaixo foi extraído do site oficial rd.microsoft.com

Os Regional Directors trabalham para a Microsoft?

Não, os Regional Directors não são funcionários da Microsoft. Em alguns casos os Diretores Regionais ou suas empresas podem ter contratos para entregar bens ou serviços à Microsoft, mas não são funcionários.

Como os Regional Directors são selecionados pela Microsoft?

Os Regional Directors são escolhidos a dedo pela Microsoft com base em um conjunto rigoroso de avaliações projetadas para selecionar os melhores representantes de desenvolvedores ou profissionais de TI que atendem necessidades estratégicas de tecnologia das empresas com maior impacto no mundo.

Quanto tempo dura o mandato de um Regional Director?

O mandato de um Regional Director é de dois anos.

Como os Regional Directors trabalham com a Microsoft?

Os Regional Directors atuam com capacidade consultiva e são convidados a participar de sessões de feedback estratégico programadas com as equipes de liderança sênior da Microsoft.

Por causa de suas posições de liderança na comunidade, paixão, comprometimento com a tecnologia e excelência nos negócios, os Regional Directors têm um ponto de encontro regular onde podem expressar comentários em tempo real sobre clientes e comunidades diretamente com os engenheiros da Microsoft e com a equipe de liderança sênior, incluindo o presidente da Microsoft Satya Nadella.

Qual é a diferença entre um Regional Director e um MVP?

Muitos dos Regional Directors também possuem o título da premiação MVP, embora a maioria deles esteja encontrando dificuldades para manter as duas credenciais, já que cada uma tem demandas diferentes, o que dificulta a qualificação e a manutenção de ambas. No entanto, as principais diferenças realmente se resumem à natureza consultiva de negócios, experiência em clientes e habilidades de arquiteto de plataforma cruzada possuídas pelos Regional Directors versus o foco técnico profundo que qualifica um MVP.


Gostaria de agradecer especialmente alguns amigos que me ajudaram neste processo tanto no suporte como nas indicações. Sem a ajuda deles não seria possível receber a premiação:

Glauter Jannuzzi, Evilázaro Alves, Jamil Lopes, Claudenir Andrade, Carlos dos Santos e André Carlucci. Muito obrigado mesmo meus amigos!

E agradeço a você leitor deste blog pela confiança e feedback que tem feito desde 2012 um diferencial muito grande em minhas contribuições com a comunidade técnica.

Grande Abraço!

Prevenindo ataques CSRF no ASP.NET Core

Ataques CSRF são bem comuns, o CSRF está listado como a 909° vulnerabilidade mais perigosa já encontrada em um software e é de total responsabilidade do desenvolvedor evitar isto.

Ataque CSRF no ASP.NET Core

CSRF significa Cross-Site Request Forgery (Falsificação de solicitação entre sites).

O CSRF explora a confiança que um website tem do navegador do usuário. Portanto um ataque CSRF é baseado em transmitir um comando não autorizado através de um usuário que o site confia.

Cenário prático de um ataque CSRF

João é administrador de um site de e-commerce e está em seu ambiente de trabalho quando recebe um e-mail que oferece uma promoção imperdível e ao visitar o site da promoção existe um botão para ver mais detalhes, algo assim:

Assim que João clica no botão um post altera a senha de administrador do site e como João é o próprio administrador e estava logado o site executa sua solicitação de imediato. Foi tarde demais para evitar o ataque bem sucedido de um ex-funcionário que estava chateado com a empresa e conhecia a aplicação.

Pode parecer Hollywoodiano demais, mas acontece bastante!

Como evitar o CSRF?

Isto é de total responsabilidade do desenvolvedor, mas o ASP.NET MVC desde suas versões iniciais possui um filtro especial para evitar este tipo de ataque que é o ValidateAntiForgeryToken.

O exemplo abaixo mostra a implementação na Controller e na View:

PS – Apesar de ser permitido não é necessário declarar o AntiForgeryToken na View, pois toda View Razor é protegida automaticamente de CSRF e será gerado um input hidden com o “__RequestVerificationToken” a cada requisição.

Como funciona o ValidateAntiForgeryToken?

O token gerado na View é baseado no usuário logado e na sessão do browser e é submetido via POST para a Controller que deve conter o atributo [ValidateAntiForgeryToken] declarado no método.

Se o servidor recebe um token que não corresponde a identidade do usuário autenticado, a solicitação será rejeitada. O token é exclusivo e imprevisível. O token também pode ser usado para garantir o sequenciamento adequado de uma série de solicitações (página garantia 1 precede a página 2 que precede a página 3).

Se o filtro ValidateAntiForgeryToken estiver declarado o ataque que simulamos no cenário prático não teria sido efetuado com sucesso, pois a aplicação teria rejeitado o POST e retornado um erro 400 (Bad Request).

A OWASP (Open Web Application Security Project) recomenda que todo verbo POST, PUT e DELETE estejam protegidos deste tipo de ataque. (Esta implementação não se aplica no uso de APIs).

Aplicando a proteção contra o CSRF de forma global no ASP.NET Core

É possível que por um deslise o desenvolvedor esqueça de usar o ValidateAntiForgeryToken como atributo em seus métodos, para evitar isto podemos usar a implementação a seguir no Startup.cs e deixar a validação de forma global

Assim não será mais necessário se preocupar com a implementação de proteção do CSRF no código e caso haja necessidade de ignorar a validação de CSRF basta usar o atributo [IgnoreAntiforgeryToken] no método.

O filtro AutoValidateAntiforgeryTokenAttribute utilizado no Startup.cs é inteligente e aplica as validações de CSRF apenas para verbos que modificam o estado de um registro (POST, PUT e DELETE)

PS – Os verbos GET, TRACE etc são idempotentes por natureza e não devem fazer uso de validação de CSRF.

Resumindo

A prevenção de CSRF é apenas uma das preocupações de um desenvolvedor web, existem diversos outros tipos de ataques e eu recomendo que todo desenvolvedor tenha no mínimo o conhecimento deles. Recomendo a leitura do guia OWASP para aplicações .NET que resume os tipos, como funcionam e como se prevenir de cada um deles.

Este é a primeira postagem de uma lista de posts de segurança no ASP.NET Core que eu irei escrever daqui para frente.


Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.

Mais um Framework SPA e desta vez é da Microsoft! Conheça o Blazor

Existem diversas opções de frameworks SPA disponíveis e é difícil saber escolher qual é o melhor, agora a Microsoft está investindo em seu próprio framework SPA e ele é bem diferente dos demais. Conheça o Blazor!

Blazor = Browser + Razor

Blazor. (Browser + Razor).
O nome é interessante mas o que o Blazor tem de inovação é mais interessante ainda!

O que é o Blazor?

O Blazor é um framework Web baseado nas tecnologias Web já existentes como HTML e CSS mas usa C# e Razor ao invés de JavaScript.

Como assim? E como o browser vai entender .NET?

O Blazor roda no browser via WebAssembly o que é um de seus maiores diferenciais!

Para quem não conhece o WebAssembly o que tudo indica será o futuro da Web. É como se o Browser funcionasse como uma máquina virtual rodando um código binário (WASM) que é quase tão rápido como código nativo de máquina e possui performance muito superior ao JavaScript.

O WebAssembly está sob a responsabilidade do W3C e já é suportado pela maioria dos browsers modernos.

É possível rodar OpenGL, Banco de dados e etc. Inclusive o engine Unreal 4 já foi portado para WebAssembly assim como o .NET Core está passando pela portabilidade.

Hey Desenvolvedor Web! É melhor começar a ficar de olho nisso hein?

Por que usar .NET no Browser?

O desenvolvimento da Web melhorou de muitas maneiras ao longo dos anos, mas a construção de aplicativos web modernos ainda representa desafios. O uso do .NET no navegador oferece muitas vantagens que podem ajudar a tornar o desenvolvimento web mais fácil e mais produtivo:

  • Estável e consistente: o .NET oferece APIs padrão, ferramentas e infraestrutura de construção em todas as plataformas .NET que são estáveis, ricas em recursos e fáceis de usar.
  • Linguagens inovadoras modernas: linguagens .NET como C# e F# tornam a programação mais fácil e continuam melhorando com novos recursos inovadores na linguagem.
  • Ferramentas líderes da indústria: a família de produtos Visual Studio oferece uma excelente experiência de desenvolvimento .NET no Windows, Linux e MacOS.
  • Rápido e escalável: o .NET possui um longo histórico de desempenho, confiabilidade e segurança para desenvolvimento web no servidor. Usar o .NET como um Stack completo facilita a criação de aplicativos rápidos, confiáveis e seguros.

O que o Blazor oferece?

O Blazor é um projeto experimental, recém anunciado pela Microsoft como parte do Stack do ASP.NET.

O Blazor possui todas as features de um framework SPA moderno:

  • Utiliza o conceito de Component Model
  • Roteamento
  • Layouts
  • Formulários e Validações
  • Dependency Injection nativo
  • Interoperabilidade com JavaScript
  • Atualização automática do browser durante desenvolvimento
  • Renderização server-side
  • Debug em .NET diretamente pela IDE e pelo browser
  • IntelliSense e Tooling
  • Realiza o publishing diminuindo (comprimindo) o tamanho da App

PS – Se o browser não for compatível com WebAssembly o Blazor tem a capacidade de oferecer o asm.js permitindo a mesma experiência até no IE 9 por exemplo.

Futuro da Web?

Enquanto todos os frameworks SPA de mercado são baseados em JavaScript (ou TypeScript) o Blazor entrega um código nativo rodando em performance superior e com muito mais segurança.

Se escrever um código em TypeScript para transpilar JS já é muito mais agradável do que escrever JS puro, imagine poder escrever sua aplicação inteira em .NET?

O JavaScript é atualmente considerado o Assembly da internet, mas na minha visão com a adoção do WebAssembly isto muda totalmente! Até por que qualquer linguagem pode gerar WebAssembly e se beneficiar de todas suas vantagens.

A pergunta que fica:
Qual será o futuro do JavaScript?

Minhas impressões sobre a adoção do Blazor

Pontos positivos:

  • Entrega WebAssembly (já sabemos que é vantagem)
  • Possui todas as features de um framework SPA
  • Permite a reciclagem de conhecimento uma vez que usa .NET com C# e Views em Razor
  • Facilita a curva de aprendizado e de entrega para times que desejam entregar aplicações Web que rodam no client utilizando uma arquitetura baseada em REST.
  • Server-side rendering nativo, ótimo para SEO.
  • DNA! DOT NET Anywhere (.NET em todos os lugares).

Pontos negativos:

  • É super novo e experimental, não sabemos se terá continuidade ou adoção.
  • É baseado em .NET o que restringe desenvolvedores de outras plataformas em aderir (pelo menos rapidamente).
  • Não possui componentes prontos assim como existem para Angular e React (problemas de adotar um framework novo)
  • Não tem suporte da comunidade e 0 documentação.
  • Não funciona 100% no Visual Studio ou no Code (falta tooling).

Notem que a maioria dos pontos negativos é devido ao Blazor ser extremamente novo, com o tempo e o sucesso na adoção (e bastante investimento da Microsoft) isto tende a mudar.

O único ponto imutável é que o Blazor é baseado em .NET. Enquanto um desenvolvedor Angular pode mudar para React ou Vue sem ter que aprender uma nova linguagem o mesmo não acontecerá com o Blazor, o que pode ser um limitador para desenvolvedores de outras plataformas.

De outro lado desenvolvedores WebForms, MVC, Xamarin e etc poderão se beneficiar imediatamente e começar a entregar aplicações SPA com uma performance e segurança superior.

Isto é sério mesmo?

Entregar o .NET Core por completo pela Web com cerca de 300 KB?
Até mesmo o novo Angular pesa um pouco mais que isso!

Para saber mais

Assista essa demo de TODO List com Blazor (é muito interessante)

O projeto é OpenSource (Microsoft <3)
https://github.com/aspnet/Blazor/

E para finalizar! O que acham do Blazor e WebAssembly?


Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.

Trabalhando com Tipos Complexos no EF Core

O Entity Framework Core apesar de funcional ainda não está 100%. Algumas funcionalidades requerem workarounds ou simplesmente não existem. Mas temos algo para comemorar, agora podemos trabalhar com tipos complexos sem impactar na modelagem de nossas entidades.

Entity Framework Core

Trabalhando com Tipos Complexos no EF Core

Eu trabalho muito com entidades ricas que seguem as boas práticas de modelagem do DDD. Para possuirmos um domínio rico é necessário dar a maior expressividade possível ao nosso código muitas vezes deixando de usar tipos primitivos para usar tipos complexos.

O Entity Framework Core antes da versão 2 simplesmente não conseguia mapear tipos complexos, ou seja, era necessário impactar diretamente na modelagem de nossas entidades apenas para contornar uma deficiência do ORM. Que coisa horrível não?

Inclusive muitos desenvolvedores simplesmente abriram mão de usar o EF Core e adotaram outras soluções como o Dapper por exemplo. Mas agora esse problema não existe mais!

Mapeando um Tipo Complexo

Vamos supor que sua entidade Cliente possui um campo CPF, muitas vezes basta criar um tipo string e pronto, mas o ideal seria que o CPF fosse um Value Object, pois permite reusabilidade de código além de permitir que a própria classe CPF cuide da questão da validação. Além disso podem existir outros dados como Data de Emissão por exemplo:

Os tipos complexos podem ser Value Objects ou outras entidades, o importante é que o modelo seja o mais rico e expressivo possível.

No EF Core 2 agora é possível utilizar Fluent API de forma nativa (sem gambiarras) e mapear os tipos complexos a partir do recurso OwnsOne:

Depois de todo trabalho de modelagem feito basta executar os comandos:

  • Add-Migration
  • Update-Database

E pronto! Seu modelo está criado.

Mapeamento Gerado no Entity Framework Core

Inserindo e recuperando a entidade através do EF Core

Uma vez que estamos trabalhando com modelos ricos, devemos seguir as boas práticas (utilizar private setters, ad-hoc setters, construtores e validação de consistência):

  • É necessário criar um construtor protected nas classes para que o EF Core possa recuperar do banco e criar a instância, pois ele não entende o construtor.
  • As validações foram feitas na mão e lançando exceptions para fins de demonstração
  • O objeto é recuperado exatamente como se deseja do banco

Entidade recuperada no Entity Framework Core

Testes

Testar é importante certo? Esse projeto foi disponibilizado com o código fonte completo inclusive testando todas as situações previstas:

Testes de Unidade no Entity Framework Core

Com este código fonte eu espero ajudar você a não ter mais nenhum problema de mapeamento de tipos complexos do seu domínio rico com Entity Framework Core.

Resumindo

O projeto completo está no meu GitHub

O EF Core ainda apresenta problemas irritantes como não possuir mapeamento Many to Many. É necessário fazer uma gambiarra horrível (mas funciona).

Não deixe de utilizar modelos ricos em suas aplicações, é muito importante para um bom design de código e uma modelagem correta de seu domínio. Agora o EF Core não será mais um problema.


Caso esteja interessado em conhecer mais sobre Testes, TDD, ASP.NET, DDD, Padrões de Arquitetura e boas práticas de desenvolvimento não deixe de conferir as ementas dos meus cursos:

Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.

2017 – Um ano muito especial!

O ano de 2017 foi muito especial, um ano de consolidação, preparação e conhecimento para as futuras conquistas.

Primeiramente agradeço a você leitor deste site! Suas visitas, feedbacks e interações tem sido a minha maior motivação para continuar escrevendo e entregando conteúdos para a comunidade técnica.

É muito satisfatório saber que por dia cerca de 3.000 pessoas acessam este site e que de alguma forma estou ajudando estes em suas carreiras, resolução de problemas e etc.

Vamos aos melhores momentos de 2017:

Microsoft MVP Award

Microsoft MVP 2017 - 2018

O programa MVP está passando por diversas mudanças. Está mais aberto, agora todo mês são selecionados novos premiados e está significantemente mais simples/fácil receber essa premiação da Microsoft. Independente do mês todos renovam em Julho, como eu era do ciclo de Janeiro eu renovei para 2017 e 2018 de uma só vez!

DevXperience

DevXperience 2017

O DevXperience é a revolução do ASP.NET Brasil Conference. Nesse ano de estréia tivemos um evento para 700 pessoas com 3 trilhas e 42 palestras. Foi um sucesso! Por ser um evento novo e mais amplo eu fiquei feliz com o resultado.

Cursos de Desenvolvimento Web e Arquitetura

Esses são os números de 2017:

  • Cursos Realizados: 19
  • Alunos: 974
  • Horas ministrando curso: 1.140

Saiba mais sobre meus cursos

Site / Blog

Onde tudo começou, ter um site foi a minha primeira iniciativa de compartilhar meus conteúdos na comunidade técnica. Os resultados tem me surpreendido muito, recebo feedbacks fantásticos, eu mal consigo responder todos em tempo. O site aumentou em 37% o número de visitantes em relação ao ano passado.

Alguns números sobre o site:

  • Acessos: 1.527.180 mais de um milhão e meio de visitas em 2017 \o/
  • Média diária: 3.100
  • Posts: 137
  • Horas de vídeo: 36
  • Comentários: 3.544

O que dizer sobre esse resultado? São tantas coisas, fico muito satisfeito e gostaria de dizer MUITO obrigado a todos que fizeram parte destes números.

Conquistas pessoais

Em 2017 eu foquei um pouco mais em mim, cuidei da saúde, visual, comecei a comer melhor, praticar exercícios e etc. Foi um passo inicial, agora em 2018 além de manter eu pretendo melhorar ainda mais.

Minha visão de 2017

O ano de 2017 no geral foi um ano de transição, tivemos uma pequena melhora na economia e no cenário nacional, mas ainda tem muito chão para chegar próximo do aceitável.

O meu ano de 2017 também foi de transição, observei vários aspectos de minhas atuações no mercado e planejei mudanças que irei colocar em prática em 2018. Foi um ótimo ano, bati todas minhas metas e me preparei para colocar muita coisa em prática neste novo ano.

O que vem pela frente?

Parte das mudanças que planejei no aspecto profissional é na minha atuação com a comunidade técnica.

Percebi que com o crescimento da demanda pelos meus treinamentos e consultoria eu acabei me afastando um pouco da comunidade e contribuí com menos do que queria.

Por isso deixo aqui um compromisso público de entregar mais conteúdos (gratuitos):

  • Entregar 10 palestras em eventos
  • Escrever no 20 posts neste blog
  • Realizar 5 Meetups presenciais
  • Gravar 5 vídeos para meu canal no Eduardo Pires
  • Retornar com o canal Sou Desenvolvedor
  • Entregar a versão 2.0 do Equinox Project

Esses números são o mínimo, sendo que pode vir a ser muito mais 🙂

2017 foi um ano inesquecível. Muito obrigado por fazer parte dele.

Desejo a você um excelente 2018! Muito sucesso, estudos, foco e dedicação!
Grande Abraço.