你在GWT中用什么进行客户端到服务器端的通信?

7

GWT RPC是专有的,但看起来很稳定,由Google支持并在我看到的每本书和教程中都有提到。它真的是GWT客户端/服务器通信的选择吗?您使用它吗?如果不使用它,请说明原因并介绍您选择的方案。我假设我有通用的服务器应用程序代码,可以适用于RPC、EJB、Web服务/SOAP、REST等。

额外问题:GWT RPC是否存在任何安全问题,我需要了解吗?


2
GWT-RPC 代码不是专有的 - 它是开源的,如果您想要,您可以检查甚至更改它的工作方式(仅限个人使用)。 - Chii
1
任何不受正式标准机构(例如W3C、JCP、ECMA)控制的API或通信协议都是专有的。这适用于GWT-RPC。这与是否开源无关。 - Rogério
2个回答

10

我们主要使用三种通信方法:

  1. GWT-RPC - 这是我们首选的主要通信机制,也是我们尽可能使用的方式。这是"GWT方式"的做法,并且非常有效。
  2. XMLHttpRequest和RequestBuilder - 通常用于与非GWT后端交互,我们主要使用它来在运行时拉取我们需要的静态网页内容(例如服务器端包含)。当我们需要与CMS集成时它非常有用。我们将我们的RequestBuilder代码包装在一个自定义的"Panel"中(以内容URI作为构造函数参数,然后用URI的内容填充Panel)。
  3. FormPanel表单提交 - 这也需要与非GWT后端(自定义servlet)进行交互,目前我们使用它来进行跨站点通信。我们并不真正地进行"跨站点"通信,但我们有时需要在非SSL页面上通过SSL发送数据,而这是迄今为止我们能够做到的唯一方式(通过一些技巧)。

-1

问题在于您使用的是网页浏览器,因此任何非 HTTP 协议基本上不能保证正常工作(可能无法通过代理)。

您可以将 GWT-RPC 的内容隔离到单个可替换的类中,并尽快剥离它。

个人建议仅通过传输包含所需信息编码的对象集合来实现,这样 RPC 代码就非常少了,因为您的所有 RPC 代码都是“Collection commands=getCollection()”,但还有许多其他可能性。

或者只需按照 GWT-RPC 的预期使用它,我认为它不会消失。


1
GWT-RPC只是一个通过常规HTTP请求和响应进行通信的纯文本协议,因此不存在代理或其他任何问题。而且它运行非常良好。 - Rogério
1
我猜听起来好像是我这么说了,但那不是我的意思。那是两段话,第一段是“非HTTP协议”将无法正常工作。 第二,GWT-RPC可以提取到单个类中并随时替换,以便您稍后隔离或替换它。 两者没有任何关系。 - Bill K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接