Do que trata o artigo

Hoje a plataforma .NET Framework nos oferece três alternativas diferentes para a construção de aplicativos ou sites para Web. São o ASP.NET Web Forms, o ASP.NET MVC e o Silverlight. Esse artigo irá mostrar as diferenças entre essas três tecnologias, indicando os cenários em que cada uma delas se encaixa melhor.

Para que serve

A cada ano que passa a plataforma .NET oferece ainda mais opções para a construção de aplicações, sejam elas Windows, Web ou Mobile. Na categoria Web existem três grandes opções, com características muito distintas. É muito importante saber escolher qual tecnologia Web atende melhor cada projeto em específico.

Em que situação o tema é útil

Hoje, grande parte dos projetos de software fracassa por conta de escolhas mal feitas quanto as tecnologias adotadas para o seu desenvolvimento. Saber escolher corretamente, a tecnologia mais adequada para cada projeto, é de suma importância. Essas escolhas poderão determinar o sucesso ou o fracasso da sua aplicação.

Resumo do DevMan

Quais são as reais diferenças entre ASP.NET Web Forms, ASP.NET MVC e Silverlight? Todas são tecnologias para a construção de aplicações Web, mas são todas iguais? Com certeza não são. Existem razões para a Microsoft oferecer três opções diferentes para a construção de aplicações ou sites para Web, e é isso que será discutido neste artigo. É importante entender o motivo para o lançamento de cada uma dessas tecnologias, o momento histórico em que cada uma delas surgiu. E principalmente, o objetivo que cada uma delas tem hoje. Além disso existem grandes diferenças técnicas em cada uma dessas opções, que certamente influenciam na decisão que deve ser tomada. Esse artigo tem o objetivo de levantar todas essas questões e apontar quais são os cenários em que cada uma dessas tecnologias melhor se encaixa.

Até algum tempo atrás, na plataforma .NET havia apenas o ASP.NET. Em 2008 começou a se falar do ASP.NET MVC, e foi nesse momento que o ASP.NET convencional passou a ser mais conhecido como ASP.NET Web Forms.

Ele é chamado de ASP.NET Web Forms pela sua similaridade com o Windows Forms, a tecnologias para construção de aplicações Desktop para Windows, na plataforma .NET. E essa foi a grande sacada da Microsoft com o lançamento desse formato do ASP.NET. Na época (2002/2003), a ideia da Microsoft foi criar uma tecnologia de desenvolvimento para Web que fosse de fácil aprendizado para desenvolvedores experientes em Windows Forms.

E deu certo, até hoje o ASP.NET Web Forms ainda é a principal tecnologia utilizada para construir aplicações Web na plataforma .NET.

A segunda opção para aplicações Web é o já citado ASP.NET MVC, que não veio como um substituto do ASP.NET Web Forms, e sim uma alternativa.

O ASP.NET Web Forms abstrai a dinâmica que uma aplicação Web deve ter, em um ambiente de eventos, igual ao que temos no Windows Forms. Essa abstração significa que as páginas HTML são geradas em tempo de execução pelo servidor, e cada “evento” disparado por uma página ASP.NET Web Forms, executa o que é conhecido como postback, que processa esse evento no servidor.

Já o ASP.NET MVC tem uma abordagem diferente. Ele não tem nenhuma similaridade com a forma que se desenvolve aplicações Windows Forms. Com ele é necessário muito mais conhecimento sobre como funcionam aplicações Web. Conceitos como HTML, HTTP, Javascript e CSS são praticamente obrigatórios no ASP.NET MVC.

O ASP.NET MVC leva esse nome pois implementa um famoso padrão para aplicações Web chamado MVC (Model / View / Controller). Neste padrão temos uma separação bem definida de camadas. Enquanto no ASP.NET Web Forms todas as requisições são tratadas em eventos, no MVC as requisições são processadas pela camada Controller, que renderiza a View apropriada.

O MVC é uma tecnologia que visa uma maior testabilidade da sua camada de interface e, além disso, essa separação obrigatória de responsabilidades entre as camadas força o uso de arquiteturas que permitam uma melhor escalabilidade da aplicação, que é a possibilidade que a aplicação tem de crescer ordenadamente.

Não que o ASP.NET Web Forms não permita uma boa escalabilidade, longe disso. Com o WebForms também é possível aplicar padrões e arquiteturas de ponta, porém ele também permite a criação de aplicações sem se preocupar com isso. Se isso é bom ou ruim, depende muito de cada caso, do tamanho e da complexidade de cada aplicação.

A outra grande possibilidade para aplicação Web é o Silverlight. A diferença aqui é que o Silverlight é um componente que geralmente roda dentro do browser (pode rodar fora também) sob o contexto da internet.

