Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 项目/记录重新订购?_C#_Javascript_Asp.net Mvc_Database_Performance - Fatal编程技术网

C# 项目/记录重新订购?

C# 项目/记录重新订购?,c#,javascript,asp.net-mvc,database,performance,C#,Javascript,Asp.net Mvc,Database,Performance,假设在多用户应用程序上,同一请求可能由多个用户同时发起,这些请求最终将是对某个服务器端操作的一些ajax调用,我们有一个由该操作/方法在服务器上执行的例程,如下所示: 常规任务:它负责进行重新排序,假设项目之间没有连接,没有双链表数据结构,但默认情况下,所有项目都有一个假定的顺序,并且在添加项目或删除项目时,按照该顺序向用户表示,或者更新项操作是由这些ajax调用启动的,因为条目类似于FIFO,所以顺序会有所不同 目前,我需要在更新操作中更新所有记录,orderNumber列以跟踪所有更改,因为

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

常规任务:它负责进行重新排序,假设项目之间没有连接,没有双链表数据结构,但默认情况下,所有项目都有一个假定的顺序,并且在添加项目或删除项目时,按照该顺序向用户表示,或者更新项操作是由这些ajax调用启动的,因为条目类似于FIFO,所以顺序会有所不同

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

您认为跟踪这些订购更改的最有效方法是什么?在这种方法中,服务器上的性能成本最低,并且为用户保持可接受的用户交互

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

编辑:

在阅读了第一个答案之后,我必须提到一个事实,即问题不是从服务器为所有用户发出的实时或多播消息,也不是由一个用户发起的更改向所有其他用户发出的。
项目是特定于用户的,有些用户可能有数百个项目,有些用户可能有少量或更少的项目(或任何等效技术,但由于您在.net堆栈中,因此感觉更自然)

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

如果连接了N个用户,则每次拖放操作都会导致对屏幕中的元素进行重新排序,这会导致执行重新排序的用户发送一条消息,以告知其他客户端顺序已更改。收到此类“orderChanged”消息的用户可以向服务器发出ajax调用以获取最新消息

编辑:

即使它不是一个多播,正如下面第一条评论中所阐明的,signer也是一个很好的选择。 在集线器中,您可以跟踪用户连接(复数,因为单个用户可以从不同的客户端登录),并根据更改的内容单独发送消息

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

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


信号是非常灵活的,当你查看文档时,你会很清楚。

我喜欢你的答案,但是我认为我在定义问题上犯了一个错误,你假设它是一个多播改变,但是条目是针对每个用户的,就像每个用户的一个任务列表,你会考虑,基于事实来更新你的答案,我会非常感激的,谢谢