Я обдумываю некоторые идеи о том, как изолировать контроллеры веб-API в их собственные "модули", которые можно объединить в одно приложение webapi. Однако я хотел бы изолировать их, и их зависимости формируют друг друга, поскольку, вероятно, будут конфликты версий сборки. Мне было интересно, можно ли этого добиться с помощью разных доменов приложений для каждого контроллера. У кого-нибудь есть опыт в этом?
Вопрос
Как разделить контроллеры webapi в их собственном домене приложений?
Ответы
Ответ 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.
Похожие материалы
- 7 ключевых уроков, которые я усвоил, создавая бэкенды для интерфейсов
- Шаблоны проектирования: шаблон проектирования модулей в JavaScript
- Схема автоматического выключателя упрощена. Зачем он нужен в вашем микросервисе?
- Шаблон декоратора в Java
- Реализация oData inlinecount с использованием asp.net webapi
- Любая коллекция вызывает тихий сбой с кодом состояния 500 в веб-API Asp.Net MVC 4 RC