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/
Respostas:
Não é uma maneira ruim de reescrever um aplicativo. Isso seria particularmente útil para uma reescrita de longo prazo ocorrendo em fases:
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.
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
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.
fonte