从Castle Windsor迁移到在Medium Trust下运行的IoC

时间:2014-03-10 09:10:23

标签: asp.net castle-windsor ioc-container medium-trust

我继承了一个在设置了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));

如果我有一些适合的指导,在中等信任的共享主机下工作,并希望将上述内容翻译成一个例子,那么每个框架都会为我节省大量的反复试验。

1 个答案:

答案 0 :(得分:3)

您的托管服务商的部分信任要求很奇怪,因为Microsoft已向托管商提供了指导,他们应该从中型托管移出并使用适当的操作系统级别隔离(请参阅hereherehere)。 ASP.NET团队的官方立场是中等信任已经过时,这意味着新功能和框架不会针对部分信任支持进行测试,并且该区域中的错误将无法修复。

尽管如此,还有其他框架将以部分信任的方式运行:

可能还有其他人,但这些是我所知道的。