Web Forms e MVC no mesmo projeto da web

8

Estou trabalhando em um grande projeto herdado que foi criado com o ASP.NET Web Forms, e a idéia de adicionar as bibliotecas MVC ao mesmo projeto foi lançada. Sei que isso é possível (há muitos artigos disponíveis), mas estou me perguntando se / por que isso é / não é recomendado por alguém que fez algo semelhante.

A ideia é que possamos criar novas áreas do aplicativo com o padrão MVC mais recente e manter as páginas herdadas em execução como sempre.

EDIT: Para esclarecer, não estamos considerando o padrão MVP, pois ele já está sendo usado em algumas partes deste projeto, mas fazendo algo semelhante ao descrito neste artigo: https://www.simple-talk.com/dotnet/ asp.net/mixing-web-forms-and-asp.net-mvc/

quaz579
fonte
1
Isto não é uma duplicata. O padrão MVP usando Webforms e MVC não é a mesma coisa. MVP é um padrão para tornar seu site mais testável e manter suas camadas melhor separadas enquanto ainda usa Web Forms. MVC é um animal diferente.
quaz579
1
@gnat, isso não é remotamente uma duplicata dessa outra pergunta. A outra pergunta não menciona o MVC, por um lado. Parece que você está dizendo a ele para editar sua pergunta para esclarecer, porque você optou por não ler com atenção.
21750 Kyralessa

Respostas:

5

Não é uma maneira ruim de reescrever um aplicativo. Isso seria particularmente útil para uma reescrita de longo prazo ocorrendo em fases:

  1. Adicione um "projeto de teste" que utiliza os testes do CodedUI (ou Watin ou Selenium) para testar o aplicativo WebForms através do navegador. Você também pode usar o SpecFlow para definir seus casos de teste. Eu usei isso com grande efeito em um aplicativo WebForms.

  2. Depois de ter uma boa cobertura de teste do aplicativo WebForms, você poderá iniciar a próxima fase da refatoração: Movendo componentes comuns para uma biblioteca de classes separada. É aqui que seus modelos e camada de acesso a dados podem ser criados. Você pode adicionar uma referência a esta biblioteca para seus aplicativos WebForms. Os testes que você escreveu na fase 1 garantem que você não viole as regras de negócios existentes

  3. Portar a funcionalidade para seu aplicativo MVC, modificando seus testes para usar o aplicativo MVC e não o aplicativo WebForms.

Os passos 1 e 2 podem ser resolvidos simultaneamente. Você pode começar na Etapa 3 depois de testar um recurso inteiro e seus componentes comuns serem dissociados do aplicativo WebForms.

Divida o trabalho em recursos principais. Quando um recurso for suportado no aplicativo MVC, desligue-o no aplicativo WebForms. Eventualmente, ele se tornará uma casca oca do seu antigo eu até que você possa remover o código todos juntos.

Greg Burghardt
fonte
1
Essa é uma ótima estratégia em conceito, mas provavelmente levará anos para eliminar gradualmente toda a funcionalidade de um aplicativo desse tamanho (essa base de código tem pelo menos 8 anos de idade e uma equipe de ~ 20 desenvolvedores). Estou mais interessado em saber como o Webforms e o MVC se comportam juntos no mesmo projeto.
quaz579