Versionamento de APIs com WebAPI + Vídeo Aula

O versionamento de APIs é uma estratégia para implementar rapidamente mudanças e novas funcionalidades em seu negócio.

O ASP.NET Core WebAPI possui suporte nativo para versionamento de APIs. Além de facilitar a implementação, este suporte entrega outras facilidades como informar as APIs obsoletas via Header do Response e também expor informações importantes para a documentação da API.

Por que você deve versionar sua API?

Todos os desenvolvedores precisam entender que não existe condições de uma empresa evoluir e ser competitiva no mercado se ela não conseguir entregar rapidamente as soluções que o mercado precisa! Mudanças ocorrem muito rápido e você é o responsável por entregar soluções que permitam serem adaptadas rapidamente aos novos cenários.

Gostaria de contar uma história que aconteceu recentemente comigo (fatos 100% reais). No mês passado eu encerrei uma parceria de muitos anos com uma empresa de software que fornecia soluções para um de meus negócios.
De forma amigável eu enviei um e-mail para o CEO avisando de minha decisão, agradecendo pela parceria e desejando que a empresa dele não parasse no tempo devido aos processos burocráticos de mudanças que eu e os demais clientes enfrentavam.

O CEO me respondeu com um e-mail enorme e triste, contando das dores em atender mudanças simples, que 3 anos atrás havia investido praticamente todo o budget da empresa para desenvolver um software que hoje não suporta novas implementações sem um processo enorme de mudanças e burocracias internas.

O desenvolvedor além de entregar software, também é parte responsável pelo sucesso ou fracasso do negócio.

Como o versionamento de APIs pode ajudar o seu negócio a ser mais competitivo

Vamos supor que você entregue um conjunto de funcionalidades em sua API e com o passar do tempo novas mudanças e funcionalidades são exigidas, porém implementar estas necessidades em seu código resultam em breaking changes no lado do cliente.

Você pode considerar tudo que tem entregue até hoje como a V1 da sua API e implementar as novas funcionalidades como uma V2, sendo assim:

Os clientes que precisam urgentemente das novas funcionalidades poderão ser atendidos rapidamente por sua empresa, basta implementar a V2 da sua API. Os clientes que não possuem tanta necessidade de mudança continuam usando a V1, porém passam a receber o aviso que esta API está obsoleta e será desativada em algum tempo (por exemplo 6 meses).

Você passa a atender o negócio de forma ágil, facilitando a vida dos clientes que precisam rapidamente das novas funcionalidades e sem prejudicar aqueles que não precisam.

Quando é hora de versionar minha API?

Considere o versionamento da sua API necessário toda vez que uma mudança resultar em breaking changes do lado do cliente.

E claro, para prever com exatidão os breaking changes é necessário escrever uma diversidade de testes de integração que simula os inúmeros cenários de consumo da sua API do lado do cliente.

Como implementar o versionamento da minha API?

Esta é a parte mais fácil 🙂 O ASP.NET Core dá suporte nativo ao versionamento, além de facilitar muito na documentação (via Swagger por ex).

Documentação oficial:
https://github.com/Microsoft/aspnet-api-versioning

Assista esta aula gratuita do meu curso REST com ASP.NET Core WebAPI

O desenvolvedor.io é a minha nova plataforma de cursos online e já temos mais de 12 cursos anunciados, o curso sobre ASP.NET Core Web API está 100% entregue e possui diversas aulas gratuitas para você experimentar e aprender um pouco mais com nosso conteúdo.

Para aprender a implementar na prática o versionamento de APIs assista esta minha aula gratuita:

desenvolvedor.io | Cursos online de programação e tecnologia

Aprenda Arquitetura de Software, Back-end, Front-end, Testes, Banco de Dados, ORMs, Boas práticas, Kubernetes e Cloud com os cursos mais completos do Brasil!

Espero que aproveite este conteúdo e comece desde já a planejar e se preparar para esta estratégia que pode ser um grande diferencial em seu negócio.

Vamos continuar enriquecendo o assunto utilize os comentários abaixo e deixe sua contribuiçã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.

10 Boas práticas no desenvolvimento com ASP.NET Core

O ASP.NET Core trouxe uma série de novidades e mudanças em relação ao ASP.NET Clássico e essas novidades vieram para facilitar nossa vida no desenvolvimento, portanto são essenciais para qualquer desenvolvedor.

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

