Web services playframework中CRUD的Web服务

Web services playframework中CRUD的Web服务,web-services,scala,playframework-2.0,Web Services,Scala,Playframework 2.0,我和一些朋友打算用playframework和移动应用程序(android和iphone)开发一个网站。因此,我们需要为移动应用程序(CRUD)制作一些Web服务。因此,我们考虑在playframework应用程序中使用此web服务,而不是浪费时间,使用anorm(编写所有sql请求)创建CRUD 我是来征求你的意见的。这是一件好事吗?这里最好的建议方法是什么 多谢各位 PS:web服务是通过我们的数据库中的Netbeans自动生成的。我反对这种方法的原因有很多 一般的设计规则是不向用户公开内部

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

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

多谢各位


PS:web服务是通过我们的数据库中的Netbeans自动生成的。

我反对这种方法的原因有很多

一般的设计规则是不向用户公开内部数据模型。这个规则有很多种,其中分层架构可能是最为人所知的一种

具体而言,将出现以下问题:

  • 调优性能:这很难实现,因为您对生成的web服务没有或没有太多控制权。当您的应用程序真正占用您的资源时,您将受到此限制
  • 访问服务:我不知道是生成RESTfulWeb服务还是生成WS-*服务。后者会让你在通过iphone访问它们时遇到麻烦
  • 设计Play与同步web服务:与性能相关的另一个问题是,生成的服务可能是同步的、阻塞的,这与Play框架采用的非阻塞方法不太匹配
  • 抽象级别:因为您的数据库是基于集合的,但您的业务模型可能不是,所以您在开发一个合适的客户机、调整性能、进行适当的验证、安全性等方面会遇到问题
  • 身份验证、授权和记帐:很难做到,因为数据库只知道数据库系统用户
  • 更改:如果更改数据库模型会怎么样?生成的服务会继续工作吗?如果只添加一列,您是否有“采用它们”事件
  • 其中一些原因确实有重叠之处,但我认为总体问题应该是清楚的

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


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

    我反对这种方法的原因有很多

    一般的设计规则是不向用户公开内部数据模型。这个规则有很多种,其中分层架构可能是最为人所知的一种

    具体而言,将出现以下问题:

  • 调优性能:这很难实现,因为您对生成的web服务没有或没有太多控制权。当您的应用程序真正占用您的资源时,您将受到此限制
  • 访问服务:我不知道是生成RESTfulWeb服务还是生成WS-*服务。后者会让你在通过iphone访问它们时遇到麻烦
  • 设计Play与同步web服务:与性能相关的另一个问题是,生成的服务可能是同步的、阻塞的,这与Play框架采用的非阻塞方法不太匹配
  • 抽象级别:因为您的数据库是基于集合的,但您的业务模型可能不是,所以您在开发一个合适的客户机、调整性能、进行适当的验证、安全性等方面会遇到问题
  • 身份验证、授权和记帐:很难做到,因为数据库只知道数据库系统用户
  • 更改:如果更改数据库模型会怎么样?生成的服务会继续工作吗?如果只添加一列,您是否有“采用它们”事件
  • 其中一些原因确实有重叠之处,但我认为总体问题应该是清楚的

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


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

    谢谢您的回答。因此,主要的问题是,这种方法可能会导致性能不足和非常耗时的维护。我也可以猜测,web服务方法在开发过程中更难使用,因为您需要对从服务中获得的值进行转换。这为我澄清了一些事情。谢谢你的回答。因此,主要的问题是,这种方法可能会导致性能不足和非常耗时的维护。我也可以猜测,web服务方法在开发过程中更难使用,因为您需要对从服务中获得的值进行转换。这为我澄清了一些事情。