游戏框架中的CRUD Web服务

时间:2012-10-08 10:19:59

标签: web-services scala playframework-2.0

我和一些朋友将开发一个带有playframework和移动应用程序(android和iphone)的网站。所以我们需要为移动应用程序(CRUD)制作一些web服务。因此,我们考虑在playframework应用程序中使用此Web服务,而不是浪费时间并使用anorm创建CRUD(编写所有sql请求)。

好吧,我在这里征求你的意见。这是一件好事吗?这里最好的建议方法是什么?

谢谢。

PS:使用我们数据库中的Netbeans自动生成Web服务。

1 个答案:

答案 0 :(得分:5)

我有多种理由反对这种方法。

一般设计规则不是将您的内部数据模型暴露给用户。这个规则有很多种,其中分层体系结构可能是最知名的。

详细说明会出现以下问题:

  1. 调整性能:这很难实现,因为您对生成的Web服务没有或没有太多控制权。当您的申请真正受到您的影响时,您将受到此限制
  2. 访问服务:我不知道您是生成RESTful Web服务还是WS- *服务。后者会在通过iphone访问时遇到麻烦。
  3. 设计游戏与同步网络服务:同样与性能相关的问题是生成的服务可能是同步的,阻塞的,这与播放框架正在采用的非阻塞方法不相符。
  4. 抽象级别:由于您的数据库基于集合,但您的业务模型可能不是,因此您将面临开发体面客户端,调整性能,进行适当验证,安全性等方面的问题。
  5. 身份验证,授权和记帐:很难做到因为数据库只知道数据库系统用户
  6. 更改:如果更改数据库模型怎么办?生成的服务是否会继续有效?如果你只是添加一个列,你是否已经采用了它们?
  7. ...
  8. 其中一些原因确实重叠,但我认为一般问题应该是明确的。

    我会推荐以下内容,而不是这种方法。为您的应用程序开发RESTfull端点,这并不难。这是客户应该开发的外部合同。例如,play-mini非常需要基于Unfiltered的API来执行此操作。在此过程中,请关注应用程序真正需要的操作。在考虑生产就绪软件时,CRUD通常是一个糟糕的模型。

    如何访问数据库是您必须做出的另一个决定,但可能并不重要,因为它不是您的外部合同,因此您可以在需要时更改它。