【问题标题】:Flex/BlazeDS: Does multiple simultaneous BlazeDS requests cause problems?Flex/BlazeDS:多个同时的 BlazeDS 请求是否会导致问题?
【发布时间】:2012-09-11 01:50:47
【问题描述】:

我有一个 Flex Web 应用程序,它使用 BlazeDS 与服务器进行单通道端点(非安全)通信。

一切运行良好,我几乎在任何地方都使用 BlazeDS 向服务器和数据库发送和检索数据。现在我正在编写一些新代码来从服务器检索数据,但是服务器必须首先处理这些数据,这需要一些时间(比如 5 到 30 分钟,具体取决于请求)。

到目前为止,我的设计模式一直是向用户显示一个忙碌的光标并禁用主应用程序(Flex 默认情况下在禁用时会模糊应用程序)。这通常在通信完成时持续一两秒。但是,现在通信需要很长时间才能完成,我希望能够让用户继续使用该应用程序,即使来自服务器的进程尚未返回。

所以我想做的不是禁用主应用程序,以便用户可以在他/她等待数据返回时与之交互。我担心的问题是,如果用户在这段时间内使用应用程序向服务器发送另一个进程(例如,在第一个进程返回之前)——这会导致问题吗?也就是说,BlazeDS 是否足够聪明,可以知道通道正忙,因此会自动将请求排队?例如,BlazeDS 是否会等到第一个请求返回后再发送第二个或第三个等?

或者我是否必须以某种方式手动控制此通信以确保它以串行方式发生?如果是这样,是否有任何设计模式可以处理这个问题?

或者,BlazeDS 能否在第一个请求返回之前发送并返回第二个请求?

非常感谢任何建议。我正在寻找避免用户盯着不可用的应用程序 5 到 30 分钟等待数据返回的方法。繁忙的光标很好,因为它显示数据尚未返回,但禁用的主应用程序尤其是(无论是否模糊)是一个问题。

更新:

这里我说的是同时调用不同的方法,而不是同一个方法。所以如果我有两个方法,我想调用第一个方法,当它等待返回时,调用第二个或第三个方法,在第一个方法返回之前(最终)安全返回。 BlazeDS 支持吗?

【问题讨论】:

    标签: actionscript-3 apache-flex blazeds


    【解决方案1】:

    据我所知,blazeDS 中没有这样的排队系统。但是你可以配置并发变量:

    指示如何处理对同一个调用的多个调用的值 服务。默认值为多个。以下值为 允许:

    多个 - 现有请求不被取消,开发者负责通过以下方式保证返回数据的一致性 仔细管理事件流。这是默认设置。

    single - 该方法一次只允许发出一个请求;在请求未完成时提出的其他请求是 客户端立即出现故障,不会发送到服务器。

    last - 发出请求会导致客户端忽略任何当前未完成请求的结果或错误。只有结果或错误 对于最近的请求将被发送到客户端。这可能 简化客户端应用程序中的事件处理,但应注意 仅当请求的结果或错误可能是时才使用此模式 安全地忽略。

    所以使用“single”可以防止用户多次调用同一个方法

    另一个解决方案,如果您想对发送到服务器的消息进行更具体的控制,请使用command pattern。您无需调用许多方法,而是仅调用一种方法并通过网络发送命令对象。您将有更多工作要做,但如果您有一些可以并行完成的操作,而其他的则不能,这是一个很好的解决方案

    【讨论】:

    • 感谢 cporte,我应该在我的问题中澄清我问的是同时调用不同方法的问题。所以如果我有两个方法(方法1和方法2),如果我没看错,BlazeDS真的允许我调用方法1,那么在方法1返回之前,我可以调用方法2并让它返回,那么一段时间后返回方法 1?
    • 是的,您可以通过不同的方法同时发送多个请求,或者一个接一个地发送,而无需等待第一个答复。另一个精度:为了控制请求流,如果你只有几个调用,你可以使用一些事件。整个命令模式的东西只值得许多可调用的方法和对流程的严格控制
    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多