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.

Microsoft Web Camps no Brasil

Nos dias 18 e 19 de março, a Microsoft irá promover o evento Web Camps em São Paulo. Esse é um evento gratuito, que ocorre em várias cidades ao redor do mundo, e é dedicado a treinamentos voltados para tecnologias web, como ASP.NET MVC, jQuery, WebMatrix, etc. O treinamento será ministrado por Phil Haack, Program Manager da Microsoft, responsável por projetos legais como o ASP.NET MVC e NuGet.

Microsoft Web Camps

 

Algumas observações importantes: aparentemente, as vagas para o dia 19 já se esgotaram! Portanto, se você pretente ir ao evento e ainda não se inscreveu, corra pois só restam vagas para o dia 18. Além disso, as pessoas que pretendem participar do treinamento, devem levar um notebook. Mais informações no site do evento em http://webcamps.ms/upcoming-web-camps.aspx

Além disso, o material que é utilizado nesse treinamento está disponível para download ou então para consulta on-line. Aproveitem!

 

ASP.NET MVC Framework 1.0 e eBook grátis

Outro anúncio feito no MIX 2009 foi o lançamento da versão final do ASP.NET MVC Framework, após mais de um ano de versões CTPs, betas e Release Candidates (o download pode ser feito aqui). Eu já escrevi aqui sobre o MVC Framework algumas vezes, inclusive um artigo explicando em detalhes o seu funcionamento. Apesar de ser antigo e estar desatualizado - afinal, foi escrito com base na primeira versão pública do framework, os principais conceitos estão todos lá. Eu, particularmente, gosto bastante da abordagem do ASP.NET MVC. Minha principal crítica ao modelo web forms é que ele tenta abstrair (ou esconder) dos desenvolvedores muitos aspectos essenciais para o entendimento de uma aplicação web, tudo em nome de um possível ganho de produtividade. Pode funcionar muito bem para aplicações mais padronizadas e simples, mas a medida que se necessita de algo mais sofisticado, o nível de complexidade aumenta, fazendo com que se tenha que mergulhar em detalhes da plataforma que nem sempre são claros. Já no modelo MVC, é possível ter um controle maior sobre como as coisas funcionam, além de exigir um maior entendimento de como funciona uma aplicação web. 

Se você quiser se aprofundar no ASP.NET MVC Framework, além dos artigos que indiquei acima, também sugiro fazer o download gratuito do eBook escrito por Scott Guthrie. Na realidade, esse eBook é o primeiro capítulo do livro Professional ASP.NET MVC 1.0, que ainda vai ser lançado e, além de ScottGu, também tem como seus autores feras como Rob Conery, Scott Hanselman e Phil Haack. Considerando que o livro vai ter 400 páginas, e o primeiro capítulo, disponível gratuito, tem praticamente 200, metade você pode ler de graça!

Professional ASP.NET MVC Framework 1.0

Silverlight 2 e ASP.NET MVC Framework Beta

A semana que passou foi de lançamentos:

  • Silverlight 2: a versão que permite o desenvolvimento de aplicações RIA e a execução de código gerenciado no browser foi oficialmente lançada. Além de ser possível programar em C#, VB.NET ou outra linguagem .NET, o mais interessante é a possibilidade de rodar a mesma aplicação em browsers e plataformas distintas. Ou seja, não é obrigatório o uso do Internet Explorer e nem do Windows! Para desenvolver aplicações com o Silverlight 2, é necessário o Visual Studio 2008 ou o Visual Web Developer 2008 Express com SP1, que é gratuito. Mais informações de como proceder, podem ser encontradas no site oficial do Silverlight. A maior novidade, entretanto, foi o anúncio de que agora também é possível desenvolver aplicações Silverlight 2 com o Eclipse, que é uma IDE (equivalente ao Visual Studio) open-source, muito utilizada pela comunidade Java. Visitem o site Eclipse tools for Silverlight para conhecer melhor o projeto.
  • ASP.NET MVC Beta: até semana passada, as versões do ASP.NET MVC Framework ainda eram previews. Nessa semana, foi lançada a primeira versão beta. Nela, já foram incluídas as bibliotes do jQuery, como havia sido prometido. Para desenvolver aplicações com o ASP.NET MVC Framework, também é preciso o Visual Studio 2008 ou o gratuito Visual Web Developer 2008 Express com SP1. Aproveito para reforçar um alerta: li em alguns lugares que o ASP.NET MVC Framework seria um substituto do modelo WebForms. Nada mais incorreto! Já escrevi e disse isso várias vezes, mas vale a pena repetir: o modelo WebForms continuará existindo e evoluindo. O ASP.NET MVC Framework será uma alternativa, mas sua adoção não será obrigatória. Scott Hanselman, um dos envolvidos no projeto, disse no MVP Global Summit e também já escreveu em seu blog que acredita que o novo modelo será utilizado em 5% dos sites feitos em ASP.NET, ou seja, a própria Microsoft sabe que o MVC Framework será um produto mais específico e voltado para aqueles que não gostam ou não querem as facilidades do modelo WebForms e que procuram maior controle e testabilidade em suas aplicações web.

