SZENARIO:
我读过Martin Fowler的书P of EAA,偶然发现了名为Identity Map的模式。我曾考虑在ASP.NET MVC应用程序中使用此模式。
问题:
据我所知,ASP.NET MVC请求生命周期总是在处理请求后杀死所有对象,这意味着我的域层/映射层(包含我的身份映射)也将被清除。如何在ASP.NET MVC等无状态环境中使用此模式(见下文)?在无国籍环境中有意义吗?我可以使身份映射静态并引入会话ID以重新获得我已经加载的对象吗?
身份地图:
确保每个对象只通过保持加载一次 地图中的每个加载对象。在使用地图时查找对象 指他们。 Martin Fowler
答案 0 :(得分:1)
标识映射用于在许多面向对象的映射器中实现第一级缓存。如果您的应用程序堆栈涉及Entity Framework或nHibernate(或另一个orm),那么您很可能已经拥有了一个身份映射。但这是你可能已经知道的。
身份地图是否可以是静态的问题没有明确的答案,我可以想象它可以工作的情况但是缺点是严重的:
实现所有这些问题 free 的身份地图可能不必要。将地图的生命周期限制为单个请求更安全,更便宜。请注意,它仍然可以正常工作 - 如果请求涉及多次读取,则身份映射在适用时提供数据而不是数据库。