Структура MVC3 в IIS

#iis #asp.net-mvc-3 #architecture

#iis #asp.net-mvc-3 #архитектура

Вопрос:

Я создаю несколько веб-приложений. Что я хочу здесь сделать, так это:

  1. Приложения должны быть автономными в IIS, используя другой пул приложений.

  2. Существует одно основное приложение, используемое соло в качестве главной страницы, позволяющее входить / выходить из системы и направлять пользователей к другим приложениям.

  3. Я хочу, чтобы другие приложения использовали макет основного приложения.

Структура, о которой я думал, заключалась в развертывании основного приложения в корневой папке веб-сайта и размещении других приложений под ним в отдельной папке (отдельное приложение и пул). Что-то вроде:

 IIS
  |
  |__Main app (web site)
        |
        |__App1
        |
        |__App2
  

Однако, я просто запутался здесь:

  1. Как я могу повторно использовать приложения / пулы layout / dll acorss, не копируя их в каждое приложение (возможно, это глупый вопрос)

  2. Как я могу использовать контроллер / функцию действия MVC3 вместо прямого использования жестко запрограммированного <a/> для навигации пользователей к каждому приложению. Я действительно пробовал это. Похоже, что основное приложение (MVC3) может распознавать контроллер и просматривать только в своем собственном проекте.

вкратце, что я пытаюсь сделать, это: развернуть мои приложения в структуре дерева выше и позволить основному приложению выводить представления из вспомогательных приложений и отображать их во фрейме основного приложения.

Возможно, это не очень хорошая практика, но любое предложение приветствуется!!!

Большое спасибо

Комментарии:

1. Я нутром чувствую, что вы действительно хотите сделать здесь что-то другое. Но, не слишком увлекаясь своим дизайном, вы могли бы рассмотреть возможность использования соединений: msdn.microsoft.com/en-us/library/aa365006 (v = против 85).aspx Они похожи на символические ссылки в Linux … если вы знакомы с ними.

2. Итак, чего вы хотите достичь? Зачем это делать?

3. Я просто хочу сделать свое приложение более переносимым. Поскольку функции приложений сильно отличаются друг от друга, я не хочу создавать их в одном проекте MVC3, что затруднит их разделение. Итак, я хочу, чтобы они были в другом проекте. Однако я хочу, чтобы основное приложение размещало их в своем фрейме. Основное приложение работает как демонстрационное приложение, оно аутентифицирует пользователей и показывает приложения на основе их профиля. Хорошим примером может быть facebook.com . Пользователи входят / выходят из facebook и могут установить приложение в свою учетную запись. Спасибо

Ответ №1:

Это действительно звучит так, как будто вы хотели бы использовать Areas в MVC. Это не позволило бы вам запускать вложенные «приложения» в их собственном пуле приложений, но это позволило бы выполнить все остальное, что вы хотите сделать (общие макеты, библиотеки DLL, Html.ActionLink доступ на основе ролей к каждому из них Area и т.д.). Вы можете легко совместно использовать навигацию верхнего уровня во всех областях и иметь различную вспомогательную навигацию для каждой. У меня есть сообщение в блоге из двух частей об использовании единого макета, который является общим для всех областей, что может дать вам некоторую помощь (или идеи).

Единый макет для областей с представлениями ASPX и Razor (часть 1)Использование механизма просмотра ASPX

Единый макет для областей с ASPX и Razor views (часть 2)Использование механизма просмотра Razor

Если вы считаете, что размещение вспомогательных приложений в областях в одном проекте слишком жестко, вы также можете рассмотреть возможность использования MvcContrib для создания вспомогательных приложений в переносимых областях, а затем использовать их в своем приложении верхнего уровня.