Server Controls no ASP.NET MVC Framework

Enquanto a atualização do ASP.NET MVC Framework não é lançada, temos que conviver com pequenos bugs da plataforma (o que é normal e até mesmo esperado, já que estamos falando de uma versão CTP). Os Server Controls que dependem da infra-estrutura do modelo de WebForms (como Viewstate e Postback) não são suportados no MVC Framework. Já os Server Controls que não dependem dela, como o Repeater e o ListView, podem ser utilizados. Entretanto, se você adicionar, por exemplo, um Repeater a uma View e tentar acessá-lo através do code-behind, irá notar que o mesmo não será reconhecido. Para corrigir esse bug, basta clicar com o botão direito do mouse sobre a página ASPX e escolher a opção Convert to Web Application.


Ao fazer isso, será criado um arquivo com extensão .designer.cs, responsável por conter a declaração dos Server Controls utilizados na View.


Agora é possível acessá-lo normalmente através do code-behind.

Utilizando o ASP.NET MVC Framework com o Visual Web Developer 2008 Express

ASP.NET MVC Framework foi projetado para o .NET Framework 3.5, mas você não é obrigado a utilizar a versão comercial do Visual Studio 2008. Se você ficou com vontade de experimentar o novo framework mas não tem acesso ao Visual Studio 2008, poderá utilizá-lo com o Visual Web Developer 2008 Express, que é uma versão mais enxuta (e gratuita) do Visual Studio 2008.

É importante levar em consideração que o ASP.NET MVC Framework foi feito utilizando o modelo de projeto Web Application. Atualmente, o Visual Web Developer 2008 Express (VWD Express) não suporta este tipo de projeto (ele cria somente projetos do tipo Web Site). Portanto, se você simplesmente instalar o ASP.NET MVC Framework e tentar criar um projeto no VWD Express, não irá conseguir. Você tem duas alternativas: a primeira, é adaptar manualmente seu projeto do tipo Web Site para utilizar o ASP.NET MVC Framework, como é mostrado neste post. A outra maneira, mais rápida e prática, é utilizar um template para projetos MVC para o VWD Express, feito por um desenvolvedor independente e que pode ser baixado em seu site.

Vale lembrar que essas são soluções temporárias, já que o ASP.NET MVC Framework ainda se encontra em versão CTP e o suporte nativo ao VWD Express será adicionado, pela Microsoft, em versões futuras.

Desvendando o ASP.NET MVC Framework

O Linha de Código publicou um artigo que escrevi chamado "ASP.NET 3.5 Extensions: Desvendando o ASP.NET MVC Framework". Ao contrário do artigo anterior, no qual foram apresentados aspectos mais conceituais, pois na época o ASP.NET MVC Framework ainda não estava disponível publicamente, neste novo artigo a abordagem é prática.

É apresentado como funciona o mecanismo de mapeamento de URLs do MVC Framework (que não referencia mais páginas, mas sim, classes - os controllers), como implementar esses controllers e passar dados para as views, além de algumas alternativas para renderizá-las (inclusive, utilizando alguns extension methods do MVC Toolkit). Durante o artigo, é desenvolvido um exemplo simples de leitor de feeds RSS utilizando o ASP.NET MVC Framework. Esse leitor armazena os dados dos feeds em um arquivo XML (que é manipulado através de classes do model utilizando LINQ to XML) e consulta as últimas atualizações de maneira on-line. Você pode fazer o download do código-fonte do exemplo e analisar seu funcionamento.

