Asp.net mvc 我可以在无状态环境中使用身份映射之类的模式吗

Asp.net mvc 我可以在无状态环境中使用身份映射之类的模式吗,asp.net-mvc,stateless,identity-map,Asp.net Mvc,Stateless,Identity Map,Szenario: 我读过Martin Fowler的书,无意中发现了一种叫做身份地图的模式。我考虑过在ASP.NETMVC应用程序中使用此模式 问题: 据我所知,ASP.NET MVC请求生命周期总是在处理请求后杀死所有对象,这意味着我的域层/映射层(包含我的身份映射)也将被清除。如何在ASP.NET MVC这样的无状态环境中使用此模式(见下文)?它在无状态环境中有意义吗?我是否可以将身份映射设置为静态,并引入会话id以恢复已加载的对象 身份映射: 通过保持 地图中加载的每个对象。在以下情况下

Szenario:

我读过Martin Fowler的书,无意中发现了一种叫做身份地图的模式。我考虑过在ASP.NETMVC应用程序中使用此模式

问题:

据我所知,ASP.NET MVC请求生命周期总是在处理请求后杀死所有对象,这意味着我的域层/映射层(包含我的身份映射)也将被清除。如何在ASP.NET MVC这样的无状态环境中使用此模式(见下文)?它在无状态环境中有意义吗?我是否可以将身份映射设置为静态,并引入会话id以恢复已加载的对象

身份映射:

通过保持 地图中加载的每个对象。在以下情况下使用贴图查找对象: 提到他们


标识映射用于在许多面向对象映射程序中实现一级缓存。如果您的应用程序堆栈涉及实体框架或nHibernate(或另一个orm),则很可能您已经在那里有了标识映射。但这可能你已经知道了

身份地图是否可以是静态的这个问题并没有明确的答案,我可以想象一种情况,它可以工作,但缺点是严重的:

  • 缓存将无法轻松查看任何外部更改
  • 如果不加以控制,内存消耗将会增加
  • 可能会出现并发问题
实施一个没有所有这些问题的身份图可能是不必要的困难。将映射的生存期限制为单个请求更安全、成本更低。请注意,它仍在执行其任务-如果请求涉及多次读取,则在适用的情况下,标识映射服务于数据而不是数据库。

。对于您的问题,可以进行有限的使用,但是对多个请求使用相同的上下文可能会给您带来陈旧的数据。