Tudo o que você precisa saber dos últimos eventos da Microsoft

O último mês foi muito movimentado para quem acompanha a evolução das tecnologias da plataforma Microsoft. Ousaria dizer que fazia tempo que as novidades anunciadas não causavam tanta empolgação na comunidade. Eu, pelo menos, fiquei muito empolgado com o que foi divulgado, como há tempos não ficava. Mas não se trata de um sentimento superficial, vazio, de simplesmente celebrar o novo pelo novo, de mudar para continuar como está, como muitas vezes vemos por aí. Muito pelo contrário. Dá para perceber que os anúncios feitos seguem uma coesão e alinhamento que normalmente não se via na Microsoft, famosa por disputas internas entre suas divisões de produtos, que costumavam defender seus próprios interesses, que não necessariamente era o melhor para a empresa. A ideia de One Microsoft não era brincadeira.

É possível perceber que por trás de tudo isso existe uma linha de pensamento, um direcionamento estratégico, que todos os times de produto da empresa parecem estar perseguindo. A Microsoft vem mudando nos últimos anos, mas nesse último mês chegou-se ao ápice desse processo, quando foi possível vislumbrar as peças se encaixando e muita coisa começando a fazer mais sentido. É claro que esse comprometimento com a mudança é uma questão de sobrevivência para a empresa, já que o mundo mudou muito nos últimos 15 anos, mas não deixa de ser fascinante acompanhar essa transformação. A Microsoft se deu conta que não é mais o centro da computação pessoal, como foi um dia. E que nunca mais o Windows será a única plataforma computacional utilizada pelas pessoas, e sim, mais uma das plataformas com as quais as pessoas interagem. Claro que a Microsoft prefere que o Windows seja a escolha, mas se não for, tudo bem também, pois ela pode oferecer seus serviços, sua plataforma de computação na nuvem e suas ferramentas. A Microsoft de hoje aceita e abraça a computação na nuvem, a filosofia open-source, o modelo de serviços/assinatura (ao invés do licenciamento perpétuo) e as múltiplas plataformas assim como quando, no meio dos anos 90, aceitou e abraçou a Internet. Se alguém acha que a Microsoft vai se tornar irrelevante nesse novo mundo, é bom rever os seus conceitos, pois ela está mais forte do que nunca, com uma estratégia bem definida e muito bem posicionada tecnicamente para alcançar seus objetivos.

