我正在使用部署到 GAE 的 GWTP (Model-View-Presenter) 开发 GWT 应用程序。持久性将使用 Google Cloud SQL 完成。
我不确定使用什么将数据发送到数据库(持久性)和请求数据:GWT RequestFactory 或 GWTP Actions。它们是等价的吗?在这种情况下,每个人都有什么好处?
谢谢
我正在使用部署到 GAE 的 GWTP (Model-View-Presenter) 开发 GWT 应用程序。持久性将使用 Google Cloud SQL 完成。
我不确定使用什么将数据发送到数据库(持久性)和请求数据:GWT RequestFactory 或 GWTP Actions。它们是等价的吗?在这种情况下,每个人都有什么好处?
谢谢
我不会像现在这样使用 Request 工厂。即使对于 CRUD,它对我们来说也比 GWTP Actions 复杂得多。
RF 是一个伟大而强大的工具,但它有点过度设计,处理复杂数据可能真的很困难,因为你最终会遇到所有“冻结”状态问题。真正的问题出现在使用具有嵌套结构的编辑器时。您将无法保存第二级代理,甚至更多第三级。使用具有嵌套结构的编辑器使用 SimpleBeanEditorDriver 会容易得多,因为您不必为每一级嵌套对象处理令人讨厌的冻结状态。
对于具有简单 CRUD 支持的简单对象图,RF 是完美的,但是一旦您进入更复杂的结构,请振作起来,处理起来并不容易。一旦您成为 RF 专家,它就会成为一个非常强大的工具,但它仍然需要比 GWTP Actions 更多的工作来完成同样的事情。
对于使用 RF 的服务器端安全性,我使用了 AoP。另一方面,您可以使用操作处理程序,但即使使用操作处理程序,在某些情况下服务调用上的 AoP 更合适。
对于客户端批处理和缓存......这是用 RF 很难实现的。文档不清楚,处理缓存中的冻结状态是一场噩梦。有了 GWTP-Action,您已经可以使用一个简单的缓存实现。
对于面向数据的应用程序 (CRUD),您绝对应该使用 RF,因为它就是为此目的而设计的。现在,如果您的应用程序更加面向操作并且这些操作不涉及太多数据,那么最好使用命令模式。但是没有什么能阻止你在你的应用程序中同时使用这两者。
仅限请求工厂。
你需要的一切都在那里。如果您只想发送一条基本消息,您只需使用您想要的任何参数调用一个方法。
Actions 的问题在于它们比 RF 语义更冗长......
RF 唯一没有的就是使用 ClientHandlers 的能力......