10BoasPraticasAspNetCore

Por que selecionei estas 10 boas práticas? Eu poderia selecionar 50 ou mais, porém estas 10 são essenciais para fazer o bom uso do ASP.NET Core portanto assista, pratique e implemente em seus projetos, fará um grande diferencial.

Tanto o PPT quando o código fonte estão disponíveis em meu GitHub.

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

* Assine meu canal no Youtube ?


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.

.NET Standard – Você precisa conhecer!

.NET Standard é a nova palavra do momento, quem acompanha de perto as novidades do mundo .NET com certeza já deparou com este novo conceito e é realmente muito importante que você compreenda bem o que ele significa.

O .NET Standard é um conceito essencial para compreender a unificação das plataformas .NET sendo que atualmente podemos entender como 3 plataformas:

.NET Standard

Por que precisamos de um padrão?

O .NET Framework foi lançado em meados de 2002 no formato de um framework único para desenvolvimento na plataforma Windows. Com o passar do tempo ganhou suporte para Web, Silverlight, WCF, WPF, etc…

Após o lançamento do .NET surgiram outros frameworks como Mono, Unity, etc. Que são implementações open-source do .NET Framework e aceitam a linguagem C#, pois implementam os padrões ECMA do C# e o CLR do .NET.

E para finalizar ainda temos o .NET Core o mais recente “sabor” de .NET Framework 100% open-source e multi-plataforma.

Problemas a vista

  • Sendo que todos estes “sabores” de frameworks suportam a linguagem C#, seria possível escrever um único código e rodar em qualquer plataforma?
  • Posso escrever uma biblioteca em .NET 4.6.1 e utilizá-la como referência no .NET Core?
  • É possível garantir que o código não irá quebrar ao trocar a versão do framework?

Não! Sempre existiram diversas limitações. Tanto no suporte das funcionalidades de cada versão quanto no número de APIs suportadas em cada framework.

Para que o .NET continue evoluindo rapidamente é necessário evitar a fragmentação entre tantas versões de frameworks e proporcionar a escrita de um código único para qualquer plataforma. A solução é implementar um padrão para que todas as versões dos frameworks suportem o mesmo conjunto de APIs.

Conceituando o .NET Standard

O .NET Standard não é mais um “sabor” de .NET, você não instala o .NET Standard na sua máquina e também não devemos considerar o .NET Standard uma nova tecnologia.

O .NET Standard é uma interface, uma espécie de contrato que define a lista de APIs que aquela determinada versão do .NET deve suportar. Para entender de forma muito simples o conceito do .NET Standard imagine o seguinte cenário:

.NET Standard Analogia

O David Fowler também criou uma analogia bem interessante sobre o assunto.

Entenda que o .NET Standard é uma espécie de interface que define as APIs que cada versão do .NET irá oferecer suporte. O código do .NET Standard não possui implementação de comportamento, apenas a declaração das classes e métodos. Através deste padrão único conseguiremos uma total compatibilidade de um código .NET Framework para .NET Core por exemplo.

Mas o PCL não serve para isto?

O PCL (Portable Class Libraries) resolvia isto mas de uma outra forma, uma forma bem menos eficiente e que limitava a entrada de novas plataformas. O .NET Standard substituiu o PCL.

Como o .NET Standard resolve esta questão?

O código será compilado para uma versão específica do framework .NET que é suportado em versões específicas do .NET Standard. Cada versão do .NET Standard suporta um número determinado de APIs.

.NET Standard Versões

O .NET Standard 2.0 suporta o .NET Core 2.0 e .NET Framework 4.6.1.
No futuro suportará também as novas versões do Mono, UWP e Xamarin.

Um ponto muito interessante é a evolução da versão 1.6 para a versão 2.0:

Versão #APIs Crescimento%
1.0 7,949
1.1 10,239 +29%
1.2 10,285 +0%
1.3 13,122 +28%
1.4 13,140 +0%
1.5 13,355 +2%
1.6 13,501 +1%
2.0 32,638 +142%

A versão 2.0 do .NET Standard suporta 142% mais APIs que a versão anterior. Um salto incrível no número de APIs suportadas.

Muita calma nessa hora!

