将mysql查询结果推送到客户端GWT

时间:2012-08-27 14:47:28

标签: java json gwt rpc requestfactory

我正在寻找一种将ResultSet转换为我可以通过GWT-RPC发送的表单的有效方法,GWT-RPC通常可以作为GWT服务器 - 客户端通信的一部分。 使用JSON与RequestFactory有什么优缺点? 如果我想按照上述方法使用它们,有人会关心解释它们吗?

可能很重要的是,我想要在客户端的大部分数据库中处理,而不仅仅是单个条目。我一次只谈论数百个条目,所以我基本上认为我需要一种有效传输数据的方法。

一次不请求一个条目会产生很大的开销吗?

赞赏类似的教程。

2 个答案:

答案 0 :(得分:3)

移动大块数据通常是一个非常糟糕的主意,并且对于客户端 - 服务器体系结构而言并不常见。所以我建议重新设计。

GWT-RPC是面向服务的。所有RPC框架都是。主要目的是序列化/反序列化方法调用。换句话说,正在通信的服务器和客户端是必须明确定义的消息。在GWT中,底层传输机制是JSON,在SOAP中(例如)它是XML,但机制是相同的。

RequestFactory更加以数据为中心。想象一下由一个带有URL / getCustomers的简单HTTP请求触发的servlet。 servlet只是访问数据库并返回结果。 RequestFactory非常类似,但提供额外的设施。例如,RequestFactory依赖于在服务器上创建实体对象Customer和在客户端上创建代理对象CustomerProxy。该框架处理这些对象之间的数据传输。更具体地说,RequestFactory可以更新单个属性(即'字段'),从而可以通过仅发送状态差异来提高效率。

一个重要的架构差异是GWT-RPC在更多功能级别上运行。 RequestFactory在数据级别运行。典型的实现可能是使用RequestFactory设置CRUD接口。使用GWT-RPC这样的设计会非常错误。

我建议您在做出决定之前更多地阅读这两个框架。但是,RequestFactory似乎是解决您问题的最佳方案。

如果你只有一个用例,那么实现你自己的servlet可能会做得很好。在GWT代码中使用RequestBuilder来从servlet请求数据。访问数据库,将ResultSet转换为JSON,在客户端将响应转换回JavaScriptObject,然后就完成了。这将为您节省设置RequestFactory以及所有实体,代理和定位器的工作。

答案 1 :(得分:1)

如果您以数据为中心应用程序,并且您应该在服务器端使用JPA,那么RequestFactory优先于JSON。 (例如Hibernate,Spring等)。更多内容取决于您传输的数据类型。

我想说一次转移所有数据可能不是一个正确的想法。因为序列化和反序列化需要很多时间。浏览器可能也会挂起(根据我的经验)。用户必须等到所有数据都加载完毕。

相反,您可以以块方式将数据传输到客户端,因此当用户编辑第一部分时,第二部分可以在后台加载。