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