Desenvolvimento Web com .Net – MVC x WebForms

Olá pessoal, o debate MVC x WebForms se tornou muito popular e pretendo abordar o tema aqui também.

Ambas tecnologias são para desenvolvimento Web.

ASP.Net WebForms:

  • Existe desde 2001 (foi o primeiro modelo de desenvolvimento Web com .Net)
  • Tomou o lugar do ASP3 (a maioria dos sites migraram de ASP para ASP.Net)
  • É até hoje o modelo mais utilizado em desenvolvimento ASP.Net.

O WebForms facilitou muito a vida de quem trabalhava com WindowsForms ou VB6, segue o conceito de “drag and drop”, controles muito ricos como o GridView por exemplo com um simples arrastar e soltar.

O WebForms faz sozinho boa parte do trabalho de desenvolver para Web:

  • Gera HTML e JavaScript sozinho.
  • Controla o estado dos controles (postback / viewstate)
  • Os controles fazem praticamente tudo que precisa sem programação extra.

Com tudo isso temos uma boa lista de prós para o WebForms:

  • É RAD (Muito rápido de desenvolver).
  • Controles ricos.
  • HTML e JavaScript automático. “sem necessidade de programar”.
  • Gerenciamento do estado abstraído.
  • Designer Visual.

Mas também temos os contras:

  • Não se tem muito controle do HTML e JavaScript gerado.
  • Alguns controles não estão em conformidades com o W3C.
  • Difícil integração com frameworks JavaScript.
  • A UI (user interface) é quase impossível de se testar.
  • Problemas para utilizar SEO
* Muitas melhorias ocorreram na versão 4.0 do WebForms.

Para entendermos melhor as diferenças vamos fazer uma comparação.

ASP.Net MVC:

  • Segue o padrão arquitetônico de Model View Controller.
  • Faz separação de responsabilidades (cada letra de MVC com a sua).

Para esclarecer, o conceito do MVC não foi criado pela Microsoft (foi pela Xerox em meados de 70), porém foi muito bem adotado e revitalizado.

Quais os prós de se usar MVC:

  • Separação de responsabilidades (cada camada com a sua).
  • Testabilidade.
  • Reusabilidade.
  • Escalabilidade.
  • Manutenção facilitada.
  • Total controle do HTML e JavaScript gerado.
  • Suporta TDD em todos os apectos.

Muito bom né? Agora vamos aos contras:

  • Não é tão RAD quanto o WebForms.
  • Não disponibiliza controle prontos “drag and drop” (mas existem muitos free).
  • A curva de aprendizado é maior, há mais coisas para aprender.
  • Mais coisas para controlar, por ex, sessão de usuário.
  • É necessário desenvolver mais código.

Certo, já deu para balancear?
O que o MVC tem em comum com WebForms:

  • Ambos são ASP.Net (rodam sob o mesmo runtime).
  • Geram páginas ASPX.
  • Rodam no IIS.
  • Acessam dados livremente (ADO.Net, LINQ, Entity Framework).
  • São desenvolvidos no Visual Studio (para MVC é necessário baixar um complemento dependendo da versão do Visual Studio).

Acredito que com base nesses conceitos e diferenças já dá para ter uma ideia de qual abordagem é mais indicada para determinados projetos.

Muitos estão afirmando que o WebForms virou o ASP3 (clássico) ou seja está caindo em desuso. “Quando muitos gurus da tecnologia começam a fazer esse tipo de afirmação a tendência é que se torne uma verdade.”

Afinal qual dos dois escolher para meu próximo sistema Web?

Desenvolver um sistema Web, ASP.Net, desenvolvido em WebForms, na maioria das vezes pode (e vai) atender meu cliente, o que me motiva escolher MVC já que o esforço de desenvolvimento é maior?

As maiores vantagens são:

  • Controle total do HTML e JavaScript gerado.
    Seu site não vai ter o CSS quebrado ou uma função JS desconhecida gerada pelo   ASP.Net. Além de facilitar a compatibilidade com os browsers.
  • Possibilidade de testar a UI
    No WebForms isso é quase impossível, uma vez que não conhecemos o código que ele irá gerar. Para quem usa TDD é essencial ter todas as camadas testadas.
  • Reaproveitamento de código
    O código que é gerado com MVC é seu, você o conhece e o reaproveita onde quiser.
  • Aperfeiçoamento no conhecimento de CSS, HTML e JavaScript.
    Essas tecnologias por mais que bem conhecidas estão em alta, novidades como Windows 8, HTML 5 e o conceito da “Nova Web” são baseadas no uso destes conhecimentos, não dá mais para deixar de lado.

Até então todos desenvolvedores ASP.Net eram adeptos ao WebForms, logo nem sempre encontramos profissionais experientes em MVC (que já está na versão 4).

Cenário:
Você tem um projeto de um sistema web para fazer, o prazo é curto, o sistema não exige uma interface rica e customizada (ainda mais se for uma intranet) e sua equipe não tem conhecimento de MVC, vá de WebForms, não é nesse momento que deverá colocar em prática o aprendizado do MVC.

Eu mesmo gosto do WebForms (assim como já gostei muito de ASP3), trabalhei anos com ele, migrei para o MVC e aos poucos estou convertendo projetos para essa tecnologia.

Minha dica é:
Aprenda! Não deixe de aprender, experimente fazer um projeto em MVC, com o tempo e conhecimento a produtividade volta ao normal, e mais, você se manterá atualizado (MVC já é um pré-requisito para muitas vagas de desenvolvimento).

Por hoje é isso…
Pretendo continuar esse assunto abordando um novo conceito, chamado até então de “Nova Web”. Aguardem.

