了解 "Backend"
Understanding the "Backend"
后端代码到底是什么?是 只是 API吗?后台有业务逻辑吗?
例如,如果我有一个时间表应用程序并且用户输入他们当天的时间,那么将该信息添加到数据库的逻辑是否都在前端?而后端只是为了向数据库公开一个API到add/update的信息?对于这个简单的时间表应用程序,一般来说,前端和后端会是什么?
这是一个非常广泛的 question/topic,但我将尝试解释我对这些术语的看法以及如何决定将内容放在哪里:
一般来说,用户会看到“front-end”。为了使这成为可能,该代码必须在用户设备上“存储和执行”。我很确定这意味着(有经验的)用户将能够查看前端的代码并且可能能够理解它是如何工作的。 (我稍后会详细解释为什么这是相关的。)
另一边的“back-end”通常作为某人提供的“原样”服务提供,可通过一个或多个许多可用的通信协议及其接口通常以某种方式记录,即使它不是 public。现在最突出的例子是 REST APIs 和 Graphql APIs。
正如您已经提到的,集中式状态管理(例如存储数据)可能是其中的重要组成部分(但不是必须的)。
当“调用”back-end 时,某些代码会在某些服务器上执行,并且响应(如果有)是前端或用户了解的唯一新信息。
什么去哪里?
要决定代码的哪一部分放在哪里,需要考虑很多方面。没有灵丹妙药:我确信可以找到所有可能组合的示例。
- 单个 back-end 可以有许多不同的 front-end,这取决于用户偏好(例如基于浏览器、移动应用程序、命令行界面...)。
- 它们可以有不同的发布周期和更新机制,因此对 back-end 的更改可能需要保持向后兼容。
- 出于安全、操作或数据一致性的原因,您可能需要在 back-end 中实现对 wrong/invalid 输入的处理,尤其是在(某种)通信协议发生变化的情况下。特别是因为提供前端还意味着可以知道如何调用 back-end,所以也可以以不同的方式调用它(无论是有意还是无意)。
- 由于 front-end 和 back-end 之间的操作很可能是异步的,某些错误处理(如连接问题)只能在 front-end 端处理。
- 身份验证和授权/机密管理:如果您 back-end 只是对数据库的 API,它需要知道正确的凭据,因此需要将它们以某种方式传递给用户方式并且可以被检查(并且可能被“误用”)
- 业务逻辑相同:可能出于智力 属性 或战略原因未将其交付给用户或潜在竞争公司。
当然,您需要考虑有多少资源可用于实施满足您需求的解决方案。
后端代码到底是什么?是 只是 API吗?后台有业务逻辑吗?
例如,如果我有一个时间表应用程序并且用户输入他们当天的时间,那么将该信息添加到数据库的逻辑是否都在前端?而后端只是为了向数据库公开一个API到add/update的信息?对于这个简单的时间表应用程序,一般来说,前端和后端会是什么?
这是一个非常广泛的 question/topic,但我将尝试解释我对这些术语的看法以及如何决定将内容放在哪里:
一般来说,用户会看到“front-end”。为了使这成为可能,该代码必须在用户设备上“存储和执行”。我很确定这意味着(有经验的)用户将能够查看前端的代码并且可能能够理解它是如何工作的。 (我稍后会详细解释为什么这是相关的。)
另一边的“back-end”通常作为某人提供的“原样”服务提供,可通过一个或多个许多可用的通信协议及其接口通常以某种方式记录,即使它不是 public。现在最突出的例子是 REST APIs 和 Graphql APIs。 正如您已经提到的,集中式状态管理(例如存储数据)可能是其中的重要组成部分(但不是必须的)。 当“调用”back-end 时,某些代码会在某些服务器上执行,并且响应(如果有)是前端或用户了解的唯一新信息。
什么去哪里?
要决定代码的哪一部分放在哪里,需要考虑很多方面。没有灵丹妙药:我确信可以找到所有可能组合的示例。
- 单个 back-end 可以有许多不同的 front-end,这取决于用户偏好(例如基于浏览器、移动应用程序、命令行界面...)。
- 它们可以有不同的发布周期和更新机制,因此对 back-end 的更改可能需要保持向后兼容。
- 出于安全、操作或数据一致性的原因,您可能需要在 back-end 中实现对 wrong/invalid 输入的处理,尤其是在(某种)通信协议发生变化的情况下。特别是因为提供前端还意味着可以知道如何调用 back-end,所以也可以以不同的方式调用它(无论是有意还是无意)。
- 由于 front-end 和 back-end 之间的操作很可能是异步的,某些错误处理(如连接问题)只能在 front-end 端处理。
- 身份验证和授权/机密管理:如果您 back-end 只是对数据库的 API,它需要知道正确的凭据,因此需要将它们以某种方式传递给用户方式并且可以被检查(并且可能被“误用”)
- 业务逻辑相同:可能出于智力 属性 或战略原因未将其交付给用户或潜在竞争公司。
当然,您需要考虑有多少资源可用于实施满足您需求的解决方案。