开发人员应该了解软件堆栈,使他们能够选择合适的堆栈来开发他们的应用程序。从表面上看,应用程序可能看起来很简单,因为它旨在解决最终用户的问题。然而,在底层,一组称为软件堆栈的组件在应用程序的工作方式中起着至关重要的作用。作为开发人员,您必须了解软件堆栈。本文将涵盖“什么是软件堆栈?”及其不同的层次。我们还将介绍流行的软件堆栈,以便您了解为您的应用程序开发选择哪个软件堆栈。让我们开始吧。
什么是软件堆栈?
软件堆栈是应用程序运行所需的程序或组件的集合。它类似于Network的OSI模型,它包含七层,每一层协作在互联网上传输数据。软件堆栈也不例外。在这里,每个组件在应用程序执行中都起着至关重要的作用。
在大多数情况下,软件堆栈包含以下组件:
操作系统
协议
架构层
数据库和函数调用
运行环境
这些组件相互堆叠,较低级别的组件管理硬件交互。另一方面,更高级别的组件处理最终用户的服务和任务。此外,堆栈中的每个组件都可以协同工作以跨堆栈执行简单或复杂的任务。
软件堆栈
软件堆栈的复杂性取决于应用程序的功能。这意味着它可以包括来自云提供商/SaaS供应商的组织的自定义本地资源或服务/解决方案。
软件堆栈的可定制性意味着没有固定的标准或方法。但是,软件堆栈旨在为应用程序开发、操作、交付和维护提供必要的功能集。软件堆栈可以简单到由操作系统、编程语言工具、数据库和应用程序组成,也可以通过添加更多组件(如计算、网络、用户界面、虚拟化和抽象物理资源)而变得复杂。
不同的软件堆栈层
由于每个组件都有不同的功能需要满足,因此软件堆栈可以大致分为三层。
表示层:表示层处理通过基于Web的应用程序门户或网站访问的用户界面。
逻辑层:逻辑层负责两个重要任务:
使用业务规则和应用程序逻辑满足应用程序请求。
在表示层和数据层之间传输数据。
数据层:最后,我们有一个处理应用程序服务器端方面的数据层。它将信息传递给逻辑层,然后根据应用程序和业务规则进行计算,然后再将其发送到表示层。
您可以对每一层使用不同的技术来实现其预期目标。例如,表示层需要HTML5、CSS和JavaScript等前端技术。同样,数据层也可以选择MongoDB、MySQL等数据库技术。至于逻辑层,可以选择Python、Java、C#等编程语言进行编码。
开发人员不必专注于应用程序开发的各个方面。任何应用程序开发主要分为两个组件:后端和前端。一些开发人员专注于后端开发,而另一些则专注于前端开发。但是,全栈开发人员可以两者兼得。您可以将应用程序的前端视为表示层。它侧重于用户体验和界面,需要使用前端技术进行开发。后端开发人员创建逻辑层,该层使用后端编程语言和工具与表示层交互。
流行的软件堆栈
市场上有许多成熟的软件堆栈。一些受欢迎的包括:
MEANandMEVN
MEAN代表MongoDB、Express、Angular和Node.js。它是一个现代Web开发堆栈。它是独一无二的,因为它不依赖于任何操作系统,这要归功于Node.js,一个服务器端脚本平台。其他组件包括MongoDB、NoSQL文档数据库和用于前端开发的Angular.JS。这里,Express.JS是Node.js的Web框架。
MEVN
MEVN是MEAN的流行替代品。在这里,Vue.js是一个轻量级、简约的JavaScript框架,它取代了Angular.js。由于其简约的方法,MEVN是高度可定制的,但依赖于由其社区开发和管理的第三方插件。
LAMPLAMP是最古老和最著名的Web开发堆栈之一。LAMP组件包括Linux、Apache、MySQL和PHP。它是一个开源堆栈,可为您提供创建和管理Web应用程序的所有工具。Linux是以Apache为服务器的操作系统。对于数据库,该堆栈实现MySQL,一种流行的数据库解决方案。最后,我们有Python、Perl或PHP作为编写脚本的编程语言。LAMP堆栈组件相互补充,因此是松散耦合的。ApacheCloudStackApacheCloudStack,一个开源云管理企业堆栈。它为企业提供实施和管理基础架构即服务(IaaS)。CloudStack包括管理程序、API和最佳服务层。还有许多其他流行的软件堆栈,包括:BCHS:OpenBSD操作系统、C编程语言、