No início de abril, ocorreu o evento Build, voltado para desenvolvedores, e em maio, o TechEd (os vídeos das palestras, tanto do Build quanto do TechEd, podem ser vistos e baixados gratuitamente no Channel 9). O que se viu foi uma avalanche de anúncios de novas tecnologias, ferramentas, funcionalidades e o roadmap para onde a Microsoft está caminhando. Listo abaixo um resumo dos principais anúncios feitos nesses eventos. Apesar de já ter se passado um certo tempo, principalmente em relação ao Build, ainda há muita coisa a ser digerida. Pretendo voltar a alguns desses temas com mais detalhes, conforme eu conseguir processar tanta informação:

  • Windows Phone 8.1: possuirá um novo modelo de desenvolvimento, baseado no WinRT (Windows Runtime) e com possibilidade de uso de C++, .NET (XAML/C#/VB.NET) ou HTML5/Javascript/CSS, como já ocorre no desenvolvimento de aplicações Windows Store (antigo Metro) no Windows 8 para PCs e tablets, tornando possível assim a unificação do modelo de desenvolvimento entre as diversas plataformas e versões do Windows! Também foi demonstrada a Cortana, o assistente pessoal digital que utiliza técnicas de inteligência artificial e machine learning, com o qual será possível interagir através de linguagem natural, falada e escrita. Todos smartphones com Windows Phone 8 receberão a atualização para Windows Phone 8.1, que deve ser liberada nas próximas semanas.
  • Windows 8.1 Update: a novidade é o Brokered Windows Runtime Components,  que permitirá aplicações Windows Store/Metro (que rodam sobre WinRT) interagirem com aplicações desktop .NET (que não rodam sobre WinRT). O objetivo é permitir maior reaproveitamento de código legado, possibilitando modernizar a camada de apresentação de uma aplicação legada sem ter que reescrevê-la totalmente. Essa é uma funcionalidade voltada para aplicações corporativas. Além disso, essa atualização traz várias melhorias para equipamentos baseados em teclado e mouse, ou seja, que não possuem touch, o que é uma grande reclamação do Windows 8. O Windows 8.1 Update já está disponível no Windows Update;
  • Windows Universal Apps: com o Windows Phone 8.1 e Windows 8.1 Update ambos baseados no WinRT, a Microsoft introduziu um novo tipo de projeto do Visual Studio chamado Windows Universal Apps, que possibilitará que a mesma aplicação rode tanto em smartphones, PCs e tablets Windows, adaptando somente a interface de cada dispositivo e reaproveitando todo o resto. No futuro, a ideia é que aplicação também possa ser executada no Xbox One;
  • Demais assuntos sobre Windows: smartphones e tablets de até 9 polegadas não precisarão mais pagar licença do Windows. Haverá uma versão do Windows para Internet das Coisas (Internet of Things) e foi feita uma demonstração da volta do menu Iniciar ao Windows, cuja retirada sempre foi motivo de polêmica, além da possibilidade de se executar aplicações Windows Store/Metro em janelas no desktop, ainda sem previsão de data;
StartMenuWindows8Novo menu Iniciar do Windows, ainda sem data para chegar

 

  • Internet Explorer 11: o engine do IE11 será o mesmo no Windows 8.1 Update e Windows Phone 8.1. Assim, o mesmo núcleo do browser rodará em PCs, tablets e smartphones;
  • Office: foi exibida brevemente a cara da nova versão do Office para Windows, otimizada para touch e reescrita em cima do WinRT. Ainda não há previsão de lançamento;
OfficeTouchForWindowsNovo PowerPoint para Windows, otimizado para touch

 

  • .NET Compiler Platform: a Microsoft está desenvolvendo um novo compilador para C# e VB.NET chamado Roslyn e o disponibilizou como open-source. A novidade é que esse compilador fornecerá uma API com a qual será possível interagir (o que a Microsoft chama de compiler as a service) e facilitará funcionalidades como análise de código, refactoring, geração de código, etc. O principal usuário disso será quem desenvolve ferramentas ou plug-ins para IDEs, como Visual Studio, além da própria Microsoft, que poderá fornecer novos recursos de maneira mais rápida. Foi feita uma demonstração no palco, na qual esse novo compilador foi utilizado em um MacBook para compilar código C# através de uma versão especial do Mono (implementação alternativa do .NET Framework). Com esse novo compilador, também foram exibidas algumas novas funcionalidades da próxima versão do C# e VB.NET;
  • .NET Native: promete combinar a performance do C++ com a produtividade do C#, permitindo compilar uma aplicação C# diretamente para código nativo e que não exigirá a presença do .NET Framework para ser executada. Nesse momento, só funciona para aplicações Windows Store/Metro, mas a ideia é expandir para outros tipos de aplicação futuramente;
  • .NET Foundation: foi criada a .NET Foundation, que será uma organização independente e responsável por fomentar o desenvolvimento e a colaboração de projetos .NET open-source, como ASP.NET MVC, ASP.NET Web API, ASP.NET Web Pages, SignalR, Entity Framework, .NET Compiler Plataform, bibliotecas da Xamarin, etc.
  • Visual Studio 2013: foi lançada uma atualização (Update 2) para o Visual Studio 2013 que possibilita as funcionalidades citadas anteriormente e muito mais. O destaque é para a integração cada vez maior com o Azure (por exemplo, criação e gerenciamento de máquinas virtuais de dentro do Visual Studio, debug remoto de aplicações hospedadas no Azure, etc), além de várias outras melhorias para desenvolvimento de aplicações web. Além disso, a Microsoft posicionou o Visual Studio como uma IDE para desenvolvimento de aplicações multiplataforma. Há outras empresas que têm feito coisas muito interessantes nesse sentido, com destaque para a Xamarin, que permite escrever aplicações nativas com C# tanto para Windows, iOS, Mac e Android. A Xamarin teve uma grande exposição nos keynotes e palestras do Build, e não me espantaria se a Microsoft a comprasse futuramente (há vários boatos circulando sobre essa possibilidade). Além disso, no TechEd, foi anunciado o suporte nativo do Visual Studio ao Apache Cordova (antigo PhoneGap), que é uma plataforma open-source muito popular para desenvolvimento de aplicações híbridas para dispositivos móveis (iOS, Android, Windows Store e Windows Phone) através de HTML, Javascript e CSS;

netinnovation

 

  • ASP.NET: o TechEd foi o evento onde foram feitos os principais anúncios envolvendo a próxima versão do ASP.NET, chamada de ASP.NET vNext. Vale lembrar que essa versão ainda encontra-se em estágio pré-alfa, ou seja, ainda é um trabalho muito inicial, sem previsão de quando estará disponível para uso em produção. A próxima versão do ASP.NET segue alguns pilares: será totalmente modularizada e flexível (será possível escolher quais módulos sua aplicação irá utilizar, ao invés de carregar todos os módulos do .NET Framework, o que permitirá menor consumo de memória e maior rapidez na inicialização e maior vazão), multiplataforma (irá executar em Windows e outras plataformas que suportem Mono, como Mac e Linux), agnóstica de servidor (a aplicação ASP.NET poderá ser hospedada no IIS ou em um self-host; a Microsoft já dava sinais de que seguiria esse modelo com os projetos OWIN e Katana, nos quais a próxima versão do ASP.NET é baseada), modelo de desenvolvimento unificado para ASP.NET MVC, ASP.NET WebAPI e ASP.NET WebPages (esses três “componentes” serão agrupados em um framework que eles chamaram de ASP.NET MVC 6), mecanismo de Injeção de Dependência nativo unificado, maior agilidade na dinâmica de desenvolvimento (não será preciso gerar DLLs, basta alterar o código no seu editor preferido e atualizar o browser, pois a compilação ocorrerá em memória, em tempo de desenvolvimento, utilizando o .NET Compiler Platform – Roslyn), substituição de arquivos de configuração baseados em XML por baseados em JSON, referências a pacotes do NuGet (e não a assemblies) e open-source (agora mantido no GitHub). Também foram anunciadas novas versões do SignalR e Entity Framework. Além disso, foi mostrada a nova versão do .NET Framework, chamada de .NET vNext Cloud Optimize (.NET otimizado para a nuvem). É versão do .NET otimizada para ser executada em servidores, suportando aplicações web e serviços, que utiliza somente os módulos necessários para esse tipo de cenário e que foi drasticamente reduzida em termos de tamanho (em torno de 10 MB), já que não contém várias bibliotecas que só fazem sentido em aplicações client, como Windows Forms e WPF. Com o .NET Cloud Optimize, não é mais necessário ter o .NET Framework instalado no servidor, já que ele poderá ser distribuído junto com a aplicação, ou seja, cada aplicação ASP.NET poderá conter uma versão customizada do .NET (somente com os módulos que interessam para a aplicação, pois cada módulo será um pacote do NuGet). Um exemplo dessa funcionalidade na prática, que foi demonstrado no TechEd, foi a execução de uma aplicação ASP.NET a partir de um pen drive em uma máquina sem o IIS e sem o .NET Framework. Você pode estar se perguntando: e o ASP.NET WebForms? Ele não irá suportar essas novas funcionalidades, pois o WebForms é dependente do System.Web, o que não permite usufruir dessas novidades. O System.Web é um assembly muito complexo e acoplado ao .NET Framework, o que dificulta as coisas. Entretanto, será possível continuar utilizando o ASP.NET WebForms, sem esses novos benefícios, mas para isso será necessário continuar instalando o .NET Framework completo.

    dotNetFuture


Em breve, pretendo citar alguns vídeos de palestras do Build e TechEd que valem a pena ser vistas.

Correção de vulnerabilidade do ASP.NET que permitia ataques de negação de serviço

Nos últimos dias de 2011, a Microsoft lançou um comunicado e, posteriormente, a correção de uma vulnerabilidade presente em todas versões do ASP.NET que poderia permitir ataques do tipo Denial of Service (DoS), ou negação de serviço. Essa vulnerabilidade permitia que uma requisição HTTP especialmente montada consumisse 100% da CPU durante um período de tempo, fazendo com que repetidas requisições degradassem a performance da aplicação, causando a indisponibilidade do serviço.

A causa da vulnerabilidade está na forma como o ASP.NET mapeia os valores de campos de formulários recebidos em um POST HTTP para estruturas do tipo hash tables, que poderia causar problemas de colisões de chaves hash. A correção disponibilizada pela Microsoft limita a 1.000 o número de campos de formulários que uma aplicação ASP.NET pode receber. Se a requisição possuir mais de 1.000 campos de formulários, ocorrerá um erro. Esse número máximo pode ser alterado através da propriedade MaxHttpCollectionKeys, a ser configurada no web.config. A recomendação é que a atualização seja aplicada o mais rápido possível. É interessante notar que esse problema não é exclusividade do ASP.NET. Outros frameworks web e linguagens como PHP, Java, Phyton e Ruby também estão sucetíveis a esse tipo de ataque. Mais informações nos links abaixo:

 

 

Semana do Visual Studio 2010 e .NET Framework 4.0 no Channel 9

O Channel 9, site de vídeos da Microsoft, está promovendo uma semana dedicada ao Visual Studio 2010 e .NET Framework 4.0. Em setembro, eles já haviam dedicado uma semana ao Visual Studio Team System 2010. Além desses recursos, caso você esteja interessado em saber em primeira mão o que vem por aí, também já está disponível o Training Kit do Visual Studio 2010, com apresentações, hands-ons e demos.

Novidades do PDC 2008

O PDC 2008 aconteceu no final de outubro. Não estive lá, mas tentei acompanhar o evento a distância, principalmente lendo blogs e sites de notícias. Os vídeos das apresentações também estão disponíveis gratuitamente para download, mas confesso que ainda não consegui assiti-los. Segue um pequeno resumo daquilo que li - não espere nada muito detalhado; os comentários a seguir são baseados na primeira impressão que tive sobre os principais assuntos abordados:

Windows Azure: foi o grande lançamento e assunto do evento (eu achava que seria o Windows 7). Foi definido como o sistema operacional da Microsoft para a computação em nuvem. Percebi que essa definição causou muita confusão. É bom deixar claro alguns pontos: o Windows Azure não vai ser a próxima versão do Windows e nem estará disponível para ser comprado e instalado em casa ou nas empresas. Além disso, não substituirá a instalação do Windows ou algum outro sistema operacional nos computadores. A melhor definição que li sobre o Windows Azure foi a do blog Negócio de Risco, da Microsoft Brasil:

"Nos últimos dois anos a Microsoft trabalhou para montar um super-computador, formado por centenas de milhares de CPUs operando conjuntamente e conectados a terabytes de memória e petabytes de armazenamento. Esta estrutura toda está fisicamente espalhados por quase uma dezena de datacenters mas opera como uma única e gigantesca máquina, talvez a maior existente no mundo. O Windows Azure é o sistema operacional que roda nesta máquina.

Em termos conceituais o Windows Azure faz as mesmas funções que qualquer outro sistema operacional. Ele gerencia a alocação dos recursos da máquina, intermedia o acesso ao hardware, oferece aos desenvolvedores uma plataforma que permita a eles escrever aplicações para a máquina, gerentia a comunicação entre as aplicações, cuida da interface com o usuário,  etc. A diferença fundamental entre o Windows Azure e os outros Windows é que ele não roda no seu PC e sim no super-computador da Microsoft." 

 

 

 

Resumidamente, o Windows Azure é o sistema operacional que controlará uma espécie de serviço de hosting a ser oferecido pela Microsoft. Teoricamente faz sentido que essa infra-estrutura não fique com a empresa que contrata esse tipo serviço. As empresas estão preocupadas com seus negócios, e não com parafernálias técnicas. Entretanto, na prática, não sei se as coisas funcionam assim. Há ainda pontos importantes a serem analisados, principalmente os referentes à disponibilidade, privacidade e segurança.

Windows 7: acabou sendo ofuscado pelo Windows Azure e também porque não trouxe nada de revolucionário (aliás, como já era previsto). A Microsoft adotou a política de fazer melhorias no que já se tem ao invés de entupir o sistema operacional com funcionalidades que muitas vezes nem são utilizadas - e que podem causar mais dor de cabeça do que benefícios. Os avanços do Windows 7 parecem ter se concentrados em campos como usabilidade, diminuição do tempo de boot e número de serviços carregados por padrão, redução no consumo de memória, melhorias no consumo de baterias de notebook, além de suporte a multi-touch. Como podem notar, foram focados aspectos básicos, o que, na minha opinião, está corretíssimo. Na maior parte das vezes, menos é mais. Segundo relatos, o sistema parece estar mais leve, tanto que será possível instalá-lo em netbooks, aqueles computadores ultra-portáteis, móveis e de baixo custo que se tornaram a coqueluche do momento e que basicamente são utilizados para acesso a Internet e escrita de textos (o que, para muita gente, é mais do que suficiente). Outra novidade é que arquivos do tipo VHD (Virtual Hard Disk) serão reconhecidos automaticamente, ou seja, não será necessário instalar o Virtual PC para rodar máquinas virtuais. A primeira versão beta do Windows 7 será lançada em dezembro de 2008 ou janeiro de 2009. A versão final está prevista para início de 2010, mas muitos já comentam que poderá ser antecipada para o final de 2009, já que final de ano é uma época em que muitos computadores são vendidos e o novo sistema operacional poderia ser um estímulo para aumentar as vendas (ainda mais em tempos de crise).

Web Office: sim, depois de muito tempo e especulação, a Microsoft finalmente apresentou uma primeira versão do Office para a web. Com ela, será possível utilizar uma versão mais enxuta do Word, Excel, PowerPoint e OneNote através de qualquer browser. Resta saber qual será o modelo de negócios a ser adotado, pois a Microsoft não vai querer canibalizar a suíte Office, que é a maior fonte de receitas da empresa juntamente com o Windows.

Visual Studio 2010 e .NET 4.0: durante o evento, foi liberada a versão CTP do Visual Studio 2010 e .NET Framework 4.0. Entre as novidades, está o maior suporte ao desenvolvimento de aplicações para aproveitar a arquitetura multicore dos computadores atuais - Parallel Computing. Um ponto que me chamou a atenção é que algumas funcionalidades do Visual Studio 2010 serão feitas com WPF (se eu não me engano, o WPF também será utilizado em alguns lugares do Widows 7). Acho que o fato da própria Microsoft começar a utilizar essa tecnologia em seus produtos (já não era tempo!) pode ajudar a aumentar a adoção da mesma pelo mercado, já que este terá mais confiança em apostar em algo novo.

 

 

 

O que mais me impressiona, e até certo ponto me deixa um pouco frustrado, é que nem acabamos de digerir completamente as novidades do Visual Studio 2008 (e não se esqueçam do Service Pack 1), e uma nova versão já está no horizonte. Eu mesmo já escrevi sobre isso algumas vezes, e percebo que outras pessoas também têm a mesma sensação. Vejam um exemplo de desabafo:

"I think we will be lusting our breaths for a long time with the .NET technologies, it's just a few weeks since the .NET 3.5 SP1 release and here they are announcing the 4.0 version. Although, it is a good thing to have more and more technologies that makes your life easier, but I think that we will spend the rest of our life just learning the .NET technologies without having the chance to use it." 

Pois é, tenho a mesma sensação de que ficaremos loucos se tentarmos estudar tudo o que está sendo lançado. E tenho a impressão de que a velocidade tende a aumentar...

Ricardo Oneda.

Visual Studio 2008 e .NET Framework 3.5 Service Pack 1

O Service Pack 1 do Visual Studio 2008 e do .NET Framework 3.5 já estão disponíveis para download (caso queira baixar a imagem com todo o SP 1 do Visual Studio 2008, com 830 MB, acesse este outro link). Além da correção de vários bugs, destaque também para as novas funcionalidades:

  • .NET Framework Client Profile: um subconjunto do .NET Framework 3.5 voltado para aplicações desktop;
  • ASP.NET Dynamic Data: possibilita o scaffolding para aplicações ASP.NET;
  • suporte ao SQL Server 2008, lançado recentemente;
  • ADO.NET Data Services, conhecido antigamente pelo codinome Astoria;
  • na versão Visual Web Developer Express do Visual Studio 2008, com o SP 1, agora é possível criar projetos do tipo Class LibraryWeb Application Project (sendo que este último, basicamente, faz com que o Visual Studio gere uma DLL a partir do código da aplicação, não sendo necessário enviar o código-fonte para o servidor - semelhante à maneira como o Visual Studio 2003 funcionava) ;

Vale lembrar que o ASP.NET MVC Framework não faz parte desse pacote, sendo que o mesmo ainda se encontra em versão preview.

O .NET Framework 3.5 vem aí

A próxima versão do .NET Framework será a 3.5, e será lançada juntamente com a próxima versão do Visutal Studio, chamado até agora de Orcas. Foi isso o que descobri lendo um post do blog do Scott Guthrie.

O Orcas será a primeira versão do Visual Studio independente do .NET Framework. Até hoje, o uso de uma versão do .NET Framework estava amarrado a uma versão do Visual Studio. Foi assim com o Visual Studio 2002 e o .NET Framework 1.0, foi assim com o Visual Studio 2003 e o .NET Framework 1.1 e é assim com o Visual Studio 2005 e o .NET Framework 2.0 (aqui também entra o .NET Framework 3.0, mas que na verdade é o .NET Framework 2.0 com anabolizantes). No Orcas, será possível escolher qual versão do .NET Framework queremos utilizar na aplicação: 2.0, 3.0 ou 3.5.

Outra melhoria irá acontecer no editor WYSIWYG de páginas web. Pelo que foi mostrado, agora sim teremos um editor HTML bem mais robusto e com suporte a design melhorado. O editor de páginas web do Visual Studio sempre foi um de seus pontos fracos. Isso tanto é verdade que muitos recorrem a ferramentas mais especializadas em design, como o DreamWeaver. O Visual Studio irá utizar o mesmo componente de design do Microsoft Expression Web Designer, e trará novidades como possibilidade de ver o código HTML e o design ao mesmo tempo (alterações em um automaticamente afetam o outro), melhor suporte à edição de CSS, entre outras.

No que se refere às tecnologias do lado cliente de uma aplicação web, vale destacar que o ASP.NET AJAX será um componente nativo do Orcas. Além disso, haverá melhor suporte à JavaScript, com melhorias no intellisense e debug.

No acesso a dados, a novidade é o LINQ. Se você não faz idéia do que seja, sugiro ler os artigos listados neste endereço.

Nas próximas semanas, está previsto o lançamento de uma versão CTP pública do Orcas, seguida de uma versão beta. O lançamento da versão final deve ocorrer até o final de 2007.

.NET Framework 3.0 x WinFX: confusão à vista?

Li no blog do Alfred que a Microsoft decidiu rebatizar o WinFX, nova API do Windows, para .NET Framework 3.0. Um dos motivos da mudança seria o fato de muita gente não saber exatamente o que era o WinFX, pensando que seria uma tecnologia à parte ou concorrente do .NET Framework. Lendo o blog de Jason Zander, General Manger do .NET Framework, encontrei algumas perguntas e respostas interessantes sobre o assunto:

1.  What version of the compilers are being used?
.NET FX 3.0 is built on .NET FX 2.0 including the CLR and BCL.  This means you will be using the 2.0 C# and VB compilers from the redist when using .NET FX 3.0.

Ou seja, apesar da versão do .NET Framework ser chamada de 3.0, os compiladores das linguagens, a CLR (Common Language Runtime) e a BCL (Base Class Library), serão os da versão 2.0. Assim, pode-se concluir que o .NET Framework 3.0 vai ser, nada mais, do que o .NET Framework 2.0 com suporte a algumas novas tecnologias como Windows Presentation Foundation - WPF  (antigo Avalon), Window Communication Foundation - WCF (antigo Indigo) e Windows Workflow Foundation. Em outras palavras, utilizaremos o C# 2.0 e o VB.NET 2.0 no .NET Framework 3.0

2.  Will .NET FX 3.0 contain LINQ support?
No.  LINQ support is in the Orcas product which is shipping after .NET FX 3.0 (which ships in Vista).

Agora a coisa ficou confusa de vez: segundo a resposta acima, não haverá suporte ao LINQ no .NET Framework 3.0. O mesmo só será feito a partir do Visual Studio codenome Orcas, que é a próxima versão do Visual Studio, a ser entregue após o lançamento do .NET Framework 3.0, ou seja, o LINQ será suportado somente na versão 4.0 do .NET Framework (se é que ela vai ser chamada assim). Entretanto, se dermos uma olhada no site do LINQ ou no de futuras versões do C#, perceberemos que a versão do C# que terá suporte ao LINQ já está sendo chamada de 3.0. Mas como não haverá uma versão 3.0 do C# no .NET Framework 3.0, isso quer dizer que o C# 3.0 fará parte do .NET Framework 4.0 (ou seja lá como ele for chamado no lançamento do Orcas)?

Se o que eu escrevi acima realmente acontecer, ou seja, versões de linguagens diferentes da versão do Framework, aí sim teremos confusão. Já que o .NET Framework 3.0 utilizará no seu núcleo o .NET Framework 2.0, poderiam chamá-lo de .NET Framework 2.1. Ou então, seguir o exemplo do IE 7 para o Windows Vista: chamá-lo de .NET Framwork 2.0+ Tongue out

Ricardo Oneda.

Utilizando code-behind sem pré-compilação no ASP.NET 1.X

Uma das grandes vantagens trazidas pelo ASP.NET foi o modelo de codificação batizado de code-behind, no qual o código server-side (por exemplo, C# ou VB.NET) fica separado do código HTML da página, ao contrário da abordagem do ASP tradicional, que misturava tudo e gerava muitos problemas, principalmente na hora da manutenção.

Com o lançamento do ASP.NET 2.0, o modelo de codificação foi aprimorado e o modelo de compilação padrão suportado pelo Visual Studio 2005 passou a ser o de tempo de execução, ou seja, é necessário enviar os arquivos code-behind para o servidor. O que muita gente não sabe é que este modelo também era suportado pelo ASP.NET 1.X, mas não era suportado pelo Visual Studio .NET 2002 ou 2003.

Vou demonstrar como isso é possível. Abra o Visual Studio .NET 2002 ou 2003 e crie um novo projeto do tipo ASP.NET Web Application chamado CodeBehind. Neste exemplo utilizarei a linguagem C#, mas poderia ser VB.NET, sem problema algum. Arraste um controle do tipo Label para o WebForm. No evento Page_Load do WebForm, adicione o seguinte código:

Label1.Text = "Olá Mundo sem pré-compilação!";

Agora, vá para a parte HTML da página WebForm1.aspx e acrescente o atributo Scr à diretiva Page, que deverá ficar parecida com o código abaixo:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="CodeBehind.WebForm1" Src="WebForm1.aspx.cs"%>

Salve os arquivos mas NÃO compile sua aplicação. Abra o arquivo Global.asax no Notepad e exclua a propriedade Inherits. O arquivo deverá ficar assim:

<%@ Application Codebehind="Global.asax.cs" %>

Agora, vá ao browser de sua preferência e digite a URL da sua aplicação, que deve ser http://localhost/CodeBehind/WebForm1.aspx e perceba que a mensagem "Olá Mundo sem pré-compilação!" aparece no browser. Você perceberá que na primeira requisição há uma certa demora, pois a aplicação está sendo compilada. A partir da segunda requisição, não haverá mais esta demora, já que o assemblie já se encontra compilado. Verifique na pasta bin da sua aplicação que não há nenhuma DLL, que seria gerada caso utilizássemos a pré-compilação do Visual Studio. Não há DLL na pasta bin porque sua aplicação foi compilada em tempo de execução, ou seja, o code-behind foi compilado no momento em que a página foi acessada.

Mas você deve estar se perguntando: mas qual a utilidade disso? A principal vantagem é que quando não utilizamos pré-compilação, qualquer alteração no código é detectada, o que provoca uma nova compilação, mas a aplicação NÃO é reinicializada, ao contrário do que aconte quando geramos uma DLL através da pré-compilação do Visual Studio e a atualizamos com uma nova versão. Vamos a uma demonstração. Altere o código do evento Page_Load para:

 if (Session["numero"] != null)
 {
     Session["numero"] = Convert.ToInt32(Session["numero"]) + 1;
 }
 else
 {
     Session["numero"] = 1;
 }

 Label1.Text = "Olá Mundo sem pré-compilação!";
 Label1.Text += "
" + Session["numero"].ToString() + " vezes";

Perceba que eu criei uma variável de sessão (objeto Session) chamada "numero", que funcionará como um contador de visitas para o usuário naquela sessão. Salve o arquivo e atualize a página no browser e perceba o contador funcionando. Agora, volte ao Visual Studio e altere a linha 10 para:

Label1.Text = "Olá Mundo sem pré-compilação alterado!";

 

Volte ao browser e atualize a página. Você deverá notar que o texto apresentado na página foi alterado mas o contador (e, portanto, a variável de sessão) não foi reinicilizado, ou seja, a aplicação não foi reinicilizada. Se tentarmos fazer isso utilizando a pré-compilação do Visual Studio, veremos que a cada vez que uma nova DLL é gerada, a aplicação é reinicializada e, conseqüentemente, as variáveis de sessão (objeto Session), de aplicação (objeto Application), etc, o que pode trazer problemas para a aplicação e os usuários.

A desvantagem é que precisamos enviar o código fonte da aplicação para o servidor, o que pode não ser interessante em termos de segurança. Cabe a você analisar as vantagens e desvantagens de cada modelo e escolher o que melhor atende suas necessidades.

Referências:
Web Forms Code Model
Meditating Upon the ASP.NET Code-Behind Model

Ricardo Oneda.

DataSet ou Classe Customizada?

Uma das dúvidas quando se está planejamento a arquitetura de um sistema multicamadas feito em .NET é sobre como fazer a comunicação entre as camadas da aplicação: utilizar DataSet ou desenvolver classes customizadas? A resposta para esta pergunta - e para todas as outras polêmicas como esta - é...depende.

Ambas abordagens tem suas vantagens e desvantagens: enquanto o DataSet pode ser bom pois já traz uma série de características prontas que podem nos poupar tempo, ele também é mais "pesado" já que possui muita coisa que talvez não iremos utilizar. Já a utilização de classes de negócios customizadas traz um maior controle sobre nossa arquitetura, já que podemos otimizá-las de acordo com nossas necessidades, mas o que num primeiro momento pode ser uma vantagem pode se tornar uma desvantagem, já que teremos que desenvolver muita coisa do zero, o que pode consumir um tempo grande do projeto. Outra alternativa que também pode ser considerada é a utilização de DataSet Tipados, que entre suas vantagens está o fato de ser fortemente tipado (ao contrário do DataSet "puro"), mas que também está longe de ser a solução de todos os nossos problemas.

Com o objetivo de ajudar a fazer uma escolha tão complexa quanto essa, sugiro a leitura do artigo DataSets vs. Collections do mestre Dino Esposito, no qual ele analisa cada caso e explica em qual situação utilizar cada uma das opções. Do artigo, chamo a atenção para uma tabela comparativa entre as várias possibilidades.

E a seguir alguns outros artigos que podem ajudar a decidir qual o melhor para o seu caso (percebam o quanto o assunto é polêmico):

On the Way to Mastering ASP.NET: Introducing Custom Entity Classes
Poor MSDN article on Custom Business Entities and DataSets
Typed DataSets and Business Entities: A Compromise (Part 1)
Typed DataSets and Business Entities: A Compromise (Part 2)
Typed DataSets and Business Entities: A Compromise (Part 3)

Ricardo Oneda.