Isto não significa que um código escrito para .NET Framework 4.6.1 seja 100% compatível com o .NET Core 2.0.
Existem muitas APIs no .NET Framework que não são implementadas pelo .NET Standard 2.0, logo também não serão suportadas no .NET Core 2.0.

A única compatibilidade entre versões .NET são aquelas cobertas pelo .NET Standard.

Como descobrir se o código está 100% coberto pelo .NET Standard?

Utilize o API Port para analisar se o código está 100% coberto por uma versão específica do .NET Standard. É possível rodar o analyzer via linha de comando ou via Visual Studio.

apiport analyze -f C:\src\mylibs\ -t “.NET Standard,Version=2.0”

Com .NET Standard é muito mais fácil!

O .NET Standard foi criado para que o compartilhamento e a reutilização de código entre várias plataformas .NET se tornem muito mais fáceis.

Desenvolver um Nuget Package será muito mais fácil, basta apontar o target da class library para uma versão específica do .NET Standard ao invés de distribuir uma versão específica para cada framework.

Saiba mais

Documentação oficial
https://docs.microsoft.com/pt-br/dotnet/standard/net-standard

Explore quais APIs são suportadas em cada versão do .NET Standard
https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0

Confira a FAQ do .NET Standard
https://github.com/dotnet/standard/blob/master/docs/faq.md

Acompanhe a atualização de versões do .NET Standard
https://github.com/dotnet/standard/blob/master/docs/versions.md


Caso esteja interessado em conhecer mais sobre 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.

Integrando ASP.NET Core com ASP.NET MVC 5

Migrando para o ASP.NET Core? Não é necessário migrar todo o projeto de uma única vez, utilize migrações modulares e compartilhe o Cookie de autorização de usuários.

O ASP.NET Core está pronto e muitas demandas de migração de projetos ASP.NET 4.X para a nova plataforma irão surgir. Como planejar e executar esta migração?

ASP.NET Core & ASP.NET 4.X

Uma migração total pode ser complexa, afinal vai exigir a alocação de diversas pessoas e enquanto isto as duas aplicações precisarão receber futuras implementações. Alguns projetos são tão grandes que simplesmente não seriam migrados se esta fosse a única alternativa, seria impossível atender as duas demandas simultaneamente.

Por que não ter duas aplicações?

Não há motivos para uma migração total se sua aplicação já funciona bem. Portar parcialmente módulos da aplicação para um projeto ASP.NET Core é uma alternativa bem mais interessante e que vai exigir muito menos esforço.

Imagine que em sua aplicação o módulo de gestão de Produtos funciona no ASP.NET MVC 5 e o módulo de gestão de Clientes no ASP.NET Core, o usuário final mal poderá perceber a diferença!

Integração de dados entre duas aplicações.

Certo! Posso migrar parcialmente, mas como faço a integração entre os dados que estão em aplicações diferentes?

Uma aplicação que utiliza uma boa arquitetura e uma boa modelagem estratégica pode facilmente integrar diversas entidades através dos ORM’s. Se a aplicação possuir uma modelagem DDD cada Bounded Context resolve seus próprios problemas, migre um BC de cada vez! (está mais fácil do que você imagina).

Compartilhando o usuário entre duas aplicações

Este é o grande foco da abordagem que apresento, como realizar uma integração para uma aplicação ASP.NET Core compartilhar o mesmo usuário de uma aplicação ASP.NET MVC 5.

Disponibilizei um novo repositório no meu GitHub com o projeto AspNetInterop este projeto implementa exatamente este cenário onde duas aplicações ASP.NET Core 1.1 e ASP.NET MVC 5 compartilham o mesmo Usuário, Cookies, Claims e Token para o AntiForgery.

Para reproduzir este projeto você precisa utilizar alguns Nuget Packages

Utilize o mesmo Cookie entre as aplicações

Esta abordagem faz a utilização do ASP.NET Identity, mas é possível produzir o mesmo resultado utilizando somente as classes do Microsoft.Owin.Security.

O importante é setar o mesmo cookie entre as duas aplicações:

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
    options.Cookies = new Microsoft.AspNetCore.Identity.IdentityCookieOptions
    {
        ApplicationCookie = new CookieAuthenticationOptions
        {
            AuthenticationScheme = "Cookie",
            LoginPath = new PathString("/Account/Login/"),
            AccessDeniedPath = new PathString("/Account/Forbidden/"),
            AutomaticAuthenticate = true,
            AutomaticChallenge = true,
            CookieName = ".AspNet.SharedCookie"

            // If you have subdomains use this config:
            CookieDomain = "localhost"
        };
    })
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

