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:

 

 

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!

 

WebMatrix: a nova ferramenta de desenvolvimento de aplicações ASP.NET da Microsoft

Nesses 10 anos de existência do .NET Framework, o ASP.NET se consolidou como uma das mais importantes plataformas de desenvolvimento de aplicações web. Inicialmente concebido com um modelo de desenvolvimento muito próximo ao que era utilizado no desenvolvimento de aplicações desktop, cujo objetivo era facilitar a transição dos profissionais que estavam acostumados a desenvolver aplicações desktop mas nunca haviam programado para web, muita coisa mudou desde a versão 1.0. A cada nova versão, características mudaram e muitos recursos foram adicionados. Um novo modelo de desenvolvimento, o ASP.NET MVC, apareceu como alternativa ao modelo WebForms. Além disso, nesse meio tempo, vários paradigmas surgiram nas aplicações Web, como Ajax e RIA, que foram devidamente incorporados à plataforma ASP.NET.  Apesar desses novos recursos proporcionarem ganhos de produtividade na medida em que foram incorporados pelo ASP.NET, paradoxalmente, eles também adicionaram um certo nível de complexidade para os novatos, que estão sendo apresentados agora para o ASP.NET e que não acompanharam toda a evolução da plataforma. Apesar da abundância de informação e documentação sobre ASP.NET na Internet e em outros meios (revistas, livros, CDs de treinamento, etc) e ferramentas disponíveis para aprendizado, como a versão trial do Visual Studio 2010 ou então as versões Express do Visual Studio que são gratuitas, para alguém que está começando a aprender sobre desenvolvimento de aplicações web, é complicado saber por onde começar.

Se você acompanha esse blog regularmente, deve se lembrar que no último post que escrevi, comentei sobre algumas novidades do ASP.NET que foram anunciadas na semana passada. Relembrando, foram anunciados os seguintes produtos:

 

  • IIS Express: um servidor web gratuito, totalmente compatível com o IIS da versão server do Windows, e sem as limitações do Cassini, que é o servidor web que vem atualmente embutido no Visual Studio. A vantagem é que o desenvolvedor terá uma versão de servidor web muito mais próxima do que se encontra em ambientes reais de produção, sem a necessidade de se ter uma versão server do Windows para executá-lo, já que o IIS Express funcionará em qualquer versão de Windows a partir do XP, e será muito mais fácil de instalar e configurar;
  • SQL Server Compact Edition com suporte ao ASP.NET: um banco de dados leve, gratuito, baseado em arquivo e compatível com o SQL Server. Basta copiar o arquivo de banco de dados com extensão .sdf que o ASP.NET conseguirá acessá-lo, sem necessidade de instalação e/ou configuração;
  • Razor: é o codinome do novo view engine do ASP.NET e que será o padrão a partir do ASP.NET MVC 3, que está em desenvolvimento. O objetivo dele é simplificar a codificação das views do ASP.NET MVC, facilitando a geração de código HTML;

 

Se você prestou atenção, percebeu que todos os produtos acima possuem em comum o desejo de simplificar a vida dos desenvolvedores, seja no momento da codificação, seja na hora de se montar o ambiente de desenvolvimento. Dentro desse mesmo objetivo, de simplificação, hoje foi anunciada a versão beta do WebMatrix, que é uma nova IDE de desenvolvimento de aplicações web com ASP.NET, voltada para os inciantes que estão começando a dar seus primeiros passos no mundo do desenvolvimento web. O WebMatrix, além do editor de código, também integrará os produtos citados acima (IIS Express, SQL Server Compact Edition e Razor) e mais uma ferramenta de publicação, em um mesmo pacote, fornecendo de uma única vez tudo que um desenvolvedor iniciante precisa para começar a aprender ASP.NET, de maneira rápida e fácil.

WebMatrix

Vale ressaltar que, se você não é um iniciante e já utiliza o Visual Studio como ferramenta de desenvolvimento (seja a versão completa ou a Express), tanto o IIS Express, quanto o SQL Server Compact Edition e o Razor também estarão disponíveis para você através de uma atualização a ser lançada futuramente, ou seja, para utilizar qualquer uma dessas tecnologias não será obrigatório o uso do WebMatrix.