Silverlight em nada tem a ver com HTML e outros recursos conhecidos para Web. Silverlight surgiu inicialmente como uma alternativa ao Flash da Adobe, com a diferença que ele é integrado à plataforma .NET, e usa a linguagem de marcação XAML para o design das suas interfaces.

Das três tecnologias Web que temos na plataforma .NET, o Silverlight é o que tem a trajetória mais surpreendente. Ele começou em 2007, e até agora já são quatro versões oficiais, sem contar com a versão 5 que já está sendo desenvolvida e deverá ganhar uma versão Beta em 2011.

O grande problema ainda não resolvido por completo no Silverlight é a portabilidade entre diferentes plataformas. O Silverlight hoje é uma ótima opção para aplicações Web que irão rodar em clients Windows, mais ainda não é uma boa opção para clients Linux.

Outra característica interessante do Silverlight é que ele transcendeu os limites do browser, e hoje já é uma opção interessante para aplicações Desktop (out-of-browser), e aplicações para dispositivos móveis, já que o Silverlight é a principal opção para o desenvolvimento de aplicativos para o Windows Phone 7.

Esse é o complexo cenário de possibilidades que existem na plataforma .NET Framework, para a construção de aplicações Web.

Nota do DevMan

Moonlight

O Silverlight é distribuído como um componente de browser, que possibilita a execução de aplicações feitas nessa tecnologia. Isso significa que o Client onde irá rodar essa aplicação, não precisa ter o .NET framework instalado.

O Moonlight é uma das ferramentas desenvolvidas pelo projeto Mono. O Mono é um projeto de código aberto liderado pela Novel, que visa oferecer uma versão de código livre da plataforma .NET, e que possa inclusive ser portada para Linux.

O Moonlight é a opção que temos hoje para rodar aplicações Silverlight em ambientes Linux. O Moonlight ainda está na versão 2.0, que é compatível com a versão 2 do Silverlight. Para maiores informações sobre o andamento do projeto, bem como as novas versões do Moonlight, acesse o site oficial do projeto, que está listado na seção Links desse artigo.

Padrões Web

Uma questão que está relacionada com cada uma das três tecnologias Web citadas, é o padrão de projeto que pode (ou deve) ser utilizado em cada uma das opções. São as famosas siglas: MVC, MVP e MVVM.

Cada uma delas representa um padrão de arquitetura, principalmente no que diz respeito à interface de usuário (camada de apresentação). O grande objetivo desses padrões é isolar ao máximo a camada de apresentação, no caso a letra V de todos eles, o View.

Alias, esses padrões concordam apenas nas duas primeiras letras, o V (View) e o M (Model). A terceira parte, que é a que difere cada um deles, é também a que explica melhor como cada um deles funciona.

MVC significa Model-View-Controller e é o avô de todos esses padrões. Ele surgiu lá no começo da década de 80, mas se tornou muito popular na criação de aplicações Web. Sua dinâmica é simples, todas as requisições da aplicação são direcionadas para a camada Controller, que acessa a camada Model para processar a tal requisição, e por fim exibe o resultado na camada View.

Apesar de haver adaptações do MVC em aplicações ASP.NET Web Forms, o padrão MVC só passou a ser levado integralmente a sério na plataforma .NET com o surgimento do ASP.NET MVC. É a prova de que o padrão MVC inverte mesmo as coisas. Tanto que a Microsoft precisou criar uma versão diferente do ASP.NET só para tratar desse assunto.

O ASP.NET MVC é totalmente diferente do o Web Forms. Nele, todas as URLs apontam para métodos e classes de Controller, que se encarregam de processá-las e renderizar a View correta. Com ele não existem Postbacks, ViewStates e mais uma série de outras coisas que são comuns no ASP.NET Web Forms.

Antes do surgimento do ASP.NET MVC, a opção que existia para a separação de responsabilidades na camada de apresentação com o ASP.NET Web Forms, era conhecida como padrão MVP (Model-View-Presenter).

A camada Presenter faz o papel da camada Controller aqui, mas ela não recebe diretamente as requisições. As URLs da aplicação continuam apontando paras as páginas aspx.

A diferença é que nesse padrão precisamos criar uma interface que representa a View. Essa interface precisa conter todos os elementos importantes da View, principalmente aqueles que precisam ser acessados na camada Presenter.

A classe de code-behind das páginas e User Controls deverão implementar essas interfaces. A camada Presenter, por usa vez, irá se comunica com a camada View através dessas interfaces. Por fim, qualquer evento disparado na página, deverá ser redirecionado para a classe Presenter.

Esse é o princípio básico, que consegue retirar do code-behind a maior parte do código, principalmente código que envolve algum tipo de lógica de negócio. Do ponto de vista de testabilidade é genial, pois você pode criar testes unitários para validar sua camada de apresentação.

...
Quer ler esse conteúdo completo? Tenha acesso completo