none
ASP.NET ou ASP.NET MVC? RRS feed

  • Pergunta

  • Pessoal boa tarde!

    O post não é duplicado, antes de postar eu econtrei outro post com o mesmo título mas discutindo qual era o melhor ou comparando os dois em uma decisão de utilizar um ou outro antes de começar o desenvolvimento de uma aplicação!

    Então vamos ao que quero!

    Eu trabalhei desenvolvendo em ASP.NET por muito tempo, achava que essa proposta era e ainda é muito boa, trás várias facilidades e nos deixa preocupados mais com o que a aplicação deve realmente tratar, que é o meu negócio. Quando foi agora, uns dois messes para cá, eu comessei a desenvolver em ASP.NET MVC.

    Eu olhei, olhei mais uma ves ai fui atrás de uns livros meus de asp, bem achei uma ou outra coisa parecida, depois fui em um livro de JSP de 2005 que ainda tenho na minha estante e me deparei com uma grande similaridade entre os dois.

    Juro que fiquei um pouco de tempo sético com a idéia mas dai uns dias resolvi os meus desentendimentos com ele e então bola para frente. Mas dai fico uma pulga atrás da orelha se realmente compensava mais trabalho com HTML.

    Passado o primeiro mês ainda não vi um motivo que me motivasse escolher como tecnologia o uso do ASP.NET MVC, e vou falar os motivos.

    Discutindo com os meus colegas de trabalho qual o melhor foram feitas as sequintes proposições foram feitas:

    No ASP.NET MVC eu controlo o HTML. Res: Sinceramente delego esse controle ao ASP.NET para utilizar os controles prontos e testados de longa data sem mais problemas.

    No ASP.NET MVC eu não tenho o viewState. Res: Tem como eu controlar o view state de vários componentes. Tem um caso que é realmente complicado, o grid view, esse realmente gera um ViewState considerável mas tendo experiêncai com aplicações realmente grandes e com muito acessos(3500 simultaneos) nunca tivemos clientes reclamendo de lentidão.

    No ASP.NET MVC eu utilizo o MVC e no ASP.NET. não Res: Claro que é totalmente possivel utilizar o padrão MVC no ASP.NET, crio meu modelo, camada de regra e a visão fica sendo o meu WebForm, porém o que o MVC faz por mim por trás dos panos, que é mapegar as propriedades do meu modelo, eu faço isso no WEB FORM. Aqui sim ponto para o MVC, porém ainda não achei nada sobre a performance dessa operação, porque tem alguns casts envolvidos nessa operação.

    No ASP.NET MVC tem todo uma comunidade de componentes (ex: JQuery). Res: Sim realmente tem, o ASP.NET já tem vários componentes também. Ai vem a experiência, pegamos um componente aqui para TreeView, trabalhamos três dias nele para entender como utilizar pois a documentação era fraca, quando carregamos o componente não consequimos recuperar o nosso id porque ele gerava um dele mesmo, claro era só fazer uma alteração, mas para não perder mais tempo decidimos por mudar a tela e prosequir, espero que não apareça mais nada. E além do mais é possível utilizar jQuery no WebForms.

    No ASP.NET MVC eu trabalho com rotas. Res: Hehehe como estamos no VS 2010 com Framework 4.0 podemos utilizar a funcionalidade de rotas tambem no ASP.NET.

    No ASP.NET MVC o design trabalha melhor. Res: Bem não sou deseign então para mim é mais fácil trabalhar com Theme no ASP.NET e ainda fica fácim alterar o tema do meu site. Ainda não tive sorte de trabalhar em uma empresa com design dedicado, sempre fui desenvolvedor, design e as vezes até DBA.

    Bem vou parando por aqui, mas a intenção aqui não é comparar as duas tecnologias (apesar de eu ter feito isso) mas sim compartilhar a minha experiências com uso das duas tecnologias e assim quem sabe construir um tópico de consulta para quem quer iniciar um novo projeto e possa buscar aqui  subisidio para saber se um ou outra vai ser melhor para a sua aplicação. É o meu caso :D.

     

    Conto com comparativo de experiência de quem tem mais tempo com ASP.NET MVC e possa matar os meus argumentos e quem sabe assim até eu possa contruir uma opnião deferente da que tenho hoje e mais bem formada sobre o assunto de forma que quando tiver que escolher entre um ou outro possa tomar uma desicão com mais base.

     

    Obrigado a todos do forum!

    segunda-feira, 20 de setembro de 2010 18:52

