通常,对于web application
,根据您的需要可以有多种选项来存储复杂的对象。我不认为有这样做的BEST方式,只有最合适的方式和每一个解决方案,将带着利弊
服务器端
会议 (我知道你说不能使用会话,但我只是想包括它):第一个选项浮现在脑海,适合大多数web应用程序阳离子。由于现代网络的发展更多的是STATELESS,很多人都希望不惜一切代价避免使用Session
。然而,里有一些特定的基础设施配置,以支持会议无国籍应用程序,例如distributed session
或sticky session
或者你可以在一个dedicated server
或database
保存会话。
- 的观光:简单易用,支持Web应用程序自然
- 缺点:需要配置很多东西与无状态应用
另一个专用服务器(工作之前有人问,我把它放在服务器端部分,即使它是另一台服务器,但对我来说,无论我们的控制是SERVER SIDE) :这里有几个选项供您选择,第一个选项可能是设置缓存服务器(Redis?)并使用密钥(类似于会话)检索/保存,或者您可以简单地编写应用程序以使用您自己的方法检索/保存逻辑。
- 的观光:可重用性,扩展性,适用于所有的
- 缺点应用不只是网络,有自己的范围:难以建立
数据库:不是很明显但数据库确实支持这种要求
米
- 的观光:可重用性,扩展性,适用于所有的应用程序而不只是网络
- 缺点:性能问题
其他内存选项(TempData的,ViewBag等):
- PROS:易于使用,良好的ASP支持。NET MVC
- 缺点:somtimes很难绕过多个视图
客户端
- 有这么多的选择在这里选择像使用隐藏字段,Cookie,的localStorage,sessionStorage的,等等,甚至一个简单的查询字符串,将工作
- 的观光:速度(因为你不需要客户端 - 服务器交通)
- 缺点:安全(你不能信任来自客户端的任何东西),不是太复杂的对象(重物),安全性(敏感数据)做的很好,等
建议的解决方案
我希望我正确地理解你的问题,但在我看来,你不应该存储复杂的对象,只需将复杂对象的ID存储在的地方您的选择,并进行查询每次需要这个对象。所以你的对象总是最新的,你不会浪费资源来存储复杂的对象。
希望它可以帮助你。
通过使用会话。 – CodeCaster
目前还不清楚为什么你的对象是由Web服务创建的,而不是仅仅在步骤2中使用模型绑定。你可以发布你的相关操作方法吗? – NightOwl888
为什么你不创建视图模型并使用会话来达到这个目的? –