Переход от Виндзорского замка к 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 имеет специальные сборки для сред со средним уровнем доверия.
Могут быть и другие, но это те, о которых я знаю.