0

我在存储库中有对象。客户端请求对象中的管理类代表各种模块异步加载。这些模块可能都同时请求一个特定的对象(同一个对象)。是否有一种模式来设计这个,这样管理类不会为每个模块请求提交请求?

我要做的是让管理类在第一次尝试访问数据时向 Web 服务发出一个请求,然后在数据到达时满足所有后续请求。

编辑

这些模块不知道彼此或彼此的请求。

4

1 回答 1

0

我过去有几种方法可以做到这一点。但没有什么是“自动化的”。

第一的:

每个异步回调发出对下一个对象的调用(如果需要)并以这种方式级联。如果调用失败,它会在该点停止级联,并且只显示一个错误。这个和下一个的缺点是电话的喋喋不休。

第二:

进行所有异步调用,并使用预期返回的项目设置计数器。每个处理程序都会锁定并更新计数器。当 counter==expectedCount 则返回所有项目。列表框显示返回的项目集合。这样做的缺点是,您在不知道 a) 是否需要和 b) 是否有任何故障应该停止进程(以及调用)的情况下进行所有调用。它也很健谈,错误意味着进行了不必要的呼叫。

第三:

只有在服务器上明确定义了规则时,最愚蠢的过程才有效。您进行异步调用,服务进行级联。仅当所有后续查询都返回第一个查询的子项时,这才最有效。然后可以将结果作为单个对象返回。这绝对不是闲聊。这样做的缺点是返回对象的大小。

于 2012-07-24T19:44:51.033 回答