asp.net – 防止用户在同一行上工作
我在工作中有一个类似于机票工作系统的Web应用程序.一些用户输入新问题.其他工作人员选择和解决问题.所有数据都保存在MS SQL Server 2005中.
用于解决问题的用户进入一个可以查看未解决问题的页面.因为最多可以有二十个人可以在同一时间查看这个页面,所以我必须解决的一个潜在问题是,如果有人选择了其他人在他们的页面加载之后选择的问题,会发生什么. 为了解决这个问题,我做了两件事情.首先,显示要选择的问题的gridview使用AJAX定时器每秒更新一次.一旦选择了一个问题,它最多会消失一秒钟.如果他们在第二秒内选择一个,他们会收到一条消息,要求他们选择另一个. 问题是,AJAX的一部分是发送太多的更新(这是我假设的),它影响页面和数据库的性能.此外,更新不是每秒钟执行.我发现定时器在工作时触发存储过程不可靠. 必须有一个更好的方法,但我似乎找不到一个.有没有人有这样的情况的经验或有建议让多个用户选择相同的记录来维护?我真的不想完全禁用AJAX部分,因为我觉得单独的消息会使应用程序感到失望. 谢谢, 解决方法
有两件事情可以帮助您减轻问题.
首先,无论您的ajax更新时间段如何,都需要进行案例选择的通知.即使每秒检查也不意味着两个人不能在同一时间点击相同的情况.在这种情况下,其中一个用户需要通知他们的选择是无效的,即使它在选择时看起来是有效的.该通知不需要详细说明;保持光线,有帮助的音调即使在失望的情况下也可以提高用户的感知力.如果您确定已经选择了该记录的用户,那么这不仅可以帮助您的用户日后进行协调,还可以将您的程序的注意力转移到多汁情况下的用户. (事实上??,管理层可能希望给您的用户偶尔发生冲突,因为它会激励他们更快地选择案例) 其次,如何显示您的案例的小小调整可以减少选择冲突.添加随机元素以显示顺序和/或过滤每个其他显示的情况将有助于您的用户自然选择不同的情况.人类模式识别和任务选择并不是真正的随机性,所以对演示文稿的微小变化可以等同于选择行为的大变化碰撞机会减少会使您的碰撞通知变得很少(因此您的用户不那么沮丧).如果您的用户可以分为分类,可以帮助确定有用的案例排序/过滤,这会更好. 好的,随着时间的推移,第三件事可以帮助你,如果你保留碰撞发生的日志(有关涉及碰撞的有用的元数据以及选择时间).拥有坚实的碰撞数据,您可以找到什么有效和什么不.随着时间的推移,您可以将您的应用程序磨合到您的实际用例中,并尽早识别潜在问题.没有什么可以放心您的用户,而不是处于问题之上(并且能够解释您的解决方案),甚至在他们甚至知道它存在之前. 使用这些缓解模式,您可能会发现您可以安全地减少您的ajax查询时间,而不会影响用户体验.使用有用的日志记录功能,您可以保证您所进行的任何调整实际上都是正常工作的(或者不是,甚至可能更有用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 我应该在LogOff方法中使用Session.Abandon(
- asp.net-mvc – 使用PreCompiled网站运行自定义VirtualPath
- asp.net – 如何在我的代码中使用接口使其更加scalabale?
- asp.net – 如何处理@RenderBody()?
- asp.net-mvc – 在哪里可以找到mvc 2的windsor控制器工厂?
- asp.net-mvc – 如何渲染部分视图到字符串
- .net – 类库项目中特定于语言的资源文件的问题
- 存储ASP.NET会话状态时AppFabric Cache的新缓存参数
- asp.net – 如何在razor viewengine中实现foreach委托?
- ASP.NET ReportViewer在本地模式下非常慢
- asp.net-mvc – 在同一个流连接上返回多个结果以
- asp.net – 您有任何免费的.Net托管代码将DocX转
- asp.net-mvc – 如何在SAAS解决方案(Windows Azu
- ASP.NET Web应用程序体系结构/模式
- asp.net-core – db ASP.NET Core中的临时保存密
- asp.net – 无法加载文件或程序集“Microsoft.We
- asp.net – 未知的服务器标签’ajaxToolkit:Cal
- asp.net – 运行时MVC更新FormsAuthenticationTi
- asp.net-mvc – 检查Viewbag属性是否为空,并在视
- asp.net-mvc – 从Html.RouteLink生成绝对URL