首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对gwt-rpc调用进行分组?

如何对gwt-rpc调用进行分组?
EN

Stack Overflow用户
提问于 2008-10-25 18:12:58
回答 4查看 3.1K关注 0票数 7

使用DWR,可以将几个服务调用组合到一个HTTP请求中:

dwr batch feature

此功能对于减少ajax应用程序的延迟非常有用。有没有办法用GWT / GWT-RPC做类似的事情?

谢谢你的帮忙

EN

回答 4

Stack Overflow用户

发布于 2009-10-09 15:13:52

谷歌的Ray Ryan做了一个关于Best Practices For Architecting Your GWT App的演讲,他在演讲中谈到了使用命令模式。发送碰巧通过RPC的异步命令可能是您想要的。一旦你发送的是命令而不是RPC,就很容易批处理它们。

有关为您实现此模式的库,请参见gwt-dispatch。我刚刚开始使用它,所以我不知道它是否会自动批处理,但它都是开源的,具有许可许可,所以如果不是,你可以修复它。

票数 8
EN

Stack Overflow用户

发布于 2008-10-25 19:15:29

GWT没有为批处理多个任意RPC提供一步式解决方案。但是,请记住,GWT的自动序列化使得编写每个RPC方法的串行和批处理版本变得非常容易。例如,假设您已经定义了以下RPC:

代码语言:javascript
复制
FooResponse callFoo(FooRequest request);

自己编写同一个RPC的“批处理”版本很容易:

代码语言:javascript
复制
ArrayList<FooResponse> batchCallFoo(ArrayList<FooRequest> requests) {
  ArrayList<FooResponse> responses = new ArrayList<FooResponse>();
  for (FooRequest request : requests) {
    responses.add(callFoo(request));
  }
}
票数 1
EN

Stack Overflow用户

发布于 2008-12-30 11:49:37

这是一个很好的问题,但我不认为有一个简单的解决方案。

我相信您必须创建一个单独的方法,将您的方法组合在一起,以类似于DWR的方式实现批处理。

例如,如果你有:

代码语言:javascript
复制
public int add(int x, int y);
public int sub(int i, int j);

您将创建一个新方法来组合它们:

代码语言:javascript
复制
public Map<String, Integer> addAndSub(Map methodsAndArguments) {
    // Call add and sub methods with it's arguments
}

当然,您仍然需要在相同的回调方法中处理整个响应。

我意识到这可能不是最优雅的解决方案,但由于GWTs RPC的工作方式,我认为这是可行的。对于GWT,我认为通常应该尝试编写方法,这样批处理就不再是需要考虑的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/236793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档