Como o artigo foi escrito utilizando-se a versão CTP do ASP.NET MVC Framework, as informações apresentadas estão sujeitas a alterações até o lançamento da versão definitiva. Sugestões e críticas são sempre bem-vindas. Espero que gostem!

ExemploMvcApplication.zip (86,60 kb)

ASP.NET MVC Framework CTP disponível para download

A versão CTP do ASP.NET MVC Framework, sobre o qual comentei outro dia, foi lançada e já pode ser baixada. Ele faz parte de um pacote chamado ASP.NET 3.5 Extensions que, além do MVC Framework, contém outras novidades, como melhorias no ASP.NET AJAX, ADO.NET Entity Framework e Data Services e alguns controles para Silverlight (veja mais detalhes). É necessário ter o Visual Studio 2008 ou o Visual Web Developer 2008 Express.

Considerações iniciais sobre o ASP.NET MVC Framework

Antes de você continuar, gostaria de deixar claro que, enquanto este post é escrito, o acesso ao ASP.NET MVC Framework está restrito a um grupo muito pequeno de pessoas (do qual, infelizmente, não faço parte). Portanto, tudo o que você vai ler aqui é baseado em informações que começam a aparecer na Internet e, portanto, sujeito a correções e/ou alterações. Até por conta disso, não pretendo abordar o lado prático do ASP.NET MVC Framework, ficando isso para uma próxima oportunidade. Abordarei um lado mais conceitual, com minhas impressões sobre o que tenho lido até o momento.


Antes, um pouco de história

Ao invés de entrar diretamente no assunto, acho importante contextualizar como o desenvolvimento de aplicações web tem evoluído. Nos primórdios da Web, a única maneira de se ter uma página dinâmica (cujo conteúdo poderia variar de acordo com determinadas circunstâncias), era através do uso de CGI - Common Gateway Interface. O CGI nada mais é do que um programa que segue certos padrões para ser executado em um servidor web qualquer, recebendo dados de entrada e gerando um resultado. Os dados de entrada geralmente são passados a partir de campos do formulário de uma página para o servidor web, que por sua vez executa o programa CGI, que irá fazer o processamento necessário e devolver o resultado (geralmente, um arquivo HTML) para o servidor web, que o repassará para o browser. Desenvolver um CGI exige um conhecimento maior sobre o protocolo HTTP e HTML, pois itens como cabeçalhos de resposta da requisição, tratamento dos parâmetros de entrada e o resultado HTML são responsabilidades do CGI. Assim, percebe-se que o desenvolvedor trabalha em um ambiente de mais baixo nível.

Representação do funcionamento de uma aplicação CGI

Com o passar do tempo, alguns servidores web ganharam extensões que permitiam ter acesso a mais recursos dos mesmos. Por exemplo, o servidor web da Netscape passou a ter o NSAPI - Netscape Server Application Programming Interface, enquanto que o IIS, da Microsoft, ganhou o ISAPI - Internet Server Application Programming Interface. O objetivo dessas extensões era o mesmo do CGI, ou seja, permitir a execução de programas no servidor web. Entretanto, há algumas diferenças entre essas duas tecnologias. Enquanto que para cada programa CGI é criado um processo em memória separado do processo do servidor web, aplicações ISAPI rodam no mesmo processo, o que as tornam mais rápidas, já que não há a sobrecarga da comunicação entre os processos. Por outro lado, caso algum bug em uma aplicação ISAPI cause um crash, o processo do servidor web é afetado (e conseqüentemente, as demais aplicações dele), enquanto que no CGI o problema fica limitado ao processo do mesmo.

Representação do funcionamento de uma aplicação ISAPI

Desenvolver utilizando essas tecnologias não era tarefa das mais simples, pois exigia conhecimentos sobre como era o funcionamento em um nível mais baixo. Visando melhorar a produtividade e deixar a atenção do desenvolvedor voltada para o que realmente importava (solução de problemas de negócios), começaram a surgir plataformas de desenvolvimento mais amigáveis. A Microsoft lançou o ASP - Active Server Pages, através do qual era possível desenvolver aplicações para web através de uma linguagem de script, normalmente VBScript. É importante destacar que o ASP é uma extensão ISAPI instalada no servidor web e que fornece um ambiente de execução de aplicações de mais alto nível. Assim, quando o browser requisita uma página ASP, o servidor web redireciona o pedido para a extensão ISAPI do ASP, que interpreta os comandos VBScript e devolve o resultado para o servidor web, que o repassa para o browser. O ASP abstraiu muito da camada de mais baixo nível relativa ao protocolo HTTP, mas ainda assim era necessário ter conhecimentos mais especializados de HTML.


