Já estão disponíveis a nova versão 2010 do Visual Studio e o .NET Framework 4.0. É impressionante a quantidade de novidades que a Microsoft conseguiu colocar nesta versão, apenas dois anos depois da anterior. Neste artigo comentarei as novidades no .NET Framework 4.0.
Em primeiro lugar, o Framework foi “consolidado”. As versões 1.0, 1.1 e 2.0 eram versões completas e substituíam completamente as anteriores. A 3.0, a 3.5 e a 3.5 SP1 rodavam “em cima” da 2.0 e apenas acrescentavam funcionalidade. A 4.0 volta a substituir tudo, com uma novidade: seus programas podem carregar e utilizar várias versões do Framework ao mesmo tempo. Isso garante a compatibilidade com componentes já compilados que exijam uma versão específica do .NET Framework. Este recurso também dá à Microsoft a liberdade de introduzir novidades no Framework que “quebrariam” os programas antigos, podendo alterar alguma decisão antiga que não é mais considerada tão boa.
O Framework 4.0 suporta novos tipos voltados a cálculos matemáticos (números complexos e inteiros de tamanho arbitrário), linguagens dinâmicas e chama objetos COM sem precisar dos “interop assemblies”, famosos por causarem problemas de versionamento.
O novo framework e suas linguagens suportam o conceito de “contratos”, algo disponível há algum tempo em linguagens como Eiffel e Spec#. Neste tipo de programação, os elementos como as classes, propriedades e funções declaram “contratos”, por exemplo, dizendo que um argumento de função não pode ser nulo ou que uma variável de instância nunca pode ser maior que 100. O compilador, em parceria com o Framework, pode então criar uma versão de testes onde todos os contratos são validados em tempo de execução. Na verdade, algumas verificações podem ser feitas até mesmo em tempo de compilação, com ferramentas de análise estática. Os contratos também devem estar ligados quando os testes – se existirem - forem rodados, detectando erros de programação automaticamente.
Tradicionalmente existe uma separação entre linguagens “estáticas” como C++, Pascal, C# e as “dinâmicas” como VBScript, JScript e Python. Nas linguagens estáticas, as chamadas a componentes, métodos e propriedades são resolvidas em tempo de compilação. Já as linguagens dinâmicas podem resolver tudo em tempo de execução, além de chamar coisas estáticas. A API de “reflection” dá às linguagens estáticas recursos das dinâmicas, mas com algum trabalho e de forma pouco intuitiva. Pois bem, as linguagens estáticas do Framework 4.0 permitem resolver coisas em tempo de execução diretamente no código, como se fosse um “script”. Isso é especialmente útil quando você estiver fazendo as linguagens estáticas chamarem as dinâmicas, uma necessidade cada vez mais comum na integração com scripts em páginas Web.
O Framework 4.0 suporta também diversas extensões para que seja mais fácil desenvolver programas que rodam com várias “threads” e aproveitam melhor as CPUs de vários núcleos existentes atualmente. Ele também suporta diretamente “memory mapped files”, um mecanismo extremamente eficiente de comunicação entre processos que antes deveria ser chamado através de “Interop”.
O Entity Framework suporta agora a criação de banco de dados a partir do modelo (e não apenas o modelo a partir do contrato); o ADO.NET Data Services possui diversos novos recursos como cursores baseados em servidor e outros que melhoram bastante o desempenho.
Se você já achou o Framework cheio de novidades, imagine o que o Visual Studio 2010 tem de novo...
Mauro Sant’Anna (mas_mauro@hotmail.com) ainda não conseguiu digerir todas as novidades do Framework 4.0 e Visual Studio 2010.
Olho: A Microsoft tem liberdade de introduzir novidades no Framework que “quebrariam” os programas antigos.