代码之家  ›  专栏  ›  技术社区  ›  Jeffrey04 George

Web用户界面到一个宁静的界面,好主意?

  •  4
  • Jeffrey04 George  · 技术社区  · 15 年前

    我正在一个实验性的网站上工作(可通过Web浏览器访问),它将充当RESTful接口(子系统)的前端。网站将充当用户和RESTful接口之间的接口,因为它将为几乎所有数据库操作向RESTful接口发出HTTP请求。身份验证可能使用OpenID完成,数据库操作的授权将通过OAuth完成。

    出于好奇,这是一个可行的解决方案,还是我应该开发两个并行访问数据库的系统(即网站有自己的数据访问逻辑,而RESTful接口有另一个数据访问逻辑)?如果我坚持这样做(这只是一个实验项目,让我了解OpenID和OAuth在现实生活中的工作方式),那么它的优点/缺点是什么?此外,还会有更多的数据库查询和为每个事务生成的HTTP请求?

    6 回复  |  直到 7 年前
        1
  •  5
  •   Bryan Kyle    15 年前

    你的想法听起来很可行。我想说你会从这种方法中得到一些相当好的胜利。对于初学者,您将获得大量的代码重用,因为您可以将其他前端放在RESTful服务之上。此外,您将能够相对轻松地对这个体系结构进行单元测试。最后,您将能够让第三方开发人员访问您所使用的相同API(可能受到一些限制),这在吸引客户和开发人员加入您的平台方面将是一个巨大的胜利。

    在底层,根据后端的结构,可能会遇到粒度的标准问题。粒度太大,您最终将为很少的数据量建立大量连接。太少,在某些情况下你会得到比你需要的更多的数据。至于安全性,您应该能够锁定后端,这样请求只能在特定条件下进行:请求包含授权令牌、API密钥等。

        2
  •  2
  •   BenB    15 年前

    听起来不错,但我建议您只有在计划打开RESTfulAPI供其他用户界面使用,或者只是为了学习一些很酷的东西时才这样做。支持HTML XML和JSON接口。

    否则,使用一个伟大的MVC框架(ASP.NET MVC、Rails、Cakephp)。您将得到相同的基本结果,但您将被“强大地”输入到数据库中。

        3
  •  2
  •   ianmayo    14 年前

    使用现代的JavaScript库,您的方法非常简单。

    ExtJS现在一直支持Ajax,但现在可以通过一个REST接口来实现这一点。

    因此,您的extjs用户界面组件填充接收一个URL。它们通过一个get-to-the-url填充自己,并通过post-to-the-url存储更新。

    这对我目前正在做的一个项目非常有效。通过应用RESTful原则,前端和后端之间几乎有一个临床分离-这意味着取代其他的任务将是微不足道的。另外,API几乎不需要文档化,因为它是现有成熟标准的实现。

    祝你好运, 伊恩

        4
  •  2
  •   ACV    7 年前

    哇!2009年的问题!阅读答案很有趣。许多人似乎不同意Web服务方法和JS前端——它现在已经成为一种标准,称为单页应用程序。

        5
  •  1
  •   Alex Martelli    15 年前

    我认为你概述的一般方法是非常可行的——主要优点是灵活性,主要缺点是它不会保护没有线索的用户不受他们自己(咒语删除)的滥用。作为 用户可能会一无所知,这对于大众消费是不可行的…但是,这对真正的leet用户来说很好!-)

        6
  •  1
  •   dso    15 年前

    因此,为了澄清,您希望将Web UI调用到Web服务中,而Web服务又调用到数据库中?

    这正是我为最近的一个项目采取的方法,我认为这是一个错误,因为你最终创造了很多额外的工作。这就是为什么:

    当您对Web服务进行编码时,您将创建一个库来包装数据库调用,这是典型的。没问题。

    但是,当您编写Web UI时,您将最终创建 另一个 用于将调用包装到REST接口的库…因为否则,进行所有原始HTTP调用会很麻烦。

    因此,您基本上创建了两个数据访问库,一个用于包装数据库,另一个用于包装Web服务调用。这基本上是您所做工作量的两倍,因为对于资源上的每个操作,最终都将在两个库中实现。这会很快让人疲劳。

    更简单的选择是创建一个单独的库,像以前一样包装对数据库的访问,然后从Web UI和Web服务中使用该库。

    这是假设您的Web UI和Web服务位于同一个网络上,并且都可以直接访问后端数据库服务器(我就是这样)。在这个设置中,直接访问数据库比让用户界面访问Web服务更有效率。