Quer compartilhar sua experiência? Tirar dúvidas? Utilize os comentários 😉

Referências:

LightSwitch – Um jeito simples de criar aplicações modernas para empresas.

Olá pessoal, trago hoje mais uma novidade da Microsoft, o LightSwitch 2012

Todas as empresas atendem um determinado negócio e hoje em dia é praticamente impossível imaginar que não exista um sistema apoiando o controle do negócio ou pelo menos parte dele.

Desde a papelaria da esquina até um banco, todas empresas necessitam de um sistema, seja ele de apoio aos negócios ou de controle (estoque por exemplo).

As empresas possuem esta necessidade, é vital para seu funcionamento, mas nem sempre estão dispostas a investir financeiramente para adquirir um sistema moderno sob encomenda, tão quanto esperar aqueles meses de projeto para que fique pronto.

Resultado:
Sistemas Access, planilhas Excel, Softwares de prateleira ou até aquele sistema em VB5 que o vizinho tinha desenvolvido uns 10 anos atrás.

Em minha experiência com sistemas já presenciei diversos cenários, um dos mais intrigantes foi estar em um departamento de um banco de grande porte onde todo o processo era controlado por um sistema chamado “Planilhão”. O planilhão fazia tudo, controlava valores, entradas, saídas, diferenças.
Exposição à erros humanos, duplicação de informação e perda de dados era rotina.

Desenvolver um sistema sob encomenda que atenda o negócio de um determinado cliente não é barato para quem compra e não é fácil para quem faz.

Pensando nesse cenário a Microsoft inovou mais uma vez e lançou uma solução:

LightSwitch for Visual Studio

  • Desenvolva rapidamente aplicações de negócio.
  • Obtenha mais de seus dados.
  • Surpreenda os usuários finais.
  • Estenda sua aplicação sem redesenhá-la.

O LightSwitch é 100% RAD (Rapid Application Development).
Disponível para download no Visual Studio 2010, parte do Visual Studio 2012.
Cria automaticamente toda a estrutura (telas, CRUD, pesquisas, visualizações).
O único código que é escrito é a regra de negócios. Possui a facilidade de acompanhar o crescimento do sistema sem maiores manutenções.
Pode ser hospedado no Windows Azure 🙂

Arquitetura:

Arquitetura LightSwitch

Desenvolvedores tem em mãos com LightSwitch uma oportunidade de gerar novos negócios, pois possibilita o rápido desenvolvimento de sistemas, em conjunto com o Entity Framework todas as Entidades são criadas com base na modelagem de dados.

Não tem mais desculpa para usar o velho “planilhão” agora 🙂

Curioso para experimentar?
Abaixo uma série de vídeos passo-a-passo que irá prover todo o suporte necessário para se ambientar com a nova ferramenta:
(Conteúdo oficial Microsoft – Em Inglês) 

1 – How Do I: Define My Data in a LightSwitch Application?
(6 minutos 55 segundos)

2 – How Do I: Create a Search Screen in a LightSwitch Application?
(8 minutos, 58 segundos)

3 – How Do I: Create an Edit Details Screen in a LightSwitch Application?
(5 minutos, 15 segundos)

4 – How Do I: Format Data on a Screen in a LightSwitch Application?
(12 minutos, 52 segundos)

5 – How Do I: Sort and Filter Data on a Screen in a LightSwitch Application?
(9 minutos, 44 segundos)

6 – How Do I: Create a Master-Details (One-to-Many) Screen in a LightSwitch Application?
(9 minutos, 15 segundos)

7 – How Do I: Pass a Parameter into a Screen from the Command Bar in a LightSwitch Application?
(11 minutos, 44 segundos)

8 – How Do I: Write business rules for validation and calculated fields in a LightSwitch Application?
(15 minutos, 55 segundos)

9 – How Do I: Create a Screen that can Both Edit and Add Records in a LightSwitch Application?
(7 minutos, 30 segundos)

10 – How Do I: Create and Control Lookup Lists in a LightSwitch Application?
(7 minutos, 24 segundos)

11 – How Do I: Set up Security to Control User Access to Parts of a Visual Studio LightSwitch Application?
(23 minutos, 52 segundos)

12 – How Do I: Deploy a Visual Studio LightSwitch Application?
(20 minutos 24 segundos)

13 – How Do I: Deploy a LightSwitch Application to Azure?
(12 minutos, 41 segundos)

14 – How Do I: Modify the Navigation of Screens in a LightSwitch Application?
(04 minutos, 19 segundos)

15 – How Do I: Open a Screen After Saving Another Screen in a LightSwitch Application?
(08 minutos, 41 segundos)

16 – How Do I: Connect LightSwitch to an Existing Database?
(15 minutos, 20 segundos)

17 – How Do I: Connect LightSwitch to SharePoint Data?
(15 minutos, 26 segundos)

18 – How Do I: Save Data from Multiple Data Sources on the Same Screen?
(07 minutos, 19 segundos)

19 – How Do I: Set Default Values on Fields when Entering New Data?
(03 minutos, 21 segundos)

20 – How Do I: Copy Data from One Row into a New Row?
(07 minutos, 18 segundos)

21 – How Do I: Add Commands as Buttons and Links to Screens?
(08 minutos, 15 segundos)

22 – How Do I: Show Multiple Columns in an Auto-Complete Dropdown Box?
(02 minutos, 39 segundos)

23 – How Do I: Create Custom Search Screens in LightSwitch?
(18 minutos 22 segundos)

24 – How Do I: Handle Database Concurrency Issues?
(14 minutos 12 segundos)

O objetivo desse post é divulgar a novidade, em breve postarei mais conteúdo como exemplos, códigos e dicas.

Downloads:

Saiba mais em: