ASP.NET Core – Web Forms ou MVC?
- 3 December, 2009 -
- Diversos -
- Tags : ASP.NET, ASP.NET Core, MVC, Web Forms
- 9 Comments
Este post não tem como objetivo apresentar profundamente as questões técnicas sobre cada tecnologia e sim sobre o ponto de vista de quais os melhores cenários para a aplicação delas. Para informações técnicas, o site www.asp.net trás todo o conteúdo em diversos tipos de formatos (artigos, vídeos, passo-a-passo, etc).
Eu costumo dividir o desenvolvimento Web em dois tipos de desenvolvimentos: sistemas e sites.
Desenvolvimento de sistemas
Normalmente é executado dentro de um ambiente conhecido e controlado, possui uma quantidade pequena de usuários (200 pessoas por exemplo), é fácilmente controlado com pré-requisitos (para executar utilize o Internet Explorer 7 ou superior na resolução XYZ) e executa processos administrativos, comerciais com um foco muito grande na implementação do negócio, ou seja, praticamente todo o sistema está desenvolvido dentro de uma camada de negócios/dados/banco de dados.
Neste cenário, não existe preocupação alguma com layout, HTML, resolução, etc etc etc.. e até mesmo é totalmente ignorado usuários com baixa velocidade de conexão com internet, padrões W3C, etc.
Este cenário é muito comum em sistemas internos (seja rodando na intranet ou internet).
As principais preocupações são: implementação dos requisitos de negócio, segurança, performance de processamento, infra-estrutura e distribuição. Dificilmente nesse cenário existe a figura de um designer.
Na minha experiência de consultoria, esse é o cenário mais comum nas empresas.
Desenvolvimento de sites
A dificuldade é muito superior em relação a camada de apresentação e claro, as implementações de negócios devem ser integras conforme as especificações e definições de negócio de cada empresa.
Neste cenário existe a necessidade de se rodar em qualquer lugar (navegador de mercado), performance da camada de apresentação é necessária, provavelmente poucos processamentos pesados em servidor, necessidade de seguir os padrões W3C, recursos no client para melhorar a experiência com o usuário, a figura do designer é presente, até mesmo conhecimento pesado em HTML é necessário e a integridade do layout X aplicação é algo extremamente trabalhoso.
Web Forms ou MVC
ASP.NET Core – plataforma ÚNICA da Microsoft para criação de aplicações Web. Os recursos do ASP .NET estão implementados aqui! Logo, Web Forms e MVC oferecem os mesmos recursos Core.
Web Forms - temos uma plataforma extremamente produtiva em questões de controles prontos, validação de dados de formulários, criação de formulários, etc. Além de total controle do ciclo de carregamento da página, oferece uma plataforma para os desenvolvedores ideal para o desenvolvimento de sistemas. Já para desenvolvimento de sites, pode trazer algumas dificuldades, principalmente no controle do HTML (em alguns casos temos que abrir mão da produtividade para controlar 100%), missão complicada de controlar/diminuir o tamanho do View State, que pode ser muito ruim em sites, resumindo, para desenvolvimento de sites podemos considerar que é uma plataforma boa porém com restrições de controle e produtividade.
MVC – temos uma plataforma que pode ser totalmente controlada pelo desenvolvedor, porém algumas implementações de produtividade disponíveis no Web Forms ainda não estão disponíveis. Sugere a utilização de um padrão, no caso o MVC (divisão de papeis, testável,etc), mas claro, não garante de forma alguma que isso será seguido, mas já faz com que as pessoas pensem em usá-lo. Para desenvolvimento de sistemas considero uma plataforma boa, porém com alguns prejuizos de produtividade e que talvez em algumas empresas será totalmente repreendido por misturar o código HTML com o código da lógica da interface (claro que se for seguido o padrão, estamos falando de pouco código aqui!). Já para desenvolvimento de sites é a plataforma ideal pois o desenvolvedor tem todo o poder de controlar 100% as suas necessidades.
Versões
Web Forms – Chega no framework 4.0 e Visual Studio 2010 na versão 4, a versão atual em produção é a 3.5.
MVC – Chega no framework 4.0 e Visual Studio 2010 na versão 2, a versão atual em produção é a 1.0.
Resumo
A Microsoft está criando um leque, hoje temos duas possibilidades, Web Forms e MVC, e quem sabe futuramente não teremos mais… vale sempre lembrar que o Core será o mesmo, proporcionando uma evolução constante nas duas tecnologias.
Muito bom Tarifa.
Eu também costumo fazer essa divisão entre sistemas/sites. Porém, a “não preocupação” com os padrões é válida para os sistemas que rodam em uma rede interna(intranet), onde se tem conhecimento de quais recursos o cliente usa e irá rodar a app. Para um sistema que irá rodar na web (internet) de forma geral, eu ainda acho importante realizar todos os passos (nesse caso seria um mix de site com sistema).
Sobre o ASP.NET MVC quem chegou a usar a versão 1.0 e agora testa a beta da versão 2.0 vê que deu uma melhorada boa. Creio que ainda irá melhorar bastante. Um dos grandes trunfos do ASP.NET MVC é o controle da saída no cliente (XHTML/CSS/JS). Para sites isso é perfeito! Com webform temos algumas dificuldades com o viewstate, id de controles etc.
Acho que essa discussão vai ser boa em 2010 com o ASP.NET MVC 2.0 x ASP.NET WEBFORMS 4.0 (ele vem com tudo). Eu tenho minhas impressões e cheguei a escrever nesse post: http://devgoias.net/artigo_ler.aspx?ID=52
Finalizando, quem não dá importância e não sabe trabalhar com a view/interface da app web, não vai conseguir se dar bem com ASP.NET MVC. #prontofalei.
Hehe.
Abraço!
ps.: quase um post dentro do post.
Senhores do conselho…
Usabilidade + Arquitetura de Informação = É básico!
Acessibilidade = Pode depender do publico alvo
Eu não condeno de maneira nenhuma o WebForms por conta do ViewState. Claro, tem que saber usar, se não, performance se torna um problema. Da mesma forma que não adianda por um UpdatePanel do começo ao final da página.
Com WebForms, tenho trabalhado com ASP.NET AJAX, WCF e Muito Javascript e na grande, grande maioria das vezes, tenho controle do HTML gerado, sendo bem satisfatório em termos de “cross-browser” e performance.
Na pior das hipóteses, podemos aplicar alguns padrões (Strategy, Factory, Singleton) para usarmos o ViewState em Cache ou Session, pra não ficar indo e vindo do Client a cada Request.
Com relação ao MVC, realmente temos total controle da apresentação, pois temos que fazer na mão, mas isso implica em uma equipe mais capacitada.
Também acredito, Tarifa, como você disse no Twitter durante o PDC09, que o futuro é o Core do ASP.NET permitir a flexibilidade dos dois cenários.
Já trabalharam com esses templates do ASP.NET AJAX Preview? Fantástico.
abraços,
Muito bom esse post. Vale ressaltar também que o asp.net mvc está em sua fase inicial, oferecendo poucos recursos de produtividade, porém, fornece mecanismos de extensibilidade muito bons, que permitem a criação de componentes de criação de interface e extensores que demandaram um trabalho maior no inicio do projeto mas que possibilitaram ganhos de produtividade para os outros projetos. E também a flexibilidade proporcionada pelo padrão mvc possibilita a criação de sistemas de alta qualidade devido a sua testabilidade através de testes unitários.
Um abraço.
Xz0Xez Excellent article, I will take note. Many thanks for the story!
Caros… realmente é válida a divisão entre sites e sistemas… tendo ambos particularidades que os definem bem… Quanto ao uso do MVC… Participei recentemente da implementação de um projeto de complexidade relativamente alta todo baseado em MVC… e realmente… é um encanto !!! A dificuldade inicial é obvia… a produtividade é reduzida em realação ao webforms… porém os ganhos justificam todos os entraves… principalmente a questão do código que está todo em sua mão… e o principal… a produtividade que se perde inicialmente… é recuperada na Manutenção que se dá de forma mais tranquila uma vez que as camadas são completamente independentes e lógico se utilizarmos bom senso na implementação e isolarmos bem as regras do restante…. Sem contar a testabilidade do sistema/site… o que no final das contas reflete em um produto final de maior qualidade!
[...] http://www.alexandretarifa.com.br/?p=9 [...]
Acho totalmente o contrario do que você descorreu no artigo.
Entrou muito na sua opinião, no que você usa, enfim..é totalmente o oposto.
O ASP.NET MVC é muito amarrado, pouco mutável, para dar manutenção nele você precisa seguir aquela estrutura, se você precisar adotar métodos alternativos mais práticos, a curto prazo, acaba ficando amarrado naquele formato.
Ja webforms dão mais liberdade pra você mexer no HTML. Trabalhar com controles mais genéricos, tags, e outros recursos que dependem menos do framework
Olá Fernando, sem problemas
é sua visão e concordo com ela por essa visão.
Como é uma opinião minha, tenho certeza que não terei 100% de aprovação
Abs
I’ll immediately seize your rss feed as I can’t in
finding your email subscription hyperlink or e-newsletter
service. Do you’ve any? Please let me understand in order that I may subscribe. Thanks.