我不太确定该问题应该如何用,所以如果我问错误的事情,请耐心等待。

我正在使用VB作为语言背后的代码编写ASP.NET应用程序。我有一个数据访问类,该类连接到数据库以运行查询(当然是参数化),另一个类以执行验证任务 - 我从ASPX页面访问此类。

我希望能够存储数据服务器端并等待用户根据数据的有效性从几个选项中进行选择。但是,除非我完全了解我的理解,否则在多个用户连接时,在服务器上拥有持久的数据对象会给问题吗?

我的最终目标是,一旦数据得到验证,最终用户就无法修改它。目前,我正在验证数据,但是在用户说好的时,我仍然必须从Web表单中检索它,这显然打开了可能偶然地(不太可能)或故意注入不良数据的可能性(也不太可能用于使用,但是我宁愿不抓住机会)。

所以我完全理解吗?如果是这样,有人可以将我指向提供一些有关将持久数据保留在服务器上的说明或提供指令的资源?

谢谢!


具体示例:

最近,我们雇用了检查员的小工具来插入标志检查员的数据,他们围绕着检查高速公路标志,以确保没有一个被泡泡糖咀嚼(通常是青少年市议会的成员)被Bubble-Gum Chewing弄乱或偷走。

如果小工具可以证明他的葡萄酒,那么他可能会被晋升来进行实际的标志检查。目前,他唯一的工作包括去这个Intranet站点,其中一个有关最新检查的输入信息。该地区,县,路线编号,道路部分,日期安装并检查了标志。

当然,在80年代后期,我们中的任何人都熟悉小工具的无能。因此,该网站与我们可以做到的小工具证明。地区/县/路线全部通过下拉列表填写,他只需要手动进入该部分的开始和结束以及日期。有时他会摸索鼠标,最终交换了本节的开始和结尾,doh!因此,文字变成红色以提醒他错误。不幸的是,他今天选择戴上抗红色太阳镜,将所有红色变成黑色。好吧,在尝试提交数据后,它向他显示了一条错误消息,告诉他他需要修复的地方以及什么。不幸的是,他用键盘指着键盘,而不是输入1.337,而是将13.37(英里)投入使用 - 道路只有10英里!好吧,现在弹出一条消息(一个模态div),并告诉他,这条路的真正里程是0-10,他的进入将结合三个路段。然后给他三个按钮可供选择。 CANCEL,这使他可以去修改他的数据,这将限制,该数据将将13.37转换为10,并覆盖,这将使他无论如何都可以输入该数据。

“ Yowza!”小工具大叫,单击取消以返回并解决他的错误。好吧,他正确输入的下一组数据,因此弹出了一条确认消息,向他展示了他将要进行的更改,并询问是否可以继续。好吧,不幸的是,检查员小工具撞倒了他的咖啡杯,将碎屑散落在他的桌子上。他匆匆清理了它,他单击了“确定”,但在他的Go-Gadget Electro-Magnet意外地在他的计算机上翻了几块,以从阿肯色州到Akrsanas,DOH,该县将县的形式更改为!

如果将数据存储在校园的服务器上,而传递的唯一信息是“确定”或“取消”,则可以避免。


当然我总是可以验证 再次 在“确定”之后,这似乎是一个骇人听闻的解决方法。

无论如何,我希望这能澄清!

有帮助吗?

解决方案

我认为您正在考虑使用网络服务器的缓存。在ASP.NET中,您可以使用Context.Cache将数据存储在服务器上。一旦一个用户缓存,服务器上的任何其他用户也可以访问它。

由于数据已在服务器上缓存,因此您每次调用DB上的更新查询时都需要清除缓存。然后,下次加载数据时,您可以再次将数据保存在缓存中。

在您的选择方法中,检查您的缓存[键]是否不是null。如果是这样,请在返回数据之前将数据加载到DB中,然后将其保存到缓存[键]。如果不是零,则只需从缓存而不是DB加载它即可。

您使用的密钥可以包含参数,因此您不必从缓存中过滤数据。...或者键可以是通用的,因此它存储了所有数据。然后,您可以在数据上执行LINQ查询以过滤您的参数

我希望这有帮助。

其他提示

我想你指的是 并发. 。查看链接以开始理解它,如果您要问的话。根据您的后端和特定情况,您可能需要进行更多的研究。同样,如果这是您要寻找的东西,您可能会特别感兴趣 悲观 并发。

http://en.wikipedia.org/wiki/concurrency_control


编辑: 阅读了您的示例后。...听起来您可能想做以下操作,祝您好运。

  1. “锁定”记录 使用某种悲观的并发模式 (在数据库上,由于数据实际所在)时,用户输入数据时。这就像使数据库记录仅阅读。

  2. 当用户命中确定时,您可能必须通过ASP.NET代码进行验证,如果传递验证,请更新DB并解锁数据库记录。

  3. 如果用户击中取消,请不要更新数据库记录,只需解锁即可。

  4. 如果用户想强制输入,则只需更新数据库并解锁数据库记录即可。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top