segunda-feira, julho 12, 2010

Dez Anos de .NET

No dia 22 de junho de 2000 a Microsoft anunciou a plataforma .NET; em 11 de julho do mesmo ano foi disponibilizada um versão "pré-beta" no evento PDC 2000 (press release aqui).

Eu comecei a conhecer para valer o .Net em 2001, com um documento (não Microsoft) entitulado "Understanding .NET". Passados dez anos, é interessante revê-lo.



Uma Aposta Pesada

Segunda a própria Microsoft, o .NET era um plano de três a cinco anos do tipo "bet-company". Hoje é claro que a aposta foi vitoriosa; certamente a Microsoft estaria em posição bem pior se tivesse seguido no curso anterior. Mas o caminho até aqui certamente não foi fácil nem direto.

A primeira dificuldade foi explicar o que era .NET. Não ajudou muito o fato da Microsoft começar a grudar o nome em tudo quanto é coisa. Até pouco antes do lançamento o Windows Server 2003 era chamado de Windows .NET Server. O Windows CE teve menos sorte e não escapou de ser chamado CE .NET.

O documento "Understanding .NET" considera o .NET como composto de três partes: uma visão, uma plataforma e um conjunto de produtos e serviços que rodam na plataforma.

A Visão .NET

Sempre seguindo o citado documento, a visão .NET teria três pilares:
  • Os web services como forma de integração de aplicações. Embora este conceito fosse consenso na "indústria", ele parece não ter obtido a posição de destaque esperada.
  • Os "Fundation Services", serviços básicos disponibilizados na internet para armazenamento de dados, autenticação e notificação. Embora esta ideia ainda não tenha se concretizado (e as ofertas da Microsoft nesta área, como o Microsoft Passport, tenham fracassado), ela me parece estar sendo reciclada com o "cloud computing".
  • O PC como elemento principal. A Microsoft acertou nisto, pelo menos até agora. O "Network Computer", que era muito falado na época do anúncio do .NET, não deu em nada. Mas continuam sendo propostas alternativas ao PC, sempre baseadas na ideia de mover o centro do PC para a internet.
A Plataforma .NET

Neste item o documento agrupa as coisas palpáveis do .NET. E é onde vemos os maiores sucessos.

Seu principal elemento é o .NET Framework, um conjunto de bibliotecas e ferramentas de desenvolvimento. Ao longo destes dez anos ele passou por importantes acréscimos, mas mostrou ter uma base bastante sólida.

Na parte mais baixa temos o Common Language Runtime, que é quem executa o código intermediário gerado pelos compiladores .NET, mais conhecido como "código gerenciado". Entre as vantagens previstas para o CLR temos:
  • Fim do conflito de versões ("DLL Hell").
  • Prevenção de bugs e falhas de segurança.
  • Contenção de vírus.
  • Redução dos memory leaks.
  • Infraestrutura uniforme para múltiplas linguagens.
De certa forma o CLR tem avanços em todos estes pontos. As configurações de segurança, entretanto, se mostraram complicadas demais para os administradores de sistema. A maior parte do sistema operacional e das aplicações continua sendo em "código nativo". Em termos práticos sentimos pouco estas vantagens.

Um ponto positivo é o desempenho do CLR, que pelo menos foi suficiente desde o começo para evitar as reclamações da aurora do Java.

Em cima do CLR temos as bibliotecas de classe. Desde o início elas foram bastante abrangentes, fornecendo a maioria dos serviços do Win32 de uma forma segura e organizada. O Windows Forms colocou a facilidade de desenvolvimento do VB sobre uma boa estrutura orientada a objetos. Além disso, as bibliotecas do .NET incluem o suporte aos web services, o ADO.NET e o ASP.NET.

O ADO.NET (que o documento praticamente não menciona) criou finalmente uma hierarquia de objetos decente para acesso a banco de dados. Na parte negativa, ele segrega os vários tipos de base de dados, dificultando a geração de aplicações que possam usar bases diversas.

O ASP.NET começou com enfase quase que total no Web Forms. Embora atualmente o Web Forms esteja perdendo terreno para o MVC, eu o considero um belo exercício de abstração e uma solução eficaz para desenvolvedores web ocasionais criarem aplicações simples que não precisem de grande escalabilidade. E não se pode negar que está anos-luz à frente da gambiarra que era o ASP original.

Na parte de linguagens, a Microsoft foi muito audaciosa. A linguagemVB "clássica" foi abandonada e substituída por uma linguagem muito diferente (apesar do nome VB.NET). Uma nova linguagem foi criada, o C#. O sucesso de ambas é inegável. O Visual C++ "gerenciado" teve menos aceitação e o JScript.NET foi simplesmente ignorado e atualmente nem é suportado diretamente no Visual Studio. Já o Visual J++ (depois renomeado J#) foi abandonado pelo caminho.

Aliás, o Visual Studio .NET é o próximo componente da plataforma. Neste dez anos passou por 3 revisões significativas após o lançamento (as versões 2005, 2008 e 2010) e segue firme como um dos principais ambientes de desenvolvimento de aplicações Windows.

Fondation Services (HailStorm)

Considerado no documento um dos componentes da plataforma .NET, seria um conjunto de web services oferecidos pela Microsoft. O carro chefe era o serviço de autenticação Passport. Na prática não deu em nada.

Concluindo

Pode ser difícil reparar hoje, mas o .NET foi algo extremamente ousado. O simples fato de terem matado a linguagem que era mais popular na época (o VB "clássico") é incrível.

A plataforma .NET em si (CLR, bibliotecas, VB.NET e C#) cumpriu as funções a que se propunha. Com ele passou a ser possível fazer vários tipos de aplicações (mas não todos!) de uma forma mais efetiva, com menos esforço e maior qualidade.

As partes mais afastadas deste núcleo, como o Foundation Services e o JScript.NET não se deram muito bem.

A grande decepção foi o .NET e o "código gerenciado" não terem sido abraçados pelo sistema operacional em si. Contrariando expectativas criadas pela própria Microsoft, pouco do Vista foi escrito em .NET e parece pouco provável que isto mude nas próximas versões.

Olhando a Microsoft nos tempos recentes, percebo a falta de uma nova ousadia e esforço concentrado como foi o .NET dez anos atrás.


Fonte adicional: The Register

Um comentário:

Anônimo disse...

Talvez a Microsoft deveria investir em um micro-kernel "boot+coisas triviais", e criar o windows baseado no .net em cima disso