Я создаю прототип для многоуровневого решения ASP.NET, которое будет обрабатывать (поэтапно) одинаковые типы сообщений для всех арендаторов. Однако для некоторых арендаторов некоторые шаги нужно обрабатывать несколько иначе.Архитектура динамического конвейера в .Net
Итак, давайте предположим, что для одного типа сообщений есть десять шагов, и у нас есть 100 арендаторов. В среднем у арендатора есть два пользовательских шага. Это дает десять стандартных этапов и 20 пользовательских.
То, что я пытаюсь достичь, заключается в том, чтобы иметь возможность обновлять решение с обновленной реализацией (новой DLL) этапа без необходимости перезапуска целого решения. Итак, вопрос в том, какова лучшая архитектура для этого?
Я думал о том, что каждый шаг реализации выполняется в отдельном AppDomain, но по мере увеличения количества типов сообщений, арендаторов и шагов мы получили бы много AppDomains, которые, как я полагаю, потребуют большой памяти и вероятно, не дают оптимальной производительности.
Это лучший/единственный подход, или есть другой подход, который я должен изучить?
Я подумаю об этом, но большинство шагов, как правило, не то, что вы делаете в коде Razor - они могут включать запросы к базе данных или сложную логику. Поэтому, даже если это возможно, это не оптимальное решение в моем сознании. –
Razor запускается на веб-сервере с полным доступом к базе данных или любому другому ресурсу, который может потребоваться на стороне сервера, и выполняется в том же конвейере, что и код контроллера. MVC (разделение View и Controller) - это просто соглашение. Было бы не в порядке, если бы вы изменили соглашение для этой области вашего приложения. Мир не развалится. :) В этом случае вы могли бы подумать о MVC как о плагиновой архитектуре (например, MEF) - именно это вам и нужно. –
Я согласен, что это способ пойти - это просто не совсем сидит прямо со мной;) Я посмотрю на этот подход. Возможно, это лучше, чем я думаю :) –