【问题标题】:Is the command pattern compatible with RESTful web services?命令模式是否与 RESTful Web 服务兼容?
【发布时间】:2011-12-31 09:45:27
【问题描述】:

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

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

但是命令模式甚至与 Rest Web 服务兼容吗?这些 Rest URL 会是什么样子?如何支持命令批处理和撤消?

【问题讨论】:

    标签: web-services gwt rest servlets command


    【解决方案1】:

    命令模式是/曾经是推荐的模式,它比使用 RemoteService 和 RemoteServiceServlet 构建 RPC 接口向前迈出了一大步,这几乎是您提到的 Google I/O 演示时可用的所有内容。

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

    一种较新的方法是使用 RequestFactory 并将您的代码映射到您的服务上。这确实支持批处理但不支持撤消。实现的工作量并不大,但确实有其特殊性。一个很好的例子可以在here找到。

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

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

    个人而言,我可能会使用 GWTs 基础设施和 RequestFactory 来进行客户端到服务器的通信,并利用批处理和优化协议以及跨站点脚本保护,并为任何需要使用它编写单独的 REST 接口。

    【讨论】:

      【解决方案2】:

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

      您必须以某种方式将多个 rest url 和有效负载编码为单个 url 和有效负载!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多