Coursera 笔记

Module 02 · Introduction to Software Development

Introduction to Software Stacks软件堆栈简介

Coursera ↗

在本视频中,您将学习:

  • 软件堆栈术语
  • 常见的软件堆栈
  • 不同软件堆栈的优缺点


什么是软件堆栈?

软件堆栈 是一组技术的组合,包括软件和编程语言。开发者使用软件堆栈来创建各种应用和解决方案,比如 Web 和 移动应用。这些技术按层次堆叠,并共同支持应用的执行。堆栈的上层提供面向用户的任务或服务,下层则与计算机硬件进行交互。

软件堆栈通常包含

  • 前端技术:如编程语言、框架、用户界面工具。
  • 后端技术:如编程语言、框架、Web 服务器、应用服务器、操作系统、消息应用和数据库。

有时您可能会听到 技术堆栈(Technology Stack) 这个术语,它比软件堆栈的范围更广,除了软件堆栈外,还包括硬件和基础设施,如虚拟机、容器、存储和负载均衡器。


软件堆栈的层次结构

一个软件堆栈的最简单实现包括三个层次:

  1. 展示层:用户界面。
  2. 业务逻辑层:处理数据和逻辑的核心。
  3. 数据层:负责数据存储和管理。

然而,随着应用复杂性的增加,堆栈也变得更加复杂,可能涉及虚拟化、调度与编排、运行时环境、数据库连接、网络和安全等软件组件。

软件堆栈的来源:

  • 软件堆栈中的组件可能来自多种来源:内部资源、第三方提供商或云服务提供商。
  • 没有正式的堆栈结构定义,唯一的规则是堆栈中的软件和服务必须支持应用的开发、功能或部署。

当您使用软件堆栈时,并不需要使用所有可用的层,只需使用与您的解决方案相关的部分。


常见的软件堆栈

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 堆栈 在处理关系型数据时表现良好,适合构建成熟的应用。

通过了解不同的软件堆栈,您可以根据项目的需求和技术栈的特点,选择最合适的工具和方法来开发您的应用。