Переход от Виндзорского замка к IoC под управлением Medium Trust

Я унаследовал проект, который выполнялся на хосте, который настроил Full Trust, так как это требуется для IoC Castle Windsor. Однако новый хост будет работать только в среде Medium Trust (как и большинство провайдеров виртуального хостинга), поэтому мне нужно заменить Windsor другим IoC.

Будучи довольно новым для IoC, я не уверен, какие фреймворки лучше использовать в Medium Trust и с моделью Service Locator.

Пример существующего регистрационного кода:

IWindsorContainer container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(container));

container.RegisterControllers(typeof(HomeController).Assembly);

container.Register(
    Component.For(typeof(IEntityDuplicateChecker))
        .ImplementedBy(typeof(EntityDuplicateChecker))
        .Named("entityDuplicateChecker"));

container.Register(
    AllTypes
        .FromAssemblyNamed("Salient.Website.Data")
        .Pick()
        .WithService.FirstNonGenericCoreInterface("Salient.Website.Core"));

container.Register(
    AllTypes
    .FromThisAssembly()
        .Pick()
        .WithService.FirstNonGenericCoreInterface("Salient.Website.ApplicationServices"));

ServiceLocator.SetLocatorProvider(() => new WindsorServiceLocator(container));

Это сэкономило бы мне много проб и ошибок с каждой платформой, если бы у меня было несколько советов о том, какие из них будут подходящими, работать на виртуальном хостинге со средним доверием, и, надеюсь, пример перевода вышеупомянутого для начала.

1 ответ

Решение

Требование к частичному доверию вашего хостера является странным, поскольку Microsoft предоставила хостерам указания, что им следует перейти от Medium Trust и использовать вместо этого надлежащую изоляцию на уровне ОС (см. Здесь, здесь и здесь). Официальная позиция команды ASP.NET заключается в том, что Medium Trust устарел, что означает, что новые функции и платформы не будут тестироваться для поддержки частичного доверия, и ошибки в этой области не будут исправлены.

Тем не менее, существуют другие фреймворки, которые будут работать с частичным доверием:

  • Simple Injector (который я поддерживаю) разработан и протестирован для сценариев частичного доверия.
  • Ninject имеет специальные сборки для сред со средним уровнем доверия.

Могут быть и другие, но это те, о которых я знаю.

Другие вопросы по тегам