Есть ли какие-либо проблемы, о которых следует знать при попытке совместного запуска WebForms и MVC3? - PullRequest
0 голосов
/ 20 февраля 2012

Текущая кодовая база в работе - полностью WebForms, с большей частью логики, вставляемой в файл code-behind.Я исследую возможность использования MVC3 для новых добавленных страниц и будущего рефакторинга без необходимости выбрасывать всю кодовую базу (большое нет-нет).Все эти страницы являются частью одного и того же «приложения», так что это не так просто, как просто создавать новые проекты с MVC - они должны очень тесно взаимодействовать, а в некоторых случаях страницы WebForms должны перенаправляться на страницы MVC, и наоборот.

Я наткнулся на несколько статей, в которых показано, как можно интегрировать эти два (хотя и в очень простых сценариях, хотя мой сценарий довольно сложный), но есть ли какие-либо проблемы, о которых следует знать?В частности, что касается перехода со страницы WebForms на страницу MVC, а затем обратно на страницу WebForms, где данные должны передаваться по страницам, скажем, из сеанса (и не обязательно считываться полностью из базы данных при загрузке), например,рабочий процесс, например:

  1. (WebForms). Пользователь переходит на CreateQuote.aspx? CustomerId = 42 и вводит некоторые данные.Они нажимают кнопку «Обработка» ...
  2. (MVC) / Customers / 42 / process страницу MVC, которая считывает информацию, представленную ранее, и выполняет некоторые дополнительные действия.Пользователь нажимает кнопку «Далее» ...
  3. (WebForms) CompleteQuote.aspx? CustomerId = 42 & QuoteId = 534235, которая извлекает информацию из предыдущей страницы MVC и применяет к ней больше логики.

Кроме того, наш существующий проект - это проект ASP.NET Web Site (т. Е. Тот, в котором каждая отдельная страница представляет собой свою собственную DLL);должен ли он быть преобразован в проект Web Application , чтобы существовать бок о бок с MVC (это само по себе является серьезной попыткой рефакторинга из-за больших скоплений дублирующегося кода в файлах с выделенным кодом)?

1 Ответ

2 голосов
/ 21 февраля 2012

Я бы рекомендовал вам не смешивать ASP.NET MVC и классические веб-формы в одном приложении.Храните их в отдельных проектах и ​​заставляйте их взаимодействовать через стандартные механизмы протокола HTTP (параметры строки запроса, сообщения формы, файлы cookie, ...).Вы можете поделиться аутентификацией между ними, если они размещены в одном домене.Вы даже можете совместно использовать объекты сеанса между ними, даже если они размещены в отдельных пулах приложений в IIS (не то, что вам вообще следует использовать сеанс, но это уже другая тема).

Что касается повторного использования логики доступа к данным, ну, в зависимости от того, как правильно разработано ваше существующее приложение WebForms, вы можете поделиться сборкой, содержащей ваш текущий код доступа к данным.И если ваше существующее приложение плохо спроектировано с сильной связью между различными уровнями, вы можете обернуть этот унаследованный код за хранилище и по-прежнему повторно использовать хотя бы код доступа к базе данных.

Сохраняя свои приложения отдельно, вы не делаетевам нужно загрязнить ваше новое приложение ASP.NET MVC ссылками на какой-то унаследованный код, и вам не нужно загрязнять ваше классическое приложение WebForms существующего приложения специальными вещами ASP.NET MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...