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

依赖nhibernate的二级缓存与将对象推入asp.net会话

  •  3
  • Serguzest  · 技术社区  · 14 年前

    我有一些在同一会话中经常访问的大型实体。例如,在我的应用程序中,有一个报告页,由动态生成的图表图像组成。对于此页上的每个图表图像,客户端向相应的控制器发出请求,控制器使用一些实体生成图像。 我可以使用asp.net的会话字典来“缓存”那些实体,或者依赖nhibernate的二级缓存支持,例如使用缓存查询。

    你的意见是什么?

    顺便问一下,我将使用共享托管,nhibernate的二级缓存托管是否友好?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Sly    14 年前

    我认为你应该使用NHibernate的缓存。如果用户提出不同的请求来逐个获取每个实体,那么您可能应该使用不同的NHibernate ISession实现来获取它们(基于每个web请求的会话策略)。

    另外,当使用Nhibernate缓存时,您不会遇到并发问题的麻烦,它会为您处理这些问题。

        2
  •  0
  •   Andrew    12 年前

    注意在静态变量中缓存实体(从加载它的会话中),然后由另一个会话访问(例如,从您创建的缓存系统中提取)。

    实体实例绑定到会话member,因此不应跨会话边界混合和匹配实例。

    我之前已经解决了这个问题,创建了一个轻量级的类(它不支持NH会话)并缓存了这个基本类。

    或者,使用二级缓存,这不存在此问题。