命令模式是否与RESTful Web服务兼容?

时间:2011-11-17 14:25:20

标签: web-services gwt rest servlets command

Google recommends在构建复杂的GWT应用程序时使用命令模式。这个想法似乎有一些优点,并且已经开发出各种框架来帮助。但是,我发现的大多数示例都使用GWT-RPC进行客户端/服务器通信。

我们正在考虑为我们的Java后端开发RESTful Web服务 - 并将其用于客户端/服务器通信(可能使用类似Resty的框架)。

但是命令模式是否与Rest Web服务兼容?那些Rest URL会是什么样的?如何支持命令批处理和撤销?

2 个答案:

答案 0 :(得分:4)

命令模式是推荐的模式,并且是使用RemoteService和RemoteServiceServlet构建RPC接口向前迈出的一大步,这几乎就是您所引用的Google I / O演示时可用的全部内容。

GWT-RPC方法非常好并且运行良好并提供批处理和撤消机制。我不得不说我从未在我的任何处理程序上实现过单个undo()函数,尽管我确实使用了批处理。

更新的方法是使用RequestFactory并将代码映射到您的服务上。这确实支持批处理但不支持撤消。实施这项工作并不是很多,但确实有其独特之处。可以找到一个很好的例子here

如果你需要一个REST接口,那么在你的GWT中使用它来节省开发两个接口似乎是一个明智的想法。但正如@Riley Lark所说,如果需要,你必须编写自己的批处理(和undo())。

我的感觉是,批处理和撤消都不适合REST方法,但这只是我的观点。来自类似问题的更多信息here

Perosnally我可能会利用GWTs基础架构和RequestFactory来做客户端到服务器的通信,并利用批处理和光学协议以及跨站点脚本保护,并编写一个单独的REST接口,以满足任何使用它的需求。 / p>

答案 1 :(得分:2)

如果您不使用支持它的软件包,则必须自己实施批处理。在我们公司,我们决定使用直接的REST接口 - 在单个API上编写我们自己的批处理的费用低于使RequestFactory API 成为公共API的费用。

您必须以某种方式将多个休息网址和有效负载编码为单个网址和有效负载!