Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как разделить контроллеры webapi в их собственном домене приложений?

Автор вопроса: Paul FryerОтветов: 1

Я обдумываю некоторые идеи о том, как изолировать контроллеры веб-API в их собственные "модули", которые можно объединить в одно приложение webapi. Однако я хотел бы изолировать их, и их зависимости формируют друг друга, поскольку, вероятно, будут конфликты версий сборки. Мне было интересно, можно ли этого добиться с помощью разных доменов приложений для каждого контроллера. У кого-нибудь есть опыт в этом?

design-patternsappdomainisolation

Ответы

Ответ 1 · ddoti

Все, что находится в папке bin, будет загружено в текущий домен приложения, поэтому обычно это не проблема. Однако при уклонении от конфликтов версий вы можете использовать пользовательский преобразователь сборок для загрузки нескольких сборок/версий в один и тот же AppDomain. Это позволит вам добавлять дополнительные сборки в AppDomain веб-API.


    public class CustomAssemblyResolver : DefaultAssembliesResolver
    {
        public override ICollection GetAssemblies()
        {
             // load all of your assemblies and return
        }
    }

Затем вы замените преобразователь сборки по умолчанию для веб-API в конфигурации.


    config.Services.Replace(typeof(IAssembliesResolver), new CustomAssemblyResolver());

Когда веб-API переходит к поиску сборок, чтобы найти контроллеры, теперь он будет извлекать все дополнительные сборки. См. этот пример. более подробное объяснение.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы