Отказ от ответственности это не в моей голове, я никогда не делал этого и мог быть далеко от цели:
После первоначального рассмотрения, я думаю, у вас есть 3 альтернативы, обсуждаемые ниже:
- Слияние в одно приложение,
- Иметь одно приложение в качестве корневого приложения, а другое - в качестве «вспомогательного» приложения
- Копировать слияние в одно приложение после сборки (это может быть невозможно)
1) Объединение в 1 приложение дает вам следующие преимущества, относительно просто вам необходимо изменить global.asax - настроить маршруты mvc, IOC и т. Д. - HttpApplication, Session and Security (предположим, что на основе форм) ) будет просто работать.
Существует одна несколько «второстепенная» проблема, связанная с совместным использованием tempData, которую вы сможете создать, если сможете создать экземпляр SessionStateTempDataProvider на своей странице (инициализировать загрузку, выгрузить, сохранить аналогично состоянию просмотра), я не могу показаться чтобы найти блог, но думаю, что это был Стив Сандерсон несколько месяцев назад.
Ваш юнит-тестирование / охват кода будет трудно отследить, и вам, возможно, придется подумать о способах управления этим, что является совершенно другим обсуждением.
2) С помощью этой опции вы получите полное разделение приложений с новым наследственным набором проблем. HttpApplication. * Может вызвать проблему, если ваши приложения используют его, потому что они будут ссылаться на разные папки, контексты и т. Д., Но игнорируя утверждение о том, что вы довольны тем, что это разные приложения
Следующая большая проблема заключается в том, чтобы заставить сеансы работать, теперь это может оказаться очень сложным, если сеанс находится в процессе, то каждое приложение не будет видеть сеансы других приложений, однако, если вы используете SQL или пользовательский сервер кэширования для состояния сеанса у вас должна быть возможность «взломать» либо процедуры, либо ссылки / конфигурацию, и разделить состояние сеанса между приложениями - в худшем случае вам потребуется написать собственный поставщик сеансов (я никогда не писал ни одного, поэтому не знаю, насколько это будет сложно). быть или если это даже практично).
Следующая проблема - проверка подлинности с помощью форм, вы можете выполнить стандартный единый вход и убедиться, что ключи проверки и дешифрования MachineKey совпадают в конфигурации. Временные данные будут такими же, как в варианте 1. Для меня это звучит как слишком много вещей, чтобы измениться, чтобы быть жизнеспособным ...
3) Предполагая, что вы берете свой сайт asp.net и добавляете ссылку на mvc и добавляете в глобальную маршрутизацию asax по умолчанию и т. Д., Приложение все равно должно собираться чисто, но выдает ошибки маршрутизации при поиске / маршруты типа контроллера / действия / идентификатора, поэтому вам может потребоваться проверить это.
Предполагая, что это работает, вы можете «потенциально» выполнить слияние xcopy двух приложений (то есть скопировать все файлы из приложения mvc в предварительное развертывание приложения asp.net). Я знаю, что вы можете сделать это, создав один большой проект, в котором оба приложения уже объединены, но таким образом код объединяется на более позднем этапе процесса сборки. (Подписанные собрания, приходят на ум как хлопотно). И снова вам нужно будет работать над проблемой временных данных ...
Я не затрагивал переписывание URL и многие другие аспекты, которые вам, возможно, придется рассмотреть, и, пожалуйста, обратите внимание, что у каждого подхода есть свои недостатки, которые вам, возможно, придется рассмотреть.
Подводя итог, я думаю, что ваши самые большие проблемы будут HttpApplication, Session и TempData со стороны mvc, просмотр состояния со стороны asp.net. Переписывание URL, аутентификация должна быть проще.
И как сказал Форрест Гамп: «Это мои мысли об этом».