Разработка мультимодульного, межкомандного веб-приложения

Фон

Мы занимаемся редизайном внутреннего веб-приложения (ASP.NET MVC3) с целью облегчения разработки и особенно развертывания. Приложение представляет собой бэк-офис, для которого несколько команд разрабатывают модули. Последние несколько лет это было сделано, работая в том же проекте, а затем создавая полную версию "всего", когда кому-то нужно было выпустить. Неудивительно, что это не сработало так хорошо. Сейчас мы находимся в ситуации, когда полдюжины команд хотят выпускать модули по разным графикам, что делает ситуацию невыносимой.

Чего мы хотели бы достичь:

  1. Каждая команда разрабатывает свои собственные отдельные модули, которые затем загружаются в фреймворк.
  2. Такие модули должны быть развертываемыми без повторного развертывания базового приложения или любых других модулей.
  3. Модули должны иметь возможность предоставлять частичные представления другим модулям

Эта проблема

Мы сделали проверку концепции, отвечающей всем трем требованиям. Межмодульная связь осуществляется с использованием DI-контейнеров. Это работает довольно хорошо - с одной оговоркой. Когда модули имеют разные версии некоторой зависимости, мы получаем несоответствие версий. Если мы хотим избежать возврата к тому, что имеем, и заставлять всех переустанавливать каждый раз, когда кто-то обновляет какую-либо зависимость, нам нужно иметь возможность загружать несколько версий зависимостей.

Насколько я понимаю, это потребует от нас загрузки модулей в отдельные домены приложений. Это, кажется, поднимает ряд вопросов. Во-первых, в ряде дискуссий кажется, что это плохо работает с IIS/ASP.NET в отношении переменных ThreadStatic и т. Д. Во-вторых, нам нужно выполнить сортировку между доменами, что кажется нетривиальным и добавит много сложность. В-третьих, межмодульное общение также выглядит болезненным.

Я кратко посмотрел на MAF, который, по крайней мере, кажется, что дает некоторую поддержку фреймворка для этого типа архитектуры, но он также выглядит решительно сложным... Есть ли лучшие альтернативы: какая-то поддерживающая фреймворк или дизайн?

0 ответов

Другие вопросы по тегам