É necessário que as aplicações rodem no mesmo nome de domínio, se você tiver sub-dominios para cada aplicação basta setar a raíz do domínio em CookieDomain.

Selecione um repositório para Data Protection

O exemplo está utilizando um diretório como repositório, mas o ASP.NET Core 1.1 já suporta Redis, Azure Blob Storage e Azure Key Vault.

No ASP.NET MVC 5 além de configurar o Identity para utilizar o mesmo cookie (verifique implementação no código fonte) é necessário configurar o AntiForgery para que o usuário consiga utilizar a mesma chave entre as aplicações, para isto é necessário esta configuração no Global.asax

AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;

O AntiForgery faz a validação baseada em claims e no cookie do usuário logado.

Migre o módulo de gestão de usuários primeiro

Para utilizar este recurso é importante que esteja utilizando o ASP.NET Core com o ASP.NET Identity 3.0, portanto eu sugiro que este seja o primeiro módulo a ser migrado. A implementação deste projeto compartilha a mesma base do ASP.NET Identity entre as aplicações.

Compartilhando Cookies entre ASP.NET Core e ASP.NET MVC 5

Esta implementação foi baseada no repositório idunno.CookieSharing do qual o Scott Hanselman faz parte dos integrantes. O projeto que disponibilizo no repositório AspNetInterop é uma melhoria da implementação original, no meu projeto as melhorias implementadas foram:

  • Utilização do ASP.NET Identity ao invés do Cookie Middleware
  • Implementação de controle de acesso com base em claims para o ASP.NET Core e ASP.NET MVC 5 (cada um possui uma implementação diferente devido a forma de autorizar usuários no ASP.NET Core ter mudado)
  • Compartilhamento do Cookie no AntiForgery
  • CRUD’s de entidades em cada aplicação
  • Navegação integrada para o usuário não notar a mudança

Este projeto não conta com divisão em camadas para implementar separação de responsabilidades de Dados, Negócios e etc, porém é muito simples de implementar, pois isto não gera impacto na implementação existente.

Código fonte


Caso esteja interessado em conhecer mais sobre ASP.NET, DDD, Padrões de Arquitetura como CQRS, Event Sourcing 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.

Apresentando o Equinox Project

O Equinox Project é um projeto open-source desenvolvido em ASP.NET Core que implementa uma série de tecnologias e abordagens muito utilizadas em grandes projetos.

O Equinox Project é a mais recente contribuição que eu entrego a comunidade técnica e espero que seja de grande ajuda para servir de referência nos futuros projetos escritos em ASP.NET Core.

The Equinox Project

O Equinox Project (versão 1.0) é o resultado de quase duas semanas de estudos e desenvolvimento que dediquei ao criar uma aplicação funcional implementando diversas tecnologias e abordagens na nova plataforma ASP.NET Core.

Por ser totalmente desenvolvido com .NET Core esta aplicação pode rodar em ambientes Windows, Linux e OSX (Mac).

Tecnologias/Recursos Implementados

  • ASP.NET Core 1.1 (com .NET Core)
    • ASP.NET MVC Core
    • ASP.NET Identity Core
      • Isolado do MVC e Autenticando via
        Facebook ou Cadastro
  • Entity Framework Core
  • AutoMapper
  • .NET Core Native DI (Isolado do MVC)
  • Unit of Work
  • Repository e Generic Repository
  • FluentValidator

Arquitetura

  • Arquitetura completa com separação de responsabilidades, SOLID e Clean Code
  • DDD – Domain Driven Design (Camadas e Domain Model Pattern)
  • Domain Events
  • Domain Notifications
  • CQRS (Com consistência imediata)
  • Event Sourcing

