在playframework中用于CRUD的Web服务

Mar*_*hal 0 web-services scala playframework-2.0

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

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

谢谢.

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

小智 5

我有很多理由反对这种方法.

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

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

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

其中一些原因确实重叠,但我认为一般问题应该是明确的.

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

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