【问题标题】:Items/Records re-ordering?项目/记录重新排序?
【发布时间】:2013-08-20 10:30:14
【问题描述】:

假设在一个多用户应用程序上,同一个请求可能由多个用户同时发起,这些请求最终将是对某些服务器端操作的一些 ajax 调用,我们有一个由该操作执行的例程服务器上的操作/方法如下:

例行任务:它负责重新排序,假设项目没有相互连接,没有双向链表数据结构,但所有项目默认都有一个假定的排序,并由该顺序,当那些 ajax 调用启动添加项、删除项或更新项操作时,排序将不同,因为条目就像 FIFO。

目前我需要更新所有记录,orderNumber 列来跟踪所有更改,在更新操作中,因为项目在用户界面中是可移动的,并且用户具有拖放交互的功能,项目可以上升或向下原始排序列表并更改这些排序。

对于跟踪这些排序更改的最有效方法,您会提出什么建议,这种方法在服务器上的性能成本最低,并为用户保持可接受的用户交互?

开发平台为 ASP.NET MVC4,持久化使用 SQL Server

编辑:

在阅读了第一个答案后,我不得不提到一个事实,即问题不是从服务器为所有用户发布的实时或多播消息,也不是由一个用户发起的更改发布以广播到所有其他用户。 项目是用户特定的,有些用户可能有数百个项目,有些可能只有少数或更少

【问题讨论】:

    标签: c# javascript asp.net-mvc database performance


    【解决方案1】:

    我肯定会看SignalR(或任何等效技术,但由于您在 .net 堆栈中,感觉更自然)。

    在 SignalR 中,您可以创建集线器,跟踪连接到该集线器的客户端,甚至创建用户组。您可以从服务器端(通过获取集线器上下文)或从任何客户端向该集线器发送消息。

    如果您连接了 N 个用户,每次拖放操作都会导致屏幕中的元素重新排序改变了。收到此类“orderChanged”消息的用户可以向服务器发出 ajax 调用以获取最新消息。

    编辑:

    即使它不是多播,正如下面第一条评论中所阐明的那样,SignalR 也很适合。 在您的中心,您可以跟踪用户连接(复数,因为单个用户可以从不同的客户端登录)并根据更改单独发送消息。

    当主管更改用户的待办事项列表时,您可以调用受影响用户正在使用的客户端上的方法,因此他知道他的列表已更改。

    使用相同的概念,如果同一用户更改了自己的 ToDo 列表,您可以向其他客户端发送消息。

    SignalR真的很灵活,只要你看一下文档就会清楚。

    【讨论】:

    • 我喜欢你的直截了当的回答,但我认为我在定义问题时犯了一个错误,你认为这是一个多播更改,但项目是针对每个用户的,比如每个用户的待办事项列表,您是否会考虑,根据事实更新您的答案,我将不胜感激,谢谢
    猜你喜欢
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2021-10-11
    相关资源
    最近更新 更多