深色模式
Introduction to Software Stacks 软件堆栈介绍 🖥️
在本视频中,您将学习:
软件堆栈术语
常见的软件堆栈
不同软件堆栈的优缺点

什么是软件堆栈? 🔍
软件堆栈 是一组技术的组合,包括软件和编程语言。开发者使用软件堆栈来创建各种应用和解决方案,比如 Web 和 移动应用。这些技术按层次堆叠,并共同支持应用的执行。堆栈的上层提供面向用户的任务或服务,下层则与计算机硬件进行交互。
软件堆栈通常包含:
前端技术:如编程语言、框架、用户界面工具。
后端技术:如编程语言、框架、Web 服务器、应用服务器、操作系统、消息应用和数据库。

有时您可能会听到 技术堆栈(Technology Stack) 这个术语,它比软件堆栈的范围更广,除了软件堆栈外,还包括硬件和基础设施,如虚拟机、容器、存储和负载均衡器。
软件堆栈的层次结构 🏗️
一个软件堆栈的最简单实现包括三个层次:
展示层:用户界面。
业务逻辑层:处理数据和逻辑的核心。
数据层:负责数据存储和管理。
然而,随着应用复杂性的增加,堆栈也变得更加复杂,可能涉及虚拟化、调度与编排、运行时环境、数据库连接、网络和安全等软件组件。
软件堆栈的来源:
软件堆栈中的组件可能来自多种来源:内部资源、第三方提供商或云服务提供商。
没有正式的堆栈结构定义,唯一的规则是堆栈中的软件和服务必须支持应用的开发、功能或部署。
当您使用软件堆栈时,并不需要使用所有可用的层,只需使用与您的解决方案相关的部分。

常见的软件堆栈 🔧
1. Python-Django 堆栈 🐍 + ⚙️
使用流行的 Python 编程语言和 Django Web 框架。
这一组合是完全开源的,常用于大规模、快速变化的 Web 应用程序。
2. Ruby on Rails 堆栈 💎 + 🔨
使用 Ruby 编程语言和 Ruby on Rails 服务器端 Web 应用框架。
适用于 JSON 或 XML 数据传输,前端使用 HTML、CSS 和 JavaScript。
3. ASP.NET 堆栈 💻
- 包含 Microsoft 技术,如 ASP.NET MVC 框架、IIS Web 服务器、SQL Server 和 Azure。

常见的 Web 堆栈:LAMP, MEAN, MEVN, MERN 🌐
LAMP 堆栈 (Linux + Apache + MySQL + PHP) 🐧🌍
LAMP 堆栈运行在 Linux 操作系统上,使用 Apache HTTP 服务器、MySQL 数据库和 PHP 编程语言。
是构建网站和云应用程序的早期软件堆栈,所有组件都是开源的,且松耦合,便于替换其中的某些组件,例如使用 PostgreSQL 替代 MySQL,此时堆栈将变为 LAPP 堆栈。

MEAN 堆栈 (MongoDB + Express.js + Angular.js + Node.js) 🧑💻
使用 MongoDB 数据库、Express.js Web 应用服务器框架、Angular.js 前端框架和 Node.js 平台。
所有组件都是 开源 的,且平台无关,适用于多种操作系统。
MERN 堆栈 (MongoDB + Express.js + React + Node.js) 🔁
- MERN 堆栈与 MEAN 堆栈类似,区别在于前端框架使用了 React 替代 Angular.js,是一种灵活且高性能的前端开发框架。
MEVN 堆栈 (MongoDB + Express.js + Vue.js + Node.js) 🔥
和 MEAN 堆栈类似,但 Vue.js 替代了 Angular.js。
Vue.js 是一个较新的前端框架,性能比 Angular.js 更好,但可重用的库较少。

三种常见堆栈的优缺点分析 ⚖️

MEAN 堆栈的优缺点:
优点:
统一编程语言:整个堆栈都使用 JavaScript,开发者只需掌握一种语言,降低了学习成本。
开源免费:降低企业成本,且有大量文档和可重用代码。
快速开发:由于 Node.js 拥有大量可重用的模块库,开发速度很快。
缺点:
不适合大规模应用:使用 Express.js 时,业务逻辑通常集中在服务器,限制了某些服务的复用。
MongoDB:虽然适合无结构数据,但相比关系型数据库,功能较弱。
MEVN 堆栈的优缺点:
优点:
Vue.js 提供了更好的性能,且比 Angular.js 更加轻量。
与 MEAN 堆栈类似,具有相同的开源、单一语言等优点。
缺点:
- Vue.js 是较新的技术,相较于 Angular.js 可重用的库较少。
LAMP 堆栈的优缺点:
优点:
成熟稳定:作为历史悠久的堆栈,LAMP 具有广泛的支持和丰富的可重用解决方案。
开源免费:降低企业成本,易于找到资源和社区支持。
缺点:
灵活性较低:由于 Linux 是堆栈的核心,堆栈的灵活性不如 MEAN 和 MEVN(这些堆栈是平台无关的)。
不支持非结构化数据:使用 MySQL 作为关系型数据库,不适合处理非结构化数据。
语言差异:后端使用 PHP、Perl 或 Python,而前端使用 JavaScript 和 HTML,在开发时切换语言较为困难。
总结 📝
在本视频中,您学习了:
软件堆栈 是用于创建应用和解决方案的技术组合。
软件堆栈 可以从简单的三层系统到复杂的多层系统不等。
MEAN 堆栈 的最大优势是整个堆栈都使用 JavaScript,开发者只需掌握一种语言。
LAMP 堆栈 在处理关系型数据时表现良好,适合构建成熟的应用。
通过了解不同的软件堆栈,您可以根据项目的需求和技术栈的特点,选择最合适的工具和方法来开发您的应用。