Versão 1.0

 O Equinox Project na versão 1.0 implementa um cadastro de clientes (CRUD) com regras de negócio e validações de dados.

  • Toda escrita de dados ocorre através de Commands e CommandHandlers que são processados por um Bus em memória (podendo ser adaptado para um Message Queue por exemplo).
  • Após a execução de um Command é disparado um Evento que realiza alguma ação informativa e também é persistido na base (Event Sourcing).
  • A leitura de dados ocorre de forma mais simples dispensando algumas camadas de negócio.
  • Todas as ações são autorizadas pelo mecanismo do ASP.NET Identity que baseia-se em Claims para permitir a leitura e escrita dos dados.
  • As validações de consistência dos dados são realizadas nos Commands e utilizam o FluentValidator como mecanismo.
  • Todos os erros no processamento ou na validação dos dados são disparados através de Domain Events/Notifications e são informados ao usuário de forma personalizada.
  • É possível visualizar a história da entidade através da aplicação que informa desde a criação até a exclusão as mudanças dos dados que ocorreram e o usuário que as executou.

Estes são alguns dos recursos implementados, existem diversos outros em toda extensão da aplicação. Cada um destes recursos eu irei tratar em artigos individuais em uma nova série sobre ASP.NET Core que irei iniciar muito em breve.

Aviso

  • Este projeto não pretende ser uma solução definitiva para todos os cenários.
  • Algumas versões utilizadas (inclusive do ASP.NET Core 1.1) estão em Beta ou Pre-Release.
  • Cuidado ao utilizar este projeto na sua produção. Analise bem os riscos de ser um Early Adopter.
  • Talvez você não irá precisar de muitos dos recursos implementados, procure evitar o OverEngineering

Sobre o futuro

A versão 2.0 do Equinox Project será uma aplicação bem mais extensa com os recursos a seguir:

  • Aplicação completa de aluguel (Booking) utilizando Domain Model Pattern, CQRS e Event Sourcing.
  • ASP.NET Identity trabalhando através de serviços WebAPI com Bearer Token
  • Novo front-end
  • Bancos separados para leitura e gravação de dados
  • Testes de Unidade

Acompanhe os detalhes que serão atualizados no RoadMap do projeto.

Sugestões?

Tem uma boa ideia sobre implementação ou gostaria de ver algo implementado?
Sugestões e críticas serão muito bem vindas!

Por que Equinox?

O Equinócio (Equinox) é um evento astronômico em que o plano do equador da Terra passa pelo centro do Sol. Este evento ocorre duas vezes por ano em torno de 20 de Março e 23 de Setembro. Wikipedia

Equinox é também uma série de publicações (subtítulo: “The Review of Scientific Illuminism”) em forma de livro que serve como o órgão oficial da A∴A∴, uma ordem iniciática fundada por Aleister Crowley Wikipedia

Estamos Online

O projeto está publicado *orgulhosamente* no Microsoft Azure, experimente!

Código Fonte

The Equinox Project – GitHub


Caso esteja interessado em conhecer mais sobre ASP.NET, DDD, Padrões de Arquitetura como CQRS, Event Sourcing 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.

Introdução ao ASP.NET Core 1.0

Estes últimos dois anos foram de muitas mudanças e novidades para o ASP.NET, que agora ganhou um novo nome. Conheça o ASP.NET Core 1.0.

O ASP.NET Core 1.0 é uma novidade de baixo impacto tecnológico, trata-se do novo nome do novo ASP.NET.

ASP.NET Core 1.0

Desde que anunciado o novo ASP.NET já tivemos alguns nomes, vamos recapitular:

  • ASP.NET vNext
  • ASP.NET 5
  • ASP.NET Core 1.0

Por que não ASP.NET 5?
O nome ASP.NET 5 não foi muito bem recebido por muitos colaboradores da comunidade, gerou diversas reclamações como podemos ver nesta issue do GitHub. O ASP.NET 5 não é apenas uma nova versão do ASP.NET e sim um ASP.NET totalmente novo, reescrito para trabalhar de forma diferente do clássico ASP.NET que já tem 15 anos de existência.

Outro fato que causou confusão foi o MVC 6. ASP.NET 5, MVC 6, Razor 4, SignalR 3, Identity 3, Entity Framework 7 e .NET Core 5. Quantos números para uma tecnologia totalmente nova certo? Para deixar muito claro que o novo ASP.NET substitui o antigo ele precisou mudar de nome outra vez.

Não foi apenas o ASP.NET que mudou de nome:

  • ASP.NET 5 => ASP.NET Core 1.0
  • ASP.NET MVC 6 => ASP.NET Core MVC 1.0
  • .NET Core 5 => .NET Core 1.0
  • Entity Framework 7 => Entity Framework Core 1.0 (ou EF Core 1.0)

