Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我应该在会话中存储视图模型还是域模型?_Asp.net Mvc_Session_Model View Controller_Asp.net Mvc Viewmodel_Domain Model - Fatal编程技术网

Asp.net mvc 我应该在会话中存储视图模型还是域模型?

Asp.net mvc 我应该在会话中存储视图模型还是域模型?,asp.net-mvc,session,model-view-controller,asp.net-mvc-viewmodel,domain-model,Asp.net Mvc,Session,Model View Controller,Asp.net Mvc Viewmodel,Domain Model,我对会话状态存储有点困惑。我有一个MVC应用程序,有更接近视图的视图模型,还有行为丰富的域模型。我们需要在应用程序中存储一些会话状态,我很难决定是在会话中存储视图模型还是域模型 我们继承了一个遗留应用程序,被迫扩展了一个ViewModelBase,它有很多缺点。因此,我在会话中保存视图模型时犹豫不决。另一方面,域模型中有行为,因此存储它们感觉不正确 有什么想法吗?我都不会说。首先,应尽可能避免使用会话。其次,在会话中存储对象可能会有很大的问题。除非您使用的是进程会话存储(您不应该使用),否则每隔

我对会话状态存储有点困惑。我有一个MVC应用程序,有更接近视图的视图模型,还有行为丰富的域模型。我们需要在应用程序中存储一些会话状态,我很难决定是在会话中存储视图模型还是域模型

我们继承了一个遗留应用程序,被迫扩展了一个ViewModelBase,它有很多缺点。因此,我在会话中保存视图模型时犹豫不决。另一方面,域模型中有行为,因此存储它们感觉不正确


有什么想法吗?

我都不会说。首先,应尽可能避免使用会话。其次,在会话中存储对象可能会有很大的问题。除非您使用的是进程会话存储(您不应该使用),否则每隔一次会话备份都需要序列化对象。对于简单的类来说,这还不算太糟糕,但是如果你处理的是层次结构和对象图,那么这将是一个荒谬的巨大痛苦


除了“我们需要存储一些会话状态”之外,您还没有给出任何关于您实际试图完成的任务的信息。谁或什么要求,为什么?也许,如果你问起你实际上想做什么,有人可以给你一个更好的解决方案,它根本不涉及会话,或者至少只涉及最少的会话。例如,不存储实体,您是否可以简单地存储id,并使用该id从数据库中提取实体?

您的域实体是否来自实体框架?不,不是。我们正在考虑使用可序列化对象存储在会话中。我们目前正在评估会话提供者。CouchBase就是其中之一,因为我们已经将其用于其他目的。我们是一个电子商务应用程序,我们需要能够跟踪用户在不同页面上的会话。这是不同的。这只是身份验证和授权,虽然它确实使用会话,但它不使用
Session
。我也在运行一个电子商务应用程序,
Session
中为我们提供的唯一东西就是促销代码(如果应用的话)。哦,还有客人结账的送货地址和账单地址。忘了吧。不过,会话的使用非常少。我们还跟踪一些与用户相关的信息。例如,如果用户对某个页面中的某个内容表示了兴趣并导航到另一个页面,我们希望将他表示感兴趣的内容存储到会话中,以便当我们在另一个页面上时,我们可以向他显示选项。是的,我们使用缓存来实现这一点,但我们正在考虑使用会话来实现这一点