Respostas

  • Pessoal depois de algum tempo pensando sobre o assunto chequei a conclusão de que realmente o padrão MVC é mais digamos aplcavel para futuro do que o WebForms. O web forms tem lá suas vantagens, porem depois de pensar um pouco e comprar as duas tecnologias eu vi que ele tem vantagens para o desenvolvimento e não para o cliente, então como eu atendo a cliente e os meus clientes não são programadores então...
    • Marcado como Resposta DanielEngenheiro segunda-feira, 15 de novembro de 2010 02:02
    segunda-feira, 15 de novembro de 2010 02:02

Todas as Respostas

  • Daniel,

    Eu nem pensaria duas vezes em usar o ASP.NET MVC. Meus argumentos:

    1) Postback e Viewstate são extremamente ineficientes. Alto consumo de banda transferindo ViewState pra lá e pra cá e alto consumo de CPU para montar a árvore de controles no server-side e permitir que você manipule os controles mais facilmente.

    2) O MVC permite o uso de frameworks "standard", como o JQuery por exemplo para trabalhar com AJAX. O UpdatePanel além de ineficiente (já que o request server-side é sempre processado completamente) é também cheio de bugs cross-browser. Se você já usou AJAX com JQuery no WebForms, vai perceber que tem problemas quando a página inserida dentro da outra também tem ViewState e o mesmo volta corrompido no postback.

    3) O MVC sugere um desenho com menor acoplamento. A longo prazo, a aplicação tende a ficar mais organizada. 

    4) Para páginas que trabalham com controles dinâmicos, é um porre lidar com isso no ASP.Net WebForms. Eu já tive muitos problemas com esse tipo de uso.

    Em resumo. Se por questões de simplicidade no desenvolvimento você optar por WebForms, é teu critério, cada um conhece o tipo de problema que está resolvendo e o nível da equipe que está trabalhando. As vezes é uma alternativa.

    Se a idéia é criar uma aplicação que dê mais trabalho para o desenvolvedor, mas seja mais performática, mais robusta, parta para o MVC.

     

    Abraço,

    Eric

    terça-feira, 21 de setembro de 2010 11:53
  • Eric, bom dia!

     

    Eu concordo com todos os problemas apresentados por você mas como no final você mesmo falou que se "idéia é criar uma aplicação que de mais trabalho para desenvolver" temos um peque no problema, a anos estamos contruindo formas de desenvolver aplicações mais fáceis de serem mantidas e desenvolvidas porque criar um dificultador no desenvolvimento neste momento, é meio que voltar ("penso eu").

    Olhando as tendências do pessoal java, que começou a anos atrás com uma arquitetura bem parecedida com o que é hoje o nosso "MVC" hoje, ou seja, JSP. Eles estão criando formas de trabalho que diminua o esforço em desenvolver apresetação, a exemplo do javaFX. Eu olhando uma aplicação construida por um colega de faculdade utilizando esse framework achei muito legal, apesar de usar flash mas ficou muito fácil de desenvolver, é simplesmente desenvolver como se fosse um client só que para web. E trouxe uma riquesa de interação com o usuário que difícilmente criariamos com o jQuery, claro que nada é impossível porém gastaria-se boas horas de trabalho tentando isso.

    E sinceramente a performance não ficou para trás não.

    Quanto a questão de performance é muito relativo e por experiência performance de aplicações comerciais não estão na interface de forma nenhuma, claro que ajuda mas não é 100% do problema.

    Mas é isso ai, eu acredito que teremos web.forms ou quem sabe silverlight por muito tempo, até mesmo porque a aceitação do javaFX esta sendo boa e o javaFX nada mas é que um SilverLight para plataforma java, então...

    quarta-feira, 6 de outubro de 2010 15:03
  • Olha... so umas observações:

    1) da para trabalhar com WebForms sem o uso de ViewState para melhoria de performance... tenho sistema com muito muito mais de 3500 acessos simultaneos sem problemas...

    2) o uso de MVC para sistemas "mono-developers" isso é... um so cara faz tudo e mais um pouco... é algo complicado e trabalhasos demais para compensar.... acho que MVC é mais funcional para sistemas desenvolvidos em fabrica de softwares, com varias pessoas trabalhando junto no desenvolvimento...

    3) sobre performance em geral... nada que um mega cluster com alguns terabytes de ram não resolva.... então não ando me preocupando com alguns kb a mais ou a menos... mas sim quanto tempo eu levo para alterar aquilo ou realizar um acerto... essas são as novas medidas a serem pesadas na escolha de metodologias hoje em dia... o cliente não tá preocupado se vai investir uns 500 ou 1000 reais a mais no servidor... ele quer saber se o relatorio que ele ainda vai pensar em pedir ano que vem ja esta pronto e funcionando agora....


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    There is no place like 127.0.0.1
    Só existem 10 tipos de pessoas no mundo... as que leem em binario e as outras...
    Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    quarta-feira, 6 de outubro de 2010 16:04
    Moderador
  • Na verdade tudo isso é muito complicado, eu acho que as duas tecnologias são boas, apesar de eu não trabalhar muito com mvc, acredito que daqui uns 3 a 4 anos a microsoft vai estar com um framework bem completo com é o webforms, no caso de viewState vc consegue controlar no webforms como o rui falou eu já tive sistema com mais de 10 mil user, acho que tudo vai do modelo de desenvolvimento.
    quinta-feira, 7 de outubro de 2010 11:41
  • Seilor... daqui a 3 ou 4 anos... ja vamo ta enjoados de usar o HTML 5 e tudo isso (WebForms ou MVC) ja vai ser obsoleto e fora de uso....
    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    There is no place like 127.0.0.1
    Só existem 10 tipos de pessoas no mundo... as que leem em binario e as outras...
    Se não da certo como voce esta fazendo... Tente fazer de um jeito totalmente diferente....
    quinta-feira, 7 de outubro de 2010 14:08
    Moderador
  • Eu acredito que o asp .net mvc é bem melhor. Pelo menos para quem quer fazer um site profissional seguindo os padrões web (portabilidade e acessibilidade), tendo controle rígido sobre o html e http.

    E se você quiser fazer testes unitários na camada de apresentação então, nem se compara. Sem contar que o asp net mvc é open source.

    As vantagens do mvc são muitas e caso deseje leia uns livros de asp net mvc 2 que você vai decidir no ato pelo mvc.

    Eu gosto de html limpo e seguindo os padrões w3c. Mas coloque na balança a sua experiência no web forms e quanto você vai demorar para aprender o mvc.

    Sds.

    segunda-feira, 11 de outubro de 2010 20:25
  • Bom material -> http://www.alexandretarifa.com.br/?p=9
    Esta resposta lhe ajudou? Marque a como útil. -- www.EdgarEsteves.com.br
    quarta-feira, 13 de outubro de 2010 16:15
  • Pessoal depois de algum tempo pensando sobre o assunto chequei a conclusão de que realmente o padrão MVC é mais digamos aplcavel para futuro do que o WebForms. O web forms tem lá suas vantagens, porem depois de pensar um pouco e comprar as duas tecnologias eu vi que ele tem vantagens para o desenvolvimento e não para o cliente, então como eu atendo a cliente e os meus clientes não são programadores então...
    • Marcado como Resposta DanielEngenheiro segunda-feira, 15 de novembro de 2010 02:02
    segunda-feira, 15 de novembro de 2010 02:02
  • Olá, não sou tão radical ao ponto de dizer que o ASP.NET MVC sempre será melhor que o WebForms. Apesar de já ter usado os dois acredito que esta escolha possa variar de acordo com o cenário, sendo assim fiz um simples comparativo: 

     

    WebForms: 

     

    • Vantagens:

     

     

    _Ainda tem maior difusão e experiência entre os desenvolvedores ASP.NET ( Oque está mudando )

    _Atualmente conta com "frameworks" que o torna mais rico, como o ASP.NET Ajax, e o ASP.NET Charting Controls, além de ser compativel com alguns componentes de terceiro

    _Gerenciamento implicito do estado dos controles (Bom a nível de produtividade)

    _Atualmente o template usado para criação de aplicações WebForms, já incorpora o Jquery como forma de torna estas aplicações mais ricas

    _Possui um recurso impár com relação a formatação de Layout baseado nos controles e em CSS chamado Temas

    _Os detalhes especificos da Web como renderização ficam "praticamente" implicitos para o desenvolvedor, que acaba utilizando um modelo de programação RAD.

    _Controles extensiveis

    _Produtividade e desenvolvimento rápido

     

     

    • Desvantagens:

     

     

    _Maior necessidade de customização dos controles existentes para atingir necessidades especificas

    _Não é 100% ajax e apresenta algumas imcompatibilidades do modelo de desenvolvimento sem o Ajax habilitado e com o Ajax habilitado (ASP.NET Ajax)

    _Os componentes "RIA" ficam limitado ao ASP.NET Ajax Control ToolKit ou componentes de terceiro

    _Quanto ao gerenciamento do estado dos controles, se não for bem usado pode ser um problema. exemplo: Página mais pesada (em numero de KB) devido ao excessivo uso de ViewState, que pode ser desabilitado.

    _Pouco controle da saída HTML

     

    ASP.NET MVC:

     

     

    • Vantagens:

     

     

    _Maior controle do desenvolvedor com relação a saída html

    _Facilidade na separação de responsabilidades (inclusive aquelas relacionadas a apresentação)

    _Possui um recurso de routing impressionante (Routing nada mais é que a passagem de parametros na url de forma legivela ao homem, o que ajuda e muito por exemplo aos mecânismos de busca)

    _Facilidade na automatização dos testes de interface, visto que dá para testar a saída html em um metodo de teste unitário convencional

    _Sem uso de Viewstate , fazendo com que as aplicações fiquem mais leves

    _Maior facilidade de manutenção do código de geração da apresentação

     _Fácil integração com o JQuery para o uso de Ajax e outros recursos o que torna a aplicação mais rica.

     

     

    • Desvantagens:

     

     

    _Exige maior codificação para elaboração da camada de apresentação (VIEW)

    _Incorpora uma metodologia/prática a uma tecnologia, o que o torna mais engessado

    _A utilização de controles (como os do próprio ASP.NET) é nula ou fica bastante limitada

    _Mais dificil, para uma equipe acostumada ao desenvolvimento RAD (VB6 / Delphi / Windows Forms)

    _Inserção Manual de Elementos HTML / Javascript / CSS

    _Queda da eficiência da IDE do Visual Studio no que diz respeito a estruturação das páginas

    _Componentização Manual, visto que por ser um recurso relativamente novo, não possui um modelo de componentes maduro

     

    Enfim, pode-se perceber que a melhor escolha se dará de acordo com a necessidade, e o que pode ser considerado uma vantagem em alguns cenários, em muitos outros pode ser uma desvantagem (como o gerenciamento de estado do WebForms), o mais importante é que nenhum destes recursos seja descartado, ou simplesmente definido como pior que outro, o mais importante aqui é saber oque usar para cada tipo de necessidade. Exemplo: se precisasse em um projeto ter um controle maior na saída html ou um desenvolvimento orientado a testes, usaria o ASP.NET MVC, da mesma forma se tivesse uma restrição de prazo e uma equipe acostumada a trabalhar com WebForms não teria dúvidas em utiliza-lo.

     

     

    segunda-feira, 15 de novembro de 2010 13:44