Android 应用程序引擎-RequestFactory vs servlet vs其他方法

Android 应用程序引擎-RequestFactory vs servlet vs其他方法,android,google-app-engine,servlets,requestfactory,Android,Google App Engine,Servlets,Requestfactory,我们的团队正在使用App Engine开发Android应用程序后端。对于客户机-服务器通信的实现,我们有一些不同的意见。一方面,应用引擎建议使用RequestFactory方法,这(正如谷歌所说) 为自动批次和缓存提供了坚实的基础。 未来的请求 和重量轻的 但我们发现这种方法有点“笨拙”。另一方面,我们可以使用我们非常熟悉的普通servlet方法,并且感觉更舒服。我们当然希望更轻、更快和可伸缩通信,但RequestFactory真正提供这些通信的比例是多少?我们还可以从这两种方法中获得和失去

我们的团队正在使用App Engine开发Android应用程序后端。对于客户机-服务器通信的实现,我们有一些不同的意见。一方面,应用引擎建议使用RequestFactory方法,这(正如谷歌所说)

<代码>为自动批次和缓存提供了坚实的基础。 未来的请求

重量轻的

但我们发现这种方法有点“笨拙”。另一方面,我们可以使用我们非常熟悉的普通servlet方法,并且感觉更舒服。我们当然希望更轻更快可伸缩通信,但RequestFactory真正提供这些通信的比例是多少?我们还可以从这两种方法中获得和失去什么

[更多信息,我们阅读了GWT-RPC(RequestFactory的旧版本)和RestyGWT等选项。但我们对这些方法知之甚少,也不确定它们是否适合我们的情况。]

我在这里发现一些类似的问题没有得到回答。因此,我想,这对许多人来说可能是一次有益的讨论。

一些注意事项:

  • RequestFactory不是AppEngine的一部分(请参阅),而是由最新的Android Eclipse插件引入的附加组件。最初,RequestFactory是为GWT创建的

  • RequestFactory的优势在于它可以无缝地与GWT和Android协同工作

  • 缺点是它不是跨平台的,即不适用于iPhone等

  • 目前尚不清楚如何使用该工厂。如果您的应用程序很大且不断发展,那么您一定会有两个或更多版本的RPC API服务于客户端。GWT客户端可以很容易地强制使用最新的API(=页面重新加载),Android则不然。好的,没有两个RequestFactory端点的选项。使用REST,您可以简单地为不同的API版本创建多个URL

  • 混合公共/私有API。由于没有多个RequestFactory端点,因此无法轻松将它们分为公共(不需要身份验证)和私有/安全(=需要身份验证)。使用REST(和GWT-RPC),您只需拥有两个servlet(private和public)并在web.xml中设置安全约束(或者拥有自己的servlet过滤器)

  • RequestFactory不支持
    java.util.Map
    。这严重限制了您拥有具有动态属性的实体的能力-有一些解决方法,但它们是不必要的乱七八糟(就像有两个列表,一个用于键,另一个用于值)

  • 解决方案:这是我在项目中使用的解决方案:

  • 创建一个返回POJO域对象的服务层

  • 创建调用服务层的RPC层。可以有多个RPC技术调用同一服务层。我通常有GWT-RPC和REST

  • 仅使用POJO域对象有时是不可能的(也是由于JPA/JDO),因此迫使您创建DTO。DTO很难维护,如果可能的话,我会尽量避免。通过一些变通方法,您可以在大多数情况下使用域对象:在AppEngine上,您可以通过使用Objectify而不是低级/JPA/JDO获得很多帮助。信息技术剩下的话,我建议你在需要的地方使用杰克逊


  • 感谢您提供了如此全面和翔实的答案,我想我们将采用您的一些解决方案。