将对象共享给mvc Webapp的所有用户

时间:2009-10-30 15:22:03

标签: asp.net-mvc

我的网络应用程序从数据库中准备一两分钟的特定和只读对象列表,只有在IIS启动时。除非管理员通过特定URL触发娱乐,否则这不会再发生变化。

对象的界面如下所示:

public interface IProductsRepository {
    IQueryable<Row1> ProductItmes { get; }
    IQueryable<Row2> ProductLegItems { get; }
}

我现在不确定我放置对象的位置,以便可以从任何控制器访问它。 我应该将加载方法作为静态对象放到protected void Application_Start()吗?什么是最好的方法?

4 个答案:

答案 0 :(得分:1)

您需要在此处使用依赖项注入框架,以便您可以实例化此项并将其传递到所有控制器中。这不是开箱即用的asp.net-mvc,但你可以找到许多选项,可以做到像城堡windsor或autofac

答案 1 :(得分:0)

这可能会或可能不会满足您的需求,但Castle Windsor允许您指定组件(如数据存储库)将具有多少个实例。我个人在处理这个问题时( lifesyle 而不是生活方式)导致数据存储库在帖子之后保持不变而没有初始化它。

http://www.castleproject.org/container/documentation/trunk/usersguide/lifestyles.html

答案 2 :(得分:0)

一个好地方就是Cache。您可以在Application_Start()

上加载Cache

答案 3 :(得分:0)

您可以将它存储在Application对象中,但是您应该将其注入Controller。您不应直接引用Application对象,因为这会使您的应用程序不易测试。我为此目的使用Ninject(http://ninject.org/)。