Algumas tecnologias citadas acima não tiveram anúncios de novos nomes, porém acredito que possa surgir mais novidades.

Por que 1.0? É um novo ASP.NET, logo todo novo conceito precisa surgir de uma versão inicial, pois não é uma continuidade da tecnologia, é uma nova tecnologia.

Algumas dúvidas podem surgir:

Acompanhei todas as mudanças do ASP.NET 5 agora vou precisar aprender tudo de novo?
Não! Esta mudança anunciada reflete apenas na mudança do nome.

Estou começando a estudar ASP.NET agora, qual versão devo estudar?
Eu recomendo fortemente que estude o ASP.NET MVC 5 e o ASP.NET Core 1.0. O primeiro para atender uma demanda enorme de mercado que não vai sumir em menos de 3 anos e o segundo para poder trabalhar com a nova plataforma em futuros projetos.

Qual a diferença do ASP.NET MVC 5 para o ASP.NET Core 1.0?
É um novo ASP.NET porém ambos trabalham com o MVC, logo a forma de desenvolver não muda muito, o que muda é a tecnologia do stack do ASP.NET, a maneira que ele funciona. Certamente tem muitas mudanças de um para outro, mas conhecendo um é muito fácil entender o outro.

Vou começar um projeto agora, devo desenvolver em ASP.NET Core 1.0?
Uma solução de mercado deve ser escrita com uma tecnologia madura, bem testada e que seja pronta. O ASP.NET MVC 5 (ASP.NET 4.6) ainda é a melhor opção neste momento, pois ainda não temos uma versão 1.0 (RTM) para o ASP.NET Core 1.0, ela virá em breve porém mesmo assim não estará completa como expliquei neste artigo.

Recomendo que utilizem o ASP.NET Core 1.0 em projetos de estudo, pois a viabilidade comercial de uma aplicação não pode depender de possíveis bugs / limitações de uma nova tecnologia.

Por onde começar com o ASP.NET Core 1.0?
Recomendo utilizar o guia do site Get ASP.NET.

Ainda vale a pena estudar ASP.NET WebForms?
Existe uma grande demanda de mercado para WebForms, cerca de 50% de todas aplicações ASP.NET ainda são WebForms, logo se pretende atender a demanda de manutenção em aplicações WebForms é necessário conhecer sim. Minha recomendação é focar os estudos em ASP.NET MVC 5 e ASP.NET Core 1.0. Não recomendo criar novas aplicações em WebForms. Estude apenas se existir a necessidade.

O WebForms faz parte do novo ASP.NET?
Não. O WebForms está pronto e faz parte do ASP.NET 4.6, não irá fazer parte do ASP.NET Core 1.0, pois é tecnologicamente incompatível, a única forma de desenvolvimento em ASP.NET Core 1.0 é o MVC.


O ASP.NET e toda plataforma de desenvolvimento .NET está passando por uma grande revolução para atender o mercado com excelência, segurança e performance. Este é apenas o primeiro passo de uma longa e nova jornada. Mantenha-se atento às novidades, elas vão surgir em um espaço de tempo cada vez menor.

Eu também fiz um vídeo de 8 minutos sobre este assunto, vale a pena conferir:

* Assine meu canal no Youtube 🙂

Referências


Se você estiver interessado em conhecer mais e aprender como desenvolver aplicações com uma arquitetura responsável utilizando DDD, TDD, BDD, aplicando os princípios SOLID, diversos Design Patterns e escrevendo testes de unidade conheça 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. ;)

Palestra ASP.NET 5 – Deep Dive – Vídeo – ASP.NET Brasil Conference

O ASP.NET Brasil Conference 2015 foi um grande sucesso. 400 participantes, palestras de alto nível e muitos prêmios sorteados. Acompanhe as gravações.

Gostaria de agradecer aos presentes no ASP.NET Brasil Conference, neste grande evento eu atuei como organizador e fiquei extremamente satisfeito com o resultado e o feedback dos participantes.

ASP.NET Brasil

Evidentemente eu gostaria de realizar um evento para 5.000, 10.000 pessoas mas por diversas questões é um número muito grande para se trabalhar. Mas quem não pode ir ora por não encontrar mais ingressos disponíveis ora por não ter tido oportunidade não precisa se chatear, nosso conteúdo foi 100% gravado e está sendo distribuído de forma gratuita.

