代码之家  ›  专栏  ›  技术社区  ›  Rolfi

将对象共享给MVC WebApp的所有用户

  •  0
  • Rolfi  · 技术社区  · 16 年前

    我的Web应用程序在数据库中准备一到两分钟特定的只读对象列表,只有在IIS启动时才准备一次。除非管理员通过特定的url触发重新创建,否则这不会再发生任何更改。

    对象的界面如下所示:

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

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

    4 回复  |  直到 16 年前
        1
  •  0
  •   Mayo    16 年前

    这可能满足您的需要,也可能不满足您的需要,但Castle Windsor允许您指定组件(如数据存储库)将拥有多少实例。我个人在处理这个的时候有个错误( 生命线 而不是 生活方式 )这导致数据存储库在post之后持续存在,而我没有初始化它。

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

        2
  •  1
  •   leora Matt Lacey    16 年前

    你需要在这里使用一个依赖注入框架,这样你就可以实例化这个,并把它传递给你的所有控制器。这并不是用ASP.NET-MVC来实现的,但是你可以找到很多选择,比如城堡风车或者自动变速器。

        3
  •  0
  •   Mathias F    16 年前

    一个好地方就是藏匿处。可以在AppultIsStad()上加载缓存。

        4
  •  0
  •   LukLed    16 年前

    您可以将其存储在应用程序对象中,但应该将其注入到控制器中。您不应该直接引用应用程序对象,因为这会降低应用程序的可测试性。我用Ninject( http://ninject.org/ )为此目的。