Baixe o app para aproveitar ainda mais
Prévia do material em texto
Por que o .NET Core e o futuro da plataforma de desenvolvimento da Microsoft Tim Anderson Tradução: José Cassiano Grassi Gunji Texto original: https://www.theregister.co.uk/2015/11/20/microsoft_net_core_developm ent_platform_fork/?page=1 A Microsoft está apostando em uma variante de código aberto do Framework .NET para atrair clientes. Análise. Faz apenas um ano desde que a Microsoft anunciou a abertura do código do .NET Core, uma variante multiplataforma de seu Framework .NET para Windows. O Framework .NET não está desaparecendo, mas está ficando claro que a companhia está focando no .NET Core como o futuro de sua plataforma de desenvolvimento. O Framework .NET da Microsoft já possui uma longa história, tendo sido anunciada primeiramente na TechEd da Europa em 2000. Naquele momento, aquilo foi um movimento defensivo contra o Java da Sun, que ameaçava o Windows graças às suas capacidades multiplataforma combinadas com uma linguagem de programação que era mais fácil e produtiva do que o C ou o C++. O C# da Microsoft, a principal linguagem .NET, não se distanciou do Java, mas provou ser popular para o desenvolvimento de aplicativos empresariais. A companhia também evoluiu a linguagem mais rapidamente do que a Sun foi capaz com o Java, mostrando o que um time interno e competente pode conseguir frente a um processo orientado à comunidade que é mais burocrático. O ASP.NET, criado conjuntamente por Scott Guthrie da Microsoft, foi um grande avanço sobre o velho ASP (Active Server Pages) como um framework para aplicativos web. Por que, então, a Microsoft resolveu criar uma variante do Framework .NET, com todos os riscos e confusão que isso significa, e embarcar no código aberto e na multiplataforma? Há várias razões. https://www.theregister.co.uk/2015/11/20/microsoft_net_core_development_platform_fork/?page=1 https://www.theregister.co.uk/2015/11/20/microsoft_net_core_development_platform_fork/?page=1 A primeira é que o Framework .NET era monolítico e suas dependências internas muito complicadas para que a Microsoft desse prosseguimento a certos projetos. Em particular, a companhia queria compilar o .NET para código realmente nativo, sem precisar de um runtime instalado. Os benefícios seriam um carregamento mais rápido, melhor desempenho em alguns cenários, mas sobre tudo, uma implantação bem mais limpa e simples. Se os aplicativos dependem de um runtime de um sistema operacional, então há sempre o risco de que uma atualização do sistema operacional pode quebrar o aplicativo. O fardo da compatibilidade também tende a atrasar o desenvolvimento de um runtime. A solução da Microsoft foi refatorar o Framework .NET em um sistema novo e modular, mantendo ainda a versão existente para garantir a compatibilidade. Esta versão nova é o .NET Core. Ela foi inicialmente usada para aplicativos da loja do Windows 8, que é a razão para que o projeto .NET Native inicialmente visasse apenas aplicativos da loja e agora tenha evoluído na Universal Windows Platform (UWP) para o Windows 10. No evento Connect em Nova Iorque nesta semana [20 a 26 de novembro de 2015], a Microsoft exibiu o próximo estágio do .NET Native: direcionando o .NET Core para Linux, Mac e Windows. Houve uma demonstração de código compilado .NET Core para código nativo Ubuntu, embora este recurso ainda não esteja presente na versão pública. .NET Core – Otimizado para DevOps? Quer seja usado ou não o .NET Native, liberar os aplicativos .NET de um runtime de sistema operacional é uma estratégia que se adapta melhor às tendências de desenvolvimento de hoje, para aplicativos organizados em contêineres e microsserviços, aplicativos distribuídos construídos de componentes que podem ser mantidos e atualizados separadamente. A versão Nano Server “pelada” do Windows Server roda o .NET Core mas não o Framework .NET; mais uma vez, isso é tudo uma parte de um movimento para uma organização em contêineres e DevOps, implantação contínua e automatizada de aplicativos. Note que, exceto aplicativos UWP, o .NET Core é para aplicativos servidores, não para aplicativos desktop com uma GUI. A Microsoft não está portando frameworks como o Windows Forms ou o Windows Presentation Foundation para o .NET Core. Entretanto, ele é código aberto, então sempre será possível que a comunidade desenvolva frameworks GUI. Também há um relacionamento entre o .NET Core e Mono, a implementação independente e de código aberto do .NET fundada por Miguel de Icaza em 2001. Mono suporta aplicativos desktop. Hoje de Icasa está no corpo de diretores da Fundação .NET, com a tarefa de supervisionar o .NET Core. Falando no evento dotnetConf em Março de 2015, de Icasa disse que o Mono vai, eventualmente, ser apenas um núcleo runtime, emprestando tanto o compilador “Roslyn” e as bibliotecas CoreFX Foundation do .NET Core. A próxima questão então: por que multiplataforma e código aberto? A verdade é que estas duas questões estão relacionadas. Na dotnetConf, o Gerente de Programa Immo Landwerth descreveu código aberto como sendo “a maneira mais sustentável de construir uma estrutura multiplataforma”. A razão dada para ser multiplataforma é atrair mais clientes para o .NET e construir um ecossistema mais forte, tais como bibliotecas de terceiros e aplicativos possam rodar no .NET. Há riscos óbvios para a companhia tanto na multiplataforma quanto no código aberto. A Microsoft está abrindo mão da propriedade intelectual assim como permitindo que clientes rodem aplicativos .NET em sistemas não Windows, sem lucro advindo de licenças. Internamente à Microsoft, o caso de negócio para o .NET Core ainda deve se estabelecer. Conversando com o pessoal da .NET Foundation eu tenho a impressão de que isso tudo se deve ao Azure, a plataforma cloud da Microsoft. Azure suporta Linux assim como Windows e, se você implanta no Azure, a Microsoft recebe dinheiro seja lá qual for o sistema operacional que você esteja usando. Uma parceria com a Red Hat recentemente anunciada não teria sido possível sem essa estratégia de código aberto e multiplataforma. O Linux Red Hat Enterprise agora é suportado no Azure, e é o “sistema operacional de referência para o .NET Core no Linux”, de acordo com o anúncio à imprensa. Outro fator é que através do .NET Core, a Microsoft espera estimular o uso de suas linguagens, incluindo C# e F#, uma linguagem de programação funcional. Se você codifica nestas linguagens, a Microsoft possui uma quantidade enorme de bibliotecas que o atrairão para o SharePoint ou o Office 365, por exemplo, permitindo que a companhia lucre com licenças por este caminho. Quão séria a Microsoft está sobre o .NET Core? Quão séria a Microsoft está sobre o .NET Core? Até onde qualquer um pode ver, muito séria – é claro, ela estava muito séria sobre o Silverlight alguns anos atrás, que era um plugin para browser agora abandonado. Assim, essas coisas podem mudar. Na dotnetConf, o Gerente de Programa Richard Lander disse que de 100 a 200 pessoas estão trabalhando no .NET Core, excluindo equipes relacionadas, como aqueles para o Visual Studio e o ASP.NET. É um “investimento bem notável”, ele disse. Outra pista vem de Martin Woodward da Microsoft, Diretor Executivo da .NET Foundation e, segundo ele, o único membro de tempo integral presente. Ele se apresentou no evento recente Future Decoded em Londres e esteve disponível na feira do evento. Falando sobre a relação entre o Framework .NET e o .NET Core, ele disse que “trabalho em novos recursos acontece mais no .NET Core hoje em dia”, e este código é então trazido para o Framework .NET para dar suporte lá. Na Connect, a Microsoft anunciou que o .NET Core está no estágio de Release Candidate, completo com uma licença “go-live” de modo que a produção de aplicativos está suportada. Você vai encarar? Provavelmente ainda não. Um problema com o .NET Core é que ele é um parente“pelado” do Framework .NET completo, e aplicativos existentes provavelmente não irão funcionar sem muito trabalho antes. “.NET Core v1 não é usável para muitos apps”, afirmou o desenvolvedor Frans Bouma no Twitter. Se o seu aplicativo usa DataTable, por exemplo, que é uma parte da biblioteca ADO.NET, ele não irá funcionar no .NET Core, já que ela não foi portada. A Microsoft portou a sua biblioteca de mapeamento objeto-relacional, o Entity Framework para o .NET Core, mas alguns desenvolvedores a evitam por aspectos relacionados ao desempenho. O Entity Framework 7 (EF7) RC1 foi lançado recentemente, e em seu anúncio, Rowan Miller da Microsoft nota que “devido às mudanças fundamentais no EF7 nós não recomendamos tentar mover um aplicativo EF6.x para o EF7 nesta etapa”. O EF7 também é mais lento que o EF6 neste release, embora Miller tenha dito que ele será mais rápido quando ele for definitivamente lançado. Existe um gigantesco ecossistema criado no Framework .NET, e portá-lo para o .NET Core não é trivial. Dado que o Framework .NET ainda está aqui, não está claro se os desenvolvedores irão desejar investir o tempo e a energia na migração. Como é o desempenho do .NET Core contra o Framework .NET em geral? A versão oficial é a de que ele é similar, embora como .NET Core é otimizado para processamento concorrente, ele deve desempenhar melhor em alguns cenários, assim como o Framework .NET maduro irá desempenhar melhor em outros. Apesar de alguns aspectos difíceis, essa é uma iniciativa corajosa da Microsoft e uma que se encaixa muito bem com DevOps e computação em nuvem. Também está claro que a companhia enxerga isso como o futuro da plataforma .NET – note que ela é para o UWP assim como para aplicativos de servidores – Assim, aqueles trabalhando com .NET devem ficar atentos, mesmo que seja muito cedo para usá-lo para trabalho real.
Compartilhar