Quando um novo site é criado a partir do zero no WebMatrix, você logo percebe a diferença em relação a uma aplicação ASP.NET criada pelo Visual Studio. Para começar, existe uma nova extensão de arquivo, que varia de acordo com a linguagem utilizada: .cshtml (código C#) ou .vbhtml (código VB.NET) . Arquivos com essas extensões são chamados de ASP.NET Web Pages, que utilizam a nova sintaxe do Razor. Quando criado um arquivo desse tipo, inicialmente ele só contém código HTML, diferentemente de uma página ASP.NET tradicional (arquivo com extensão .aspx). Assim, por exemplo, nos arquivos que utilizam Razor, não existe a diretiva Page. Isso torna a página bem mais limpa. Nesse ponto, há uma semelhança muito grande com o que havia de simplicidade nas páginas ASP clássicas. Além disso, quando o site é criado, não há arquivo web.config.

Outra facilidade que o WebMatrix traz são alguns helpers, que permitem integração fácil com serviços como Twitter, Facebook, Google Analytics, geração de captchas, gráficos, etc. Esses helpers também estarão disponíveis futuramente para quem utiliza Visual Studio, ou seja, não é uma funcionalidade exclusiva do WebMatrix.

Concluindo, o WebMatrix é uma ferramenta voltada para o público iniciante, para aplicações de pequeno e médio porte, cujo objetivo é diminuir o atrito de quem está começando a conhecer o desenvolvimento para a plataforma web com ASP.NET, facilitando vários aspectos que uma pessoa nesse estágio de aprendizado, normalmente, ainda não tem condições de conhecer. Também vejo essa ferramenta como uma porta de entrada para profissionais de outras plataformas, principalmente PHP, pois o WebMatrix oferece um ambiente mais próximo daquele e evita que, em um primeiro momento, o profissional tenha que se familiarizar com conceitos exclusivos do ASP.NET. Além disso, a Microsoft está tento cuidado para que todo (ou pelo menos a maior parte do)  conhecimento adquirido no WebMatrix possa ser reaproveitado quando a pessoa decidir mudar para uma plataforma mais profissional, e nesse sentido, há uma tendência para que se opte pelo ASP.NET MVC.

Fiquem ligados no blog, pois pretendo abordar mais detalhes do WebMatrix nos próximos dias.

Obs: se você acompanha a evolução do .NET Framework desde o início, deve ter se lembrado que já existiu uma ferramenta da Microsoft chamada WebMatrix, também voltada para aplicações ASP.NET, muito semelhante a essa em seus objetivos. Isso foi antes das versões Express existirem. Apesar do mesmo nome, esse novo WebMatrix trata-se de uma ferramenta totalmente diferente. Parece que as opções de nomes para produtos estão acabando na Microsoft Wink.

Referências:

Site oficial do WebMatrix

Introducing WebMatrix

Microsoft WebMatrix in Context and Deploying your first site

 

jQuery e Microsoft

A notícia é um pouco antiga, mas como vi pouca repercursão, acredito que vale a pena escrever a respeito. No último evento MIX, que aconteceu em março de 2010, um dos anúncios feitos foi o da Microsoft eleger o jQuery como a principal tecnologia de client-side script para aplicações ASP.NET. Desde 2008, o jQuery já é suportado oficialmente pela Microsoft. O que muda com o anúncio feito no MIX é que agora a Microsoft vai investir tempo e dinheiro para contribuir com propostas para o projeto open-source, assim como qualquer pessoa ou empresa pode fazer. Claro que essas contribuições não servirão somente para aplicações desenvolvidas com tecnologias Microsoft, mas sim para qualquer plataforma tecnlógica que venha a fazer uso do jQuery (PHP, Java, Ruby, etc).

Você pode estar se perguntando: o que acontecerá com o ASP.NET Ajax Library e com o Ajax Control Toolkit? Com a palavra, Stephen Walther, um Program Manager do time de ASP.NET:

 

"(...) We realize that the Ajax Control Toolkit is extremely popular among ASP.NET Web Forms developers and we want to continue to invest in the Ajax Control Toolkit.

If you are adding JavaScript interactivity to an ASP.NET Web Forms application, and you don’t want to write JavaScript, then we recommend that you use the server controls in the Ajax Control Toolkit. Using the Ajax Control Toolkit does not require knowledge of JavaScript and the toolkit enables you to build applications with the concepts familiar to ASP.NET Web Forms applications developers.

If, however, you are interested in creating client-side interactivity without server controls then we recommend that you use jQuery.

(...)

We are moving the ASP.NET Ajax Library into the Ajax Control Toolkit. If you currently use ASP.NET Ajax Library client templates, client data-binding, or the client script loader then you can continue to use these features by downloading the Ajax Control Toolkit.

Be aware that our focus with the Ajax Control Toolkit is server-side Ajax.  For client-side Ajax, we are shifting our focus to jQuery. For example, if you have been using ASP.NET Ajax Library client templates then we recommend that you shift to using jQuery instead. "

O que, numa livre tradução, quer dizer:

 

"(...) Nós reconhecemos que o Ajax Control Toolkit é extremamente popular entre os desenvolvedores ASP.NET que utilizam Web Forms e nós queremos continuar a investir no Ajax Control Toolkit.

Se você está adicionando interatividade com Javascript em uma aplicação ASP.NET Web Forms e você não quer escrever código Javascript, então nós recomendamos que você use os server controls do Ajax Control Toolkit. Usar o Ajax Control Toolkit não exige conhecimento de Javascript e ele permite que você construa aplicações através de conceitos familiares aos desenvolvedores ASP.NET que utilizam Web Forms.

Entretanto, se você está interessado em criar interatividade do lado cliente sem server controls, então nós recomendamos que você use jQuery.

(...)

Nós estamos movendo o ASP.NET Ajax Library para dentro do Ajax Control Toolkit. Se você usa atualmente client templates, client data-binding, ou o client script loader do ASP.NET Ajax Library, então você pode continuar a usar essas funcionalidades fazendo o download do Ajax Control Toolkit.

Esteja ciente de que nosso foco com o Ajax Control Toolkit é Ajax do lado servidor. Para Ajax do lado cliente, nós estamos mudando nosso foco para jQuery. Por exemplo, se você usa cliente templates do ASP.NET Ajax Library, nós recomendamos que você mude para jQuery."

 

O texto completo, de onde retirei o trecho acima, pode ser encontrado em Microsoft, jQuery, and Templating.

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.

Ainda jQuery e ASP.NET

No meu último post, escrevi sobre o jQuery passar a fazer parte do ASP.NET. Relendo-o agora, percebi que talvez não tenha sido claro o suficiente e achei que valeria a pena explicar quais os benefícios desse movimento por parte da Microsoft. O que importa não é que o jQuery poderá ser usado com o ASP.NET - isso já era possível antes, e não somente para o jQuery, mas também para outras bibliotecas javascript. A grande diferença é que agora ele fará parte do ASP.NET e do Visual Studio, e isso significa que a Microsoft dará suporte a ele na abertura de chamados de seus clientes. Isso é importante, pois é uma empresa dando suporte a um projeto open-source. Vocês devem conhecer, ou pelo menos ter ouvido falar, de casos de empresas que hesitam em adotar projetos open-source em seus projetos por falta de suporte oficial, com medo de serem deixadas na mão em caso de problemas. Os mais puristas e defensores do código aberto poderiam argumentar que não há falta de suporte, pois existe uma comunidade por trás do projeto, sempre disposta a ajudar quem precisasse. O fato é que as empresas não costumam acreditar nesse tipo de ideologia (não estou dizendo que seja certo ou errado, só estou fazendo uma constatação).

Nesse tipo de situação, havia duas alternativas: aguardar a Microsoft desenvolver um projeto equivalente à alternativa open-source, para utilizar algo que poderia ser chamado de oficial, ou então assumir os riscos e utilizá-lo mesmo sem o suporte (claro, a empresa também poderia escolher não usar o projeto ou então desenvolver uma solução proprietária). Supondo que a primeira alternativa seja a escolhida e que a Microsoft efetivamente lançasse um produto equivalente ao projeto open-source, o mesmo poderia deixar de existir, pois as empresas poderiam preferir a solução oficial (vejam o que aconteceu com os projetos de AJAX para ASP.NET quando a Microsoft lançou o ASP.NET AJAX). Para as empresas clientes da Microsoft, essa seria a situação ideal, pois contariam com um produto oficial e com suporte garantido. Já para a comunidade open-source, esse seria mais um passo da Microsoft para dominar o mundo, que estaria usando sua força e poder para varrer seus concorrentes do mapa. Difícil agradar a todos...

Assim, ao adotar o jQuery como parte de sua plataforma, a Microsoft admite usar um produto de boa qualidade mesmo que não tenha sido desenvolvido por ela, fazendo com ele não deixe de existir e nem deixe de ser open-source (outras plataformas não-Microsoft continuarão a usufruir de seus benefícios, afinal, o jQuery não foi vendido). Além disso, as empresas clientes da Microsoft ganham confiança na solução, pois sabem a quem recorrer se encontrarem algum problema.

jQuery e ASP.NET

Não sei quanto a vocês, mas para mim, uma das coisas mais chatas que existem é escrever código javascript para rodar em páginas web. Pode ser que esse trauma tenha surgido quanto tive meus primeiros contatos com o desenvolvimento de aplicações web, nos primórdios da Internet. Eram vários os problemas: faltava um ambiente de desenvolvimento decente (Notepad na cabeça), havia dificuldades em debugar o código, muitos dos códigos não funcionavam da maneira esperada em todos os browsers, isso sem falar na complexidade em se fazer coisas que deveriam ser simples, o que acarretava em falta de produtividade.

Muita coisa mudou de lá para cá: o Visual Studio melhorou muito o suporte a javascript (além disso, surgiram outros editores como o Aptana Studio), o processo de debug foi facilitado (inclusive, no Internet Explorer 8 será possível debugar código javascript; isso sem falar no Firebug, uma extensão para Firefox que já existe há muito tempo e é uma mão na roda para os desenvolvedores web) e até a interoperabilidade entre os browsers melhorou (um pouco, mas melhorou). Mesmo com essa evolução, até hoje, eu sinto calafrios quando ouço falar em fazer algo muito complexo em javascript.

Nos últimos tempos, com a onda da Web 2.0 e do AJAX, surgiram muitas bibliotecas para facilitar e aumentar a produtividade no desenvolvimento de código javascript. Entre as mais famosas, posso citar o Dojo, Prototype, Ext JS, Script.aculo.us, Yahoo! UI Library e jQuery. A grande vantagem do uso dessas bibliotecas é que elas abstraem muitos aspectos de baixo nível (como por exemplo, fazer um tratamento específico para determinada versão de browser), permitindo que nosso foco esteja na resolução do problema e não em detalhes que não deveriam consumir nosso tempo.

Assim, é com bons olhos que vejo o anúncio da Microsoft em adotar o jQuery, que é open-source, no ASP.NET. Para quê reinventar a roda quando já há uma biblioteca elogiada e consagrada? Meu palpite é que o principal beneficiado dessa integração seja o ASP.NET MVC Framework, pois nesse modelo, o desenvolvedor tem muito mais contato com HTML/HTTP e o uso de javascript é mais explícito e intensivo, o que normalmente não ocorre com o modelo WebForms. Isso não quer dizer que quem desenvolve utilizando WebForms não poderá se beneficiar, afinal de contas, apesar de nesse modelo de desenvolvimento o ASP.NET fazer o trabalho sujo pelo desenvolvedor, o resultado final gerado ainda é HTML e muitas coisas só são possíveis com javascript.

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.