Caso esteja interessado em aprender a desenvolver aplicações Web Corporativas com as melhores práticas de mercado DDD, Patterns, SOLID e etc, confira meu curso:

Curso ASP.NET MVC – Enterprise Applications

Gostaria de compartilhar com vocês a gravação de minha palestra e as demais também.
Sigam o conteúdo abaixo e boa diversão.

ASP.NET 5 Deep Dive

Todas as Palestras

Keynote de Abertura ASP.NET Brasil Conference 2015
Keynote de Abertura
ASP.NET 5 Deep Dive – ASP.NET Brasil Conference 2015
ASP.NET 5 - Deep Dive
ASP.NET 5 Modern WebApps – ASP.NET Brasil Conference 2015
ASP.NET 5 Modern WebApps
Performance no ASP.NET 5 – ASP.NET Brasil Conference 2015
Performance no ASP.NET 5
ASP.NET 5 Multiplataforma – ASP.NET Brasil Conference 2015
ASP.NET 5 Multiplataforma
Microservices com ASP.NET 5 – ASP.NET Brasil Conference 2015
Microservices com ASP.NET 5
C# 6 e Roslyn – ASP.NET Brasil Conference 2015
C# 6 e Roslyn
Entity Framework 7 – ASP.NET Brasil Conference 2015
Entity Framework 7

Já estamos organizando a próxima edição de 2016, fiquem ligados.

Caso queira deixar seu feedback utilize os comentários abaixo 🙂

Palestra – Novidades do ASP.NET 5 e Visual Studio 15 – Vídeo

Palestrei sobre as novidades do ASP.NET 5 e Visual Studio 2015 no Codificando Night Week um evento online promovido pela comunidade Microsoft.

Primeiramente gostaria de agradecer aos organizadores do Codificando Night Week pelo convite, sempre aceitarei com muito prazer participar e dividir o conhecimento sobre grande revolução que já está acontecendo faz algum tempo.

O evento Codificando Night Week foi realizado durante cinco dias sendo um dia totalmente dedicado para Web, dia qual eu e mais outros palestrantes apresentaram temas muito interessantes.

O interessante desta palestra é que poucas horas antes havia sido liberado o CTP6 do Visual Studio 2015 e o ASP.NET 5 tinha sido liberado na versão beta 3 e eu consegui já apresentar todas as recentes novidades destas versões.

Foram abordados os temas:

  • .NET 2015
  • ASP.NET 5 (beta3)
  • Novidades de comandos CMD (EF, Scaffolding)
  • Visual Studio 2015 (NPM, Grunt, Bower, etc…)

O vídeo a seguir é de todas as palestras, porém deixei configurado para iniciar diretamente na minha, use o mesmo vídeo para assistir as demais.

* Assine meu canal no Youtube 🙂

Vamos continuar a troca de conhecimentos, participe nos comentários abaixo 😉

Podcast ASP.NET 5, MVC 6 e Novidades

Participei de um podcast sobre ASP.NET 5, MVC 6 e novidades com Fabrício Sanchez, produtor do podcast Papo Tech.

PAPO TECH ASP.NET 5

Primeiramente gostaria de agradecer ao convite feito pelo Fabrício Sanchez que também é Microsoft MVP em ASP.NET e promove o Papo Tech, um podcast sobre tecnologia onde muitos assuntos interessantes são abordados e debatidos de forma bem descontraída e enriquecedora.

Falamos do ASP.NET desde seus primórdios com o ASP clássico, passando pelo ASP.NET WebForms, MVC, OWIN, Katana até chegarmos no ASP.NET 5 (vNext) e .NET 2015. Fizemos também um esclarecimento da estratégia da Microsoft em criar o ASP.NET e para onde estaremos indo num futuro muito próximo na nova era do .NET e do desenvolvimento Web multiplataforma.

Particularmente eu achei que ficou muito legal, fácil de acompanhar e de ouvir. Parabenizo o Fabrício pela ótima condução dos assuntos.

Para ouvir use o player abaixo.

Caso não consiga ouvir recomendo que ouça diretamente no site do Papo Tech e aproveite para ouvir os demais, eu já ouvi e são muito legais!

Referências