使用Structuremap进行动态配置

时间:2011-11-25 14:04:58

标签: inversion-of-control ioc-container structuremap

这是我想用Structuremap完成的。


在我们请求的每个请求中,我们的客户端中使用的数据库连接字符串和Web服务URL将根据某些业务逻辑而有所不同。目前,我们的sql和Web服务客户端实现在其构造函数中接收配置。

我想使用配置文件,但却发现每次请求都无法使用它们。

在我们的团队中,我们正就两个解决方案进行辩论:


1-将配置工厂传递到可以解析要使用的配置的注册表中 当容器需要实例化时。

  • 我看到的问题是我们可能必须使用HttpContext.Items,因为大多数app对象都没有在structuremap中实例化,并且似乎很难从工厂内获取当前请求上下文。


2-为每个不同的配置实例化容器,并根据业务逻辑决定使用哪个容器。

  • 我看到的问题是加载时间,内存消耗以及对象的生命周期。所以,我似乎没有发现任何真正的问题,我觉得有多个容器是错的。



1-你看到其他问题了吗?

2-更好的主意吗?

3-您会选择哪一个?


谢谢

修改

  

并且似乎很难从工厂内获得当前的请求上下文。

我不是说HttpContext,我的意思是请求数据。对于这个应用程序,它是一个wcf请求对象。

1 个答案:

答案 0 :(得分:0)

  

似乎很难从工厂内获得当前的请求上下文。

不确定为什么会这样。以下不会这样做吗?

 ObjectFactory.Configure(config => {
            config.For<HttpContextBase>()
                .Use(() => { return new HttpContextWrapper(HttpContext.Current); });
            config.For<Service>().Use<Service>();
        });
        var service = ObjectFactory.GetInstance<Service>();

 public class ConfigurationFactory
    {
        public ConfigurationFactory(System.Web.HttpContextBase context)
        {

        }
    }


    public class Service
    {
        public Service(ConfigurationFactory Configuration)
        {

        }
    }