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

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


person Paul Fryer    schedule 17.11.2014    source источник


Ответы (1)


Все, что находится в папке 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 переходит к поиску сборок, чтобы найти контроллеры, теперь он будет извлекать все дополнительные сборки. См. этот пример. более подробное объяснение.

person ddoti    schedule 25.02.2015