ASP.NET

Com o lançamento da plataforma .NET em 2002, a Microsoft fez alterações importantes na sua infra-estrutura para aplicações web. Assim, o ASP deu lugar ao ASP.NET. O ASP.NET, assim como o ASP, é implementado através de uma extensão ISAPI do IIS. Entretanto, a semelhança entre ambos pára por aqui. Para se desenvolver em ASP.NET, ao invés de se utilizar linguagens de script, utilizam-se linguagens mais robustas, como C# e VB.NET, com amplo suporte às classes do .NET Framework. Além disso, o código passa a ser compilado ao invés de interpretado. Também foi introduzido o conceito de code-behind, no qual o código do programa fica separado do código HTML da página. Por falar nela, a página não é mais uma simples página HTML, mas sim um WebForm, com um modelo próprio de execução e orientado a eventos. Outro conceito novo foi o PostBack, que fazia com que cada requisição de página fosse feita para ela mesma. Confesso que isso causou certa estranheza em mim, pois até então, os posts dos formulários HTML eram feitos para outras páginas. Este modelo de PostBack veio acompanhado de outros novos conceitos, como o ciclo de vida de uma página e o ViewState. Além disso, o ASP.NET foi capaz de manter os valores dos campos do WebForm automaticamente a cada post.

O modo de se desenvolver aplicações, com o ASP.NET, ficou parecido com o modo de se desenvolver aplicações desktop Windows. Não era mais necessário possuir grandes conhecimentos de HTML e tão pouco do protocolo HTTP. Esse modelo de desenvolvimento permitiu que antigos desenvolvedores de aplicações desktop conseguissem migrar para o mundo web de uma forma mais natural. O fato do ASP.NET abstrair esses aspectos pode ser encarado como um avanço ou um problema. Pode ser um avanço na medida em que você ganha produtividade e deixa de se preocupar com detalhes que não deveriam tomar muito tempo. Mas pode ser um problema no momento em que a pessoa acha que esse modelo é a solução para todos os problemas e não se interessa pelo que ocorre nos bastidores, não entendendo o real funcionamento do processo. Isso fica mais evidente em quem veio do mundo desktop e naqueles que aprenderam a desenvolver aplicações web diretamente com o ASP.NET. Nesses casos, o modelo de desenvolvimento do ASP.NET acaba funcionando como um limitador, pois as pessoas, sem um entendimento mais profundo de como uma aplicação web funciona (independentemente da tecnologia), acabam tendo dificuldades quando precisam utilizar recursos além dos básicos. Um sinal claro disso são as dúvidas freqüentes que aparecem nos fóruns de discussão sobre, por exemplo, o uso de javascript no ASP.NET. Apesar dos avanços que o ASP.NET trouxe, ainda existem operações que somente são possíveis de serem feitas através do uso de javascript, pois envolvem o lado cliente (browser). A falta de entendimento entre o que é executado no servidor e o que é executado no cliente acaba dificultando o desenvolvimento de recursos mais avançados para a aplicação. Assim, apesar do desenvolvedor que utiliza os WebForms do ASP.NET não precisar conhecer muito de HTML e HTTP, não quer dizer que isso pode ser totalmente esquecido e que ele não precisará utilizar esse conhecimento em algum momento.


MVC

Ao mesmo tempo que a Microsoft evoluía sua plataforma de desenvolvimento, começaram a surgir na Internet projetos open-source que visavam disponibilizar frameworks para facilitar e agilizar o desenvolvimento de aplicações web. Um dos frameworks que mais ganhou atenção nos últimos tempos foi o Ruby on Rails, que utiliza o padrão MVC e é escrito na linguagem Ruby. A comunidade .NET também teve sua implementação independente para o padrão MVC, através do MonoRail.

O MVC - Model-View-Controller -  é uma arquitetura que divide uma aplicação em três partes: 1) o Model, responsável pela manutenção do estado dos dados (por exemplo, armazenando os dados em um banco de dados); 2) o View, responsável pela interface com o usuário (não deve possuir nenhuma lógica de aplicação e nem de acesso a dados); 3) o Controller, que controla a lógica da aplicação, manipulando os dados do Model e escolhendo o View a ser utilizado. Essa arquitetura permite a clara separação dos papéis de cada componente, o que facilita a execução de testes unitários na aplicação, entre outros benefícios.


ASP.NET MVC Framework

Recentemente, a Microsoft anunciou que está trabalhando em uma implementação da arquitetura MVC para o ASP.NET, chamado de ASP.NET MVC Framework. Você pode estar se perguntando: "Mas o modelo WebForm do ASP.NET já não separa o código da página HTML através do code-behind?". Apesar do código ficar separado (o que facilita a organização e possibilita que um designer trabalhe com a interface gráfica enquanto o desenvolvedor cuida do código), essas duas partes estão um tanto acopladas. É como se o Controller (code-behind) e o View (.ASPX) estivessem unidos. Isso dificulta, por exemplo, os testes unitários de sua aplicação, pois não é possível fazer os mesmos sem a execução da página.

Este novo modelo de desenvolvimento de aplicações ASP.NET traz algumas diferenças em relação ao modelo de WebForms usado até então. A primeira das diferenças é que as requisições de uma aplicação ASP.NET não serão mais feitas a uma página, mas sim a um Controller, que nada mais é do que uma classe .NET. Na prática, isso significa que não mais referenciaremos uma página ASPX em uma URL. Por exemplo, uma URL para exibir uma lista de produtos que no padrão WebForms seria assim:

http://www.site.com/produtos.aspx

Utilizando a arquitetura MVC ficará assim:

http://www.site.com/produtos

Isso também serve para os posts executados pelos formulários HTML. Assim, outra grande diferença em relação ao modelo WebForms é que o PostBack não mais existirá no MVC Framework. Isso mesmo, nada de fazer posts para a mesma página. Se pensarmos bem, veremos que faz todo sentido, já que a responsabilidade de decidir o que fazer com a requisição é do Controller, e a página ASPX servirá somente como um template para renderizar a resposta. Uma conseqüência da eliminação do PostBack será também a eliminação do Viewstate, o que para muitos é muito bem-vindo, já que ele deixa a página mais pesada, além de poder causar alguns outros problemas.

Outro aspecto que sofrerá alterações será em relação ao uso do ASP.NET AJAX, mais especificamente o UpdatePanel, pois o mesmo se baseia no controle <form runat="server">, que não existirá neste novo modelo. Entretanto, ainda não foi divulgado exatamente como trabalhar com AJAX no framework MVC.

Pelo que tenho lido e entendido, o desenvolvedor terá um controle maior sobre o HTML gerado, o que implica em trabalhar em um nível mais próximo do HTML/HTTP do que o exigido no modelo WebForms do ASP.NET. Assim, aqueles que entendem como uma aplicação web funciona e que consideram o modelo de WebForms muito complexo ou sofisticado, provavelmente optarão pelo framework. Já aqueles que sabem somente os aspectos básicos do funcionamento dos WebForms, provavelmente terão mais dificuldade ou até mesmo não verão motivos para utilizar o novo modelo.


Serei obrigado a usar o novo modelo do ASP.NET MVC Framework?

Não, o modelo WebForms do ASP.NET continuará existindo e evoluindo. O ASP.NET MVC Framework será opcional, ou seja, uma alternativa a ser considerada na escolha da melhor arquitetura da sua aplicação, mas não será imposta. Além disso, também será possível utilizar os dois modelos ao mesmo tempo (WebForms e MVC) em uma mesma aplicação.


Com qual versão do .NET Framework e do Visual Studio será possível usar o ASP.NET MVC Framework?

Será possível utilizá-lo a partir do .NET Framework 3.5 e Visual Studio 2008, inclusive na versão Express.


A previsão é que a primeira versão CTP - Community Technology Preview do ASP.NET MVC Framework esteja disponível para download na primeira semana de dezembro. Se você estiver interessado no assunto, sugiro estudar o material de referência abaixo.

Referências