ASP.NET vNext no .NET Architects Days 2014

1.096 visualizações

Publicada em

Palestra ministrada no DNAD 2014.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

ASP.NET vNext no .NET Architects Days 2014

  1. 1. Globalcode – Open4education ASP.NET vNext Giovanni Bassi giovanni@lambda3.com.br @giovannibassi Victor Cavalcante victor@cavalcante.net @vcavalcante
  2. 2. @VCavalcante @GiovanniBassi
  3. 3. Globalcode – Open4education História 2002 – Lançado ASP.NET e WebForms Foco: trazer o desenvolvedor VB6 pra web Desenvolvedores web de verdade choram ou tiram sarro do WebForms 2004 – Lançado JSF seguindo ideia muito semelhante ao WebForms 2004 – Primeira versão do Ruby on Rails 2005 – Victor já avisava todo mundo sobre o que a Web era e o que não era e criticava o WebForms
  4. 4. Globalcode – Open4education História ~2005/2006 – Lançado MonoRail (Rails pra .NET) 2007 – Nasce Silverlight E Microsoft desiste do HTML 12/2007 – CTP do ASP.NET MVC E Microsoft volta pro HTML o/ 2008 – Criado .NET Architects Discussões homéricas sobre Silverlight, WebForms e MVC (E DDD. O tempo todo. E repositórios. Sim, desde 2008.) 2009 – 1.0 do ASP.NET MVC 2009 – Lançado NodeJS
  5. 5. Globalcode – Open4education História 2011 – Última versão do Silverlight 2012 – SPA, SPA, SPA, SPA! 2012 – Palestra sobre “Nova Web” no DNAD Nós avisamos!  Final de 2013 – Começa desenvolvimento do ASP.NET vNext 2014 – ASP.NET vNext aberto a público 2015 – Lançamento do ASP.NET vNext?
  6. 6. Globalcode – Open4education Dúvidas comuns Muda alguma coisa na arquitetura? Cadê o WebForms? <o> Se não tem dll quer dizer que é interpretado? Vai ficar mais lento? Vou ter que codar na linha de comando? Vou conseguir migrar meus projetos? A Microsoft me abandonou?
  7. 7. ASP.NET vNext e a web moderna Totalmente modular Ciclo de desenvolvimento rápido Transição transparente entre nuvem e on-premises Escolha seus editores e ferramentas Código aberto com contribuições externas Cross-Platform Rápido Faster Development Cycle Globalcode – Open4education
  8. 8. Platform Framework Tools …or bring your own …or bring your own …or bring your own Globalcode – Open4education ASP.NET vNext - Resumo
  9. 9. Globalcode – Open4education HTML Helpers Controllers Actions Filters Model Biding DI Frameworks Web Hoje Razor Razor HTML Helpers Controllers Actions Filters Model Biding DI ASP.NET vNext
  10. 10. Globalcode – Open4education Pague pelo que usar A versão atual do ASP.NET te obriga a passar por um pipeline gigantesco Isso impacta desempenho No vNext você vai escolher o que vai usar, e o que não for carregado não traz overhead Você sabia que o IIS é um dos servidores web mais rápidos do mercado?
  11. 11. Globalcode – Open4education
  12. 12. Globalcode – Open4education github.com/aspnet/home Windows 7 ou maior Windows Server 2008 R2 + NET 4.5.1 for hosting in IIS Mono >= 3.41 https://github.com/mono/mono
  13. 13. Globalcode – Open4education Uma conversa no Jabbr.net - Esse “vNext” é do .NET ou do ASP.NET? - É do ASP.NET. - Mas tem uma app console lá. Console, não é ASP.NET! - Porque não? - Ok, você venceu.
  14. 14. Globalcode – Open4education Diferenças fundamentais
  15. 15. Globalcode – Open4education Sem WebForms!
  16. 16. Globalcode – Open4education Diferenças fundamentais Assemblies em disco opcionais Sem WebForms Diferenças no framework, quebra de compatibilidade em APIs Linha de comando é um cenário 100% funcional Evolução independente do Windows Server e do .NET Framework 100% testável 100% portável
  17. 17. Globalcode – Open4education KRE
  18. 18. Globalcode – Open4education Estrutura do KRE Onde fica? %USERPROFILE%.kre O que tem lá?
  19. 19. Otimizado para a nuvem Globalcode – Open4education
  20. 20. MVC, Web API, Web Pages 6, SignalR 3, EF 7 Globalcode – Open4education ASP.NET vNext - Resumo Feature ASP.NET vNext ASP.NET vNext (Cloud Optimized) Cloud Ready * * Design Modular * * Injeção de Dependência * * Tracing / Debugging Consistente * * Desenvolvimento Rápido (Sem o passo de build) * * Open Source * * Full Side by Side (framework deployed inside application) * Fast startup, Low memory / High throughput (best of class) *
  21. 21. Globalcode – Open4education Command Line K É a comando de entrada para o runtime KVM É o gerenciador de versão, ele é o responsável por manter várias versões ao mesmo tempo. KPM É o gerenciador de pacotes, ele é o responsável por instalar pacotes e empacotar sua aplicação
  22. 22. Globalcode – Open4education KVM list Lista os KREs disponíveis upgrade Instala a última versão do KRE Padrão é não usar o cloud optimized Já deixa essa versão como sendo a padrão install Instala uma versão específica do KRE use Escolhe uma versão
  23. 23. Globalcode – Open4education KPM restore Restaura seus pacotes Pacotes vão parar em $HOME/.kpm/packages pack Prepara a aplicação pra deploy (mas não compila) build Compila o projeto e gera a dll e o nupkg (para k10 e net45) add Adiciona uma dependência ao projeto
  24. 24. Globalcode – Open4education Onde ficam os pacotes do KPM? $HOME/.kpm/packages
  25. 25. Globalcode – Open4education Demo Hello World – Console
  26. 26. Globalcode – Open4education Anatomia
  27. 27. Globalcode – Open4education Demo Hello World – Visual Studio
  28. 28. Globalcode – Open4education Project.json Dependências { "dependencies": { "Microsoft.AspNet.ConfigurationModel": "0.1-alpha-*", "SomeProject": "" } }
  29. 29. Globalcode – Open4education Project.json Configurações { "configurations": { "Debug": { "compilationOptions": { "define": ["DEBUG", "TRACE"], "debugSymbols": true } }, "Release": { "compilationOptions": { "define": ["RELEASE", "TRACE"], "optimize": true, "debugSymbols": false } } } }
  30. 30. Globalcode – Open4education Project.json Frameworks { "frameworks": { "net45": {}, "k10": { "dependencies": { "System.Collections": "4.0.0.0", "System.Collections.Concurrent": "4.0.0.0", "System.ComponentModel": "4.0.0.0", "System.Linq": "4.0.0.0", "System.Reflection": "4.0.10.0", } } } }
  31. 31. Globalcode – Open4education Project.json Sources { "code": "*.cs", "exclude": "buggy/**/*.cs", "resources": "embed/**/*.*" }
  32. 32. Globalcode – Open4education Project.json Commands { "commands": { "web": "Microsoft.AspNet.Hosting server.name=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001", "test": "Xunit.KRunner" } }
  33. 33. Globalcode – Open4education Project.json Scripts { "scripts": { "prebuild": "echo before building", "postbuild": "echo before building", "prepack": "echo before packing", "postpack": "echo after packing", "prerestore": "echo before restoring packages", "postrestore": "echo restoring packages" } }
  34. 34. Globalcode – Open4education Cadê o Web.Config? Você pode ter outros tipos de arquivo de config Web.Config Config.ini Config.json Tudo depende do Configuration Model escolhido Por padrão é o Microsoft.Framework.ConfigurationModel.Json
  35. 35. Compilação em memória Globalcode – Open4education
  36. 36. Deploy do runtime e framework com a sua Globalcode – Open4education aplicação.
  37. 37. Globalcode – Open4education Nuget FTW!
  38. 38. Impactos na arquitetura (porque isso aqui é um evento de arquitetura) Globalcode – Open4education
  39. 39. Globalcode – Open4education
  40. 40. O que roda sua aplicação não é uma dll Globalcode – Open4education O código que vai rodar é .cs ou .vb Você ainda pode precompilar Deploy muito facilitado kpm pack xcopy Dependências locais, tudo que vai rodar está no diretório da aplicação As dependências são nupkgs, não dlls
  41. 41. Globalcode – Open4education Servidor web IIS funciona Suporte a outros servidores são esperados Self host Kestrel (self host feito pela Microsoft baseado em libuv – o mesmo do Nodejs) Nginx Apache Devices menores agora podem rodar (roteadores wifi, modem, RaspberryPi, IoT, carros, etc)
  42. 42. Globalcode – Open4education POCO Controllers Controllers não precisam mais herdar de uma classe base Colaboram com interfaces que recebem via DI 100% testáveis Muda bastante E não muda quase nada
  43. 43. Globalcode – Open4education
  44. 44. Globalcode – Open4education Projetos no .NET Foundation ASP.NET MVC ASP.NET SignalR ASP.NET vNext ASP.NET Web Pages ASP.NET Web API Composition (MEF2) Couchbase for .NET Entity Framework Linq to Hive Mailkit Mimekit MEF MVVM Light Toolkit .NET API for Hadoop WebClient .NET Compiler Platform ("Roslyn") .NET Map Reduce API for Hadoop .NET Micro Framework Open XML SDK OWIN Authentication Middleware Web Protection Library Windows Azure .NET SDK Windows Phone Toolkit Salesforce Toolkits for .NET System.Drawing Xamarin.Auth Xamarin.Mobile
  45. 45. Globalcode – Open4education Mais recursos Home: http://asp.net/vnext Repositório principal: https://github.com/aspnet/Home Controle de projeto: http://huboard.com/aspnet/kruntime Sala de chat: https://jabbr.net/#/rooms/AspNetvNext Podcast Tecnoretórica: http://bit.ly/aspnetvnextpodcast1 http://bit.ly/aspnetvnextpodcast2 ASP.NET vNext no blog da Lambda3: http://bit.ly/aspnetvnextlambda3
  46. 46. Globalcode – Open4education Obrigado! Giovanni Bassi giovanni@lambda3.com.br @giovannibassi Victor Cavalcante victor@cavalcante.net @vcavalcante

×