首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net多部分视图+ ajax应用的“状态”管理

asp.net多部分视图+ ajax应用的“状态”管理
EN

Stack Overflow用户
提问于 2013-05-03 03:29:22
回答 2查看 711关注 0票数 3

我正在尝试将我的asp.net mvc4应用程序转换为无状态应用程序,该应用程序使用了相当多的SessionState。我知道我可以将此信息存储在数据库中,并打算这样做。

不过,我的问题是关于我的特定架构。到目前为止,我一直在做的是将viewModel的整个状态(许多相互关联的EF列表集合和“记录”对象)存储在会话中,它工作得很好。除非会话随机死亡。

因此,我需要将这些数据从会话中提取出来,并放入DB中,在那里我可以在需要时重新构建数据。我担心的是,如果我将信息存储在数据库中,屏幕上的每个操作都可能影响3-5个不同的面板,每个面板都有自己的状态更新,这是每次交互至少10次到数据库的往返!

我可以使用哪些策略来使这个想法更具可扩展性?

额外信息

这里讨论的视图是一种POS购物车系统。有用于选择事件、选择/向购物车添加项目、编辑购物车项目、选择联系人、编辑联系人、显示购物车项目、显示购物车“小计”的面板,最后还有一个带有结帐按钮的面板。

选择新事件将更改可用项的列表。选择要添加到购物车的项目将更改购物车项目列表、小计以及结帐面板。与编辑购物车项目相同。

主要关注的是如何从丢失的会话中恢复,因为我发现内置的asp.net会话代码太不可靠了。我的测试人员遇到会话超时的问题,然后我的应用程序没有任何类型的恢复进程。

我同意我不会在匆忙中选择用词的stateless...wrong。我只是试图将这种状态转换为一种在会话失败后可以依赖的形式。我现在的主要想法是继续使用会话作为viewModel数据的本地缓存,但是有一个后备操作,如果会话丢失,它可以从DB重建viewModel。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-18 23:12:40

我决定采用一种混合方法。我仍然在使用会话,但我正在构建一个数据库“恢复”选项,以便如果会话部分丢失,数据库将能够提供无缝重建会话所需的值。

到目前为止,似乎运行得很好。

票数 0
EN

Stack Overflow用户

发布于 2013-05-03 03:35:30

您不一定要使用数据库来存储(听起来像是)只需要在短期内持久化的数据。

如果对其他部分的这些更改只与当前“主视图”的上下文相关,那么我建议使用JSON发送请求、解析响应jQuery并更新其他视图。如果您还不具备jQuery AJAX和ASP.NET MVC的知识,那么可以很容易地找到这些教程:

http://www.codeproject.com/Articles/41828/JQuery-AJAX-with-ASP-NET-MVC

这样,你就不需要做一大堆往返了。如果需要将更改持久化到当前视图的上下文之外,则对数据库进行一次往返以执行更新,然后从AJAX调用的内存响应中简单地更新所有其他部分。

当内存中已经有了所需的所有信息时,您不需要多次从辅助存储中读取数据。只需读写一次即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16346209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档