我继承了一个在设置了Full Trust的主机上运行的项目,因为这是Castle Windsor IoC所必需的。但是,新主机只能在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));
如果我有一些适合的指导,在中等信任的共享主机下工作,并希望将上述内容翻译成一个例子,那么每个框架都会为我节省大量的反复试验。
答案 0 :(得分:3)
您的托管服务商的部分信任要求很奇怪,因为Microsoft已向托管商提供了指导,他们应该从中型托管移出并使用适当的操作系统级别隔离(请参阅here和here和here)。 ASP.NET团队的官方立场是中等信任已经过时,这意味着新功能和框架不会针对部分信任支持进行测试,并且该区域中的错误将无法修复。
尽管如此,还有其他框架将以部分信任的方式运行:
可能还有其他人,但这些是我所知道的。