2011-02-26 56 views
1

在我的应用程序中,我有一张地图,当用户在地图上执行任何操作时,会向服务器发送一个请求,要求它为新边界框提供地图,但现在的问题是如果用户说快速放大或持续平移地图,我们最终将向服务器发送很多请求,并最终将结果发送回客户端。在服务器上处理多个陈旧请求

现在我想在服务器端和客户端都更优雅地处理这个问题。我想过在客户端处理相同的方法,但我需要一种方法在服务器端优雅地执行相同的操作。我的意思是我不想最终处理陈旧的请求,我的客户不希望反应frm无论如何。有没有一种方法可以达到同样的效果。

我在.NET Framework中使用MVC体系结构。

在此先感谢。

PSAll这些疑问显然是AJAX查询

回答

1

多种方式来做到这一点:

第一种方式: 在服务器端,你收到来自客户端的新的边界窗口信息的请求,让服务器在开始处理之前,操作等待一小部分时间(以后可以微调持续时间)。如果在该等待时间内有来自同一客户端的新请求(对于相同的缩放操作),则让旧的请求被丢弃。当等待消失后没有新的请求到达时,服务器将当前请求解释为最后一个请求并处理这个请求。为了尽量减少客户端出现的延迟,服务器可以准备处理该请求所需的资源,这些资源不依赖于缩放参数的确切细节。

第二种方式(可与第一种方法一起使用): 如果服务器有能力,则使用多个线程来处理客户端请求。这样,您可以放心地丢弃陈旧的结果,并且仍然可以避免缩放出现在客户端上的任何延迟。

+0

有服务器处理请求是好的用户体验不应该受到影响..通过这种方法,如果我在服务器等待一秒钟左右,对用户的响应也将被延迟,用户wnt得到一个即时的反馈.. – Baz1nga 2011-02-26 10:59:34

+0

和线程是不是一种选择,因为我们认为线程管理是一个痛苦的屁股.. – Baz1nga 2011-02-26 11:00:19

+0

我不是指一秒钟左右的等待时间。它应该足以让服务器检测到操作已发出另一个请求。通常在你提到的情况下,这一次将是一秒钟的一小部分。从客户端发送到服务器的两个连续请求(显然,我说的是两个请求是在用户的连续缩放操作下进行的)情况下,你认为会花费多少时间? – Bhaskar 2011-02-26 11:38:48