除了 MERN 和 MEAN 等其他堆栈之外,另一个堆栈正在迅速普及:FARM 堆栈。
由于利用 MongoDB 和 React 等技术,FARM 堆栈具有与 MEAN 堆栈 和 MERN 堆栈 类似的学习曲线。结合使用 FastAPI、React 和 MongoDB,极大地提高了应用程序的性能、速度和开发的简便性。
FARM 堆栈是一个技术堆栈,汇集了四种最流行的技术:
一个技术堆栈是各种前端、后端和数据库技术的堆栈,这些技术共同构建了端到端的应用程序,如 Web 应用程序。技术堆栈可以是预构建的(如 MEAN、MERN 和 FARM 堆栈),也可以根据您的具体业务使用案例进行自定义。
FARM 堆栈是使用前端 (React)、后端 (Fast API) 和数据库 (MongoDB) 的全技术堆栈。一个好的技术堆栈应该可扩展的,经济高效,并针对速度和性能进行优化。
通常,应用程序的前端(面向用户/客户端的端)是用 HTML、CSS 和 JavaScript 等技术构建的。React 是一个基于这些技术构建的库,可提供增强的开发者和用户体验。
后端由 Web 服务器和服务器端编程语言组成。这是应用程序的业务逻辑所在的位置。在 FARM 堆栈中,我们使用 FastAPI,这是一个构建在 Stitch 框架之上、速度快如闪电的 Web 框架。
FastAPI 由于其显着的功能(如内置数据验证和自动交互式 API 文档)而迅速发展起来。Fast API 基于异步服务器网关接口 (ASGI),这意味着它支持异步编程,从而速度非常快。
堆栈的底层是数据库层,它充当所有数据的存储中心。由于当今数据的性质(可能来自多个来源、采用不同格式、而且数量庞大),我们需要一个能够灵活处理此类非结构化数据的数据库。
MongoDB 是最流行的 NoSQL 数据库,它是存储、处理、分析和检索企业想要捕获的大数据的理想平台。MongoDB丰富的查询语言、聚合和许多其他功能可确保您的应用程序准确地获得所需的数据,从而节省开发者编写代码来对数据进行广泛的操作和转换的工作量。
FARM 堆栈结合了多种强大的技术,可以进行快速开发,通过协程轻松处理多个并发连接,并且易于学习。
FARM 堆栈易于理解,学习曲线极低。您只需熟悉 JavaScript、Python 和 MongoDB,就可以轻松构建项目。这些技术对许多其他堆栈和业务也很有用,因此学习这些技术可能对您的职业生涯至关重要。
用户可以在应用程序上执行下列操作之一:
HTTP 请求
对应的CRUD操作
每当用户对其中任何一个发出 HTTP 请求时,React 都会使用必要的参数构建请求,并将其发送到后端服务器。在后端,FastAPI 将请求路由到适当的方法,并调用适当的数据库方法来执行操作。一旦在数据库级别成功执行查询,后端就会接收并处理响应,然后发送到 React 前端。然后,React 向用户显示成功/失败消息。
React JS 库提供了许多可重用的开箱即用的常见实用程序和组件,从而加快了生产就绪型前端应用程序的开发。作为 FARM 堆栈的一部分,React 用于将 HTTP 请求发送到后端,并将后端响应显示到前端。
React JS 使用虚拟 dom,这仅更新应用程序已修改的部分,而不是整个树结构。这会使应用程序变得更快。另一个显着的功能是 JSX(JavaScript 扩展)语法,通过它可以在 HTML 标签内添加 JavaScript 元素。因此,元素值的任何更改都会立即反映,无需刷新或重新启动服务器。
考虑用户发出用于更新手机号码的简单 HTTP 请求。React 使用简单的钩子 (useState) 存储用户输入的数据。
这些数据将使用 JSON 格式的 PUT 请求发送到应用程序层。
由于 FARM 堆栈支持异步编程,因此我们可以使用基于承诺并支持所有浏览器的 axios JS 库。通过使用 axios,我们可以消除创建和配置 HTTP 请求的复杂性。
尽管 React 接受多种数据格式,但 JSON 格式是最受欢迎的,因为它是轻量级的,使用的带宽更少。
FastAPI 是一个基于 Python 的异步 Web 框架。在 FARM 堆栈中,Fast API 充当中间件,处理从 React 应用程序接收到的 HTTP 请求并将响应发回。FastAPI 在 uvicorn 服务器 上运行,该服务器基于异步 Web 服务器的 ASGI 服务器规范。
Fast API 利用非阻塞 I/O 操作通过协程处理多个并发负载。例如,如果有多个请求更新在线门户上的手机号码,FastAPI 不会阻塞资源,而是创建一个协程,可以并行处理多个请求。
假设有五个并发请求来更新某个手机号码。如果逐一处理,就会浪费 CPU 和时间。使用 Python 异步库中的 async 关键字,我们可以开始并行异步处理请求。假设第一个请求正在等待获取结果(查找要更新的手机号码)。此等待时间可用于启动第二个请求,依此类推。这样,每个请求都完全独立于其他请求,并且不会发生阻塞或等待。
在上述协程中,main()是程序的入口点,之后每个请求都作为单独的协程异步处理。
FastAPI 提供的 Web 框架提供:
我们可以使用 Python 装饰器(@app.get、@app.put 等)来定义 HTTP 请求和路由路径。
接下来,您可以使用请求的路径或查询参数访问输入数据。pydantic 库将负责数据验证。
然后,可以创建异步函数来更新 MongoDB 数据库中的手机号码:
在现实世界中,您很可能希望根据某些条件(如 customer_id)更新手机号码。在这种情况下,您可以在 FastAPI 终结点(路由 URL)中添加路径参数:
更新手机号码的异步函数将 customer_id 和要更新的手机号码作为参数:
“结果”是一个 BSON 文档,被 异步驱动器 马达 自动转换为 Python 字典。然后,FastAPI 将其转换为 JSON 响应。
您还可以在 FastAPI 代码中根据结果构建自定义响应。
React 应用程序使用钩子来设置变量状态,因此您可以简单地将响应设置到变量中,React 会将其显示在前端页面上:
FastAPI 使用依赖项提供对权限管理和基于角色的访问控制的内置支持,例如,验证用户身份或授权对路由的访问权限。
ASGI 提供了在 Python 中构建异步应用程序和服务器的规范。这使得应用程序能够执行数据库查询或网络请求等 I/O 操作,而不会阻塞其他操作。ASGI 旨在处理除了通常的 HTTP 请求和响应之外的长期连接。此功能使得它们对实时应用程序非常有用,因为在这种应用程序中,客户端和服务器之间的双向通信是必需的。
Uvicorn 是基于 ASGI 规范的异步 Web 服务器。它提供了高性能,非常适合高效处理高应用程序负载。使用 Fast API 的 Python 开发者可以使用 uvicorn 服务器来部署和管理其应用程序。Uvicorn 还支持 web socket。FastAPI 与其他一些服务器兼容,例如 Hypercorn 和 Quart,但 uvicorn 由于其性能和稳定性而成为首选。
Motor 是用于连接 FastAPI (Python) 和 MongoDB 的异步驱动程序。它类似于 pymongo 驱动程序,但适用于异步应用程序。Motor 也可以很好地与 MongoDB Server 社区版或企业版搭配使用。要了解有关马达的更多信息,请访问 文档页面 。
MongoDB 是用于根据应用程序的需要存储和检索数据的数据层。
MongoDB 是一种文档数据库,以类似 JSON 的格式(即 BSON(二进制 JavaScript 对象表示法))存储数据。得益于其文档模型,MongoDB 在存储数据方面提供了高度灵活性,并可轻松适应任何架构更改。
MongoDB 数据库有多种形式 — MongoDB 企业数据库、MongoDB 社区数据库 和云数据库 (Atlas)。使用 MongoDB Atlas ,您无需安装任何内容。只需创建一个免费帐户,就可以启动一个集群。
MongoDB 提供高效的数据建模选项,在优化性能的同时保持数据的一致性和灵活性。例如,要为您的 FARM 堆栈应用程序创建数据模型,您可以定义工作负载并识别主要实体之间不同类型的关系 — 1:1、1:多关系或多:多关系。基于此,您可以决定文档结构。MongoDB 遵循一个简单的规则,即同时访问的数据应存储在一起。您可以选择将实体的所有相关详细信息嵌入到单个文档中,也可以将数据规范化并使用标识符引用(就像在关系数据库中一样)。
MongoDB Atlas 是一个云数据开发平台,提供管理现代应用程序所需的全面功能。例如,内置的高可用性和容错能力、自动备份和恢复、垂直和水平可扩展性、自动服务器预配、设置、配置和修补。
MongoDB 丰富的聚合框架与 Python 丰富的科学库相结合,非常适合当今的 AI 和机器学习使用案例,如欺诈检测、实时数据分析、定向客户推荐、分析用户行为等。MongoDB Atlas 可以让您访问其他功能,如 Atlas Search、MongoDB Charts、应用程序服务、BI 工具连接器、数据联合、流处理等等。
要从 FastAPI 后端创建 MongoDB 连接,只需设立 URL,然后打开数据库收集:
建立连接并获取数据库后,您可以通过适当的方法(例如,我们在 FastAPI 部分 中使用的 update_one() 方法)用它们执行任何 CRUD 操作。
您可以使用我们的TODO 应用程序创建完整的 FARM 堆栈应用程序,以获取有关构建您的应用程序所需的端到端代码和设置的指导。
MongoDB 为 Python 开发者 提供 全栈 FastAPI 应用程序生成器 。以前,Python 开发者必须手动将身份验证、测试等组件集成到主应用程序中。MongoDB 全栈 FastAPI 应用生成器提供了一个结构良好的应用框架,从而简化了初始项目设置。应用生成器的部分主要功能如下:
FARM 和 MERN 堆栈都使用 React 和 MongoDB,它们提供了高灵活性和性能。区别在于使用 Node.js 与 FastAPI,选择两个堆栈之一取决于您的业务使用案例或个人偏好。
尽管如此,FastAPI 在数据分析和数据科学支持方面的得分要高得多:
FARM 堆栈适用于各个领域和行业范围广泛的使用案例,下面列出了其中一些:
FARM 堆栈是一个有前景的技术堆栈,并提供强大的功能来构建高度灵活,更具扩展性和高性能的应用程序。在未来的日子里,您可以期待更多技术创新和进步,并将更专注于提升开发者体验和生产力、自动化以及与其他技术的集成,以促进新的使用案例和应用程序。要开始使用 FARM 堆栈,请观看 MongoDB.live 教程 。
FARM 堆栈是使用 FastAPI、React 和 MongoDB 构建的全技术堆栈。
是的,FARM 堆栈适合初学者,因为您可以轻松学习所涉及的所有技术:
FARM 堆栈和 MERN 堆栈通常使用 MongoDB 和 React。不同之处在于,MERN 堆栈使用基于 Node.js 的后端使用 Express 框架,使其成为全 JavaScript 技术堆栈,而 FARM 堆栈使用基于 Python 的框架 FastAPI。
FARM 堆栈具有高性能和适合实时应用程序的独特功能包括如下:
是的,FARM 堆栈是全技术堆栈,因为它具有前端、后端和数据层,这是全堆栈的基本要求。