是否存在管理(可能是多个)异步加载数据项请求的模式?

时间:2012-07-24 19:33:22

标签: design-patterns asynchronous silverlight-5.0

我在存储库中有对象。客户端中的管理类请求代表各种模块异步加载对象。模块可能同时请求特定对象(同一对象)。是否存在如何设计此模式以使管理类不提交每个模块请求的请求的模式?

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

修改

模块不了解彼此或彼此的请求。

1 个答案:

答案 0 :(得分:0)

我过去有过几种方法。但没有“自动化”。

首先:

每个异步回调都会发出对下一个对象的调用(如果需要),并以此方式进行级联。如果调用失败,它将在该点停止级联,并且只显示一个错误。这个和下一个的缺点是呼叫的不稳定。

第二:

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

第三

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

相关问题