[架构之路-242]:目标系统 - 纵向分层 - 应用程序的类型与演进过程(单机应用程序、网络应用程序、分布式应用程序、云端应用程序、云原生应用程序)
目录
一、什么是计算机应用程序
1.1 什么是应用程序
1.2 应用程序的分类
二、应用程序架构分类详解与演进阶段
三、应用程序架构(Application Architecture)
3.1 基本类型
3.2 云应用程序架构
一、什么是计算机应用程序
1.1 什么是应用程序
计算机应用程序(Computer Application)是指专门为计算机系统开发的软件程序,用于执行特定的任务或完成特定的功能。计算机应用程序是通过编程语言编写的一系列指令和算法,通过计算机的硬件系统来实现特定的功能和任务。
计算机应用程序可以分为各种不同的类型,涵盖了多个领域和应用场景。常见的计算机应用程序包括文字处理软件、电子表格软件、数据库管理系统、图像编辑软件、多媒体播放器、网页浏览器、操作系统、游戏等。
计算机应用程序可以完成多种任务,例如创建文档、进行数据分析、管理数据库、图像处理、音视频播放、网络通信等。根据不同的应用需求,开发人员使用编程语言和开发工具来编写和构建计算机应用程序。用户可以通过用户界面与应用程序进行交互,输入数据、执行操作或获取所需的结果。
总的来说,计算机应用程序是为了满足特定需求而开发的软件程序,通过计算机系统的硬件执行指令来完成任务和功能。计算机应用程序在各个领域和行业中扮演着重要的角色,提供了丰富多样的功能和便利性。
1.2 应用程序的分类
应用程序可以按照不同的分类方式进行划分,以下是常见的应用程序分类方式:
-
平台分类:
- 桌面应用程序:在个人计算机的桌面操作系统上运行的应用程序,例如文字处理软件、电子表格软件等。
- 移动应用程序:专为移动设备(如智能手机和平板电脑)开发的应用程序,例如社交媒体应用、游戏等。
-
领域分类:
- 商务应用程序:用于支持商业和企业流程的应用程序,例如客户关系管理软件、项目管理工具等。
- 健康与医疗应用程序:用于健康管理、医疗辅助等领域的应用程序,例如健康记录应用、远程医疗应用等。
- 教育应用程序:用于教育和学习目的的应用程序,例如在线学习平台、课程管理工具等。
-
功能分类:
- 生产力工具应用程序:用于提高工作效率和生产力的应用程序,例如文字处理软件、电子表格软件等。
- 创意与娱乐应用程序:用于创意设计、娱乐和媒体内容的应用程序,例如图像编辑软件、音频编辑软件、游戏等。
-
访问方式分类:
- 独立应用程序:作为单独的应用程序安装在设备上,并可通过设备图标直接启动。
- Web 应用程序:通过浏览器访问,不需要安装在设备上,例如在线邮箱、在线文档编辑工具等。
-
应用架构分类:
- 单机应用程序:在单个计算机上运行的应用程序,不需要网络连接。
- 网络应用程序:通过网络进行交互和通信的应用程序,例如客户端-服务器架构的应用程序。
- 分布式应用程序:在多个计算机上并行运行的应用程序,通过网络进行协作。
- 云端应用程序:基于云计算架构部署和运行的应用程序,利用云服务提供商的基础设施和资源。
这些分类方式可以根据实际需求和特定的上下文进行灵活组合和划分来满足不同应用程序的分类和描述需求。
二、应用程序架构分类详解与演进阶段
应用程序的类型和演进过程可以大致分为以下几个阶段:
整个演进过程中,应用程序的类型不断发展和演变,从单机应用程序到网络应用程序,再到分布式应用程序和云端应用程序,最终到达云原生应用程序。
这些应用程序类型的演进主要受到技术的发展和需求的变化的影响,旨在提升应用程序的性能、可靠性和扩展性,以满足不断变化的用户需求。
-
单机应用程序:前后端一体
- 单机应用程序是最基本的应用程序类型,在单个计算机上运行,不依赖于网络连接。
- 这种应用程序可以是桌面应用程序或移动应用程序,通过本地资源进行数据存储和处理。
- 单机应用程序适用于一些简单的应用场景,不涉及多台计算机或网络通信。
-
网络应用程序:前后端分离
- 网络应用程序通过网络进行通信和交互,主要包括客户端和服务器之间的数据传输和处理。
- 客户端通过浏览器、手机应用等方式连接到服务器,通过网络请求和接收数据来实现功能。
- 这种架构更适用于需要实时更新和共享数据的应用程序,允许多个用户同时访问和操作。
-
分布式应用程序:分体式
- 分布式应用程序是指将应用程序的不同组件分布在多个计算机上,并通过网络进行协作和通信。
- 这种架构将应用程序的负载和任务分散到多个节点上,提高了系统的性能、可靠性和可扩展性。
- 分布式应用程序适用于大规模应用程序和需要处理复杂计算和大数据量的场景。
-
云端应用程序:云底座
- 云端应用程序基于云计算平台部署和运行,利用云服务提供商的基础设施和资源。
- 这种架构可以实现弹性扩展、高可用性和灵活性,用户可以根据需求按需获取和使用计算资源。
- 云端应用程序适用于需要高度可伸缩性、持续交付和容错性的应用场景。
-
云原生应用程序:微服务
- 云原生应用程序是一种基于云计算架构和开发模式进行设计和构建的应用程序。
- 这种架构关注容器化部署、自动化管理和弹性伸缩,以适应云计算环境的动态性和变化性。
- 云原生应用程序采用微服务架构和容器技术,可以更快地进行部署、更新和扩展,并满足云计算的要求。
在应用程序架构的演进阶段中,从单机应用程序到网络应用程序、分布式应用程序、云端应用程序以及云原生应用程序,每个阶段都提供了更高级别的技术和架构设计,以应对不同规模和需求的应用程序挑战。选择适合的应用程序架构需要考虑实际需求、预期扩展性、性能要求以及可用资源等因素。
三、应用程序架构(Application Architecture)
3.1 基本类型
应用程序架构(Application Architecture)是指在设计和构建应用程序时,所采用的组织结构和模式的总称。它定义了应用程序的各个组件、模块以及它们之间的关系和交互方式。
应用程序架构的设计对于应用程序的性能、可扩展性、可维护性和易用性都具有重要的影响。
下面介绍几种常见的应用程序架构:
-
单层架构(Monolithic Architecture):
- 单层架构是最简单的应用程序架构,所有的功能模块都集中在一个单一的代码库中。
- 这种架构适用于小型和简单的应用程序,但随着应用程序规模的增大和复杂性的提高,单层架构可能会导致代码的混乱和难以维护。
-
分层架构(Layered Architecture):
- 分层架构将应用程序划分为多个层次,每个层次都具有特定的职责和功能。
- 典型的分层架构包括表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)等。
- 这种架构使得各个层次的代码更加清晰、可维护,并且可以提高代码重用性,但也增加了架构的复杂性。
-
客户端-服务器架构(Client-Server Architecture):网络
- 客户端-服务器架构将应用程序的功能划分为客户端和服务器两部分。
- 客户端负责用户界面和交互,而服务器负责数据存储、业务处理和数据传输等。
- 这种架构可以实现分布式计算和资源共享,适用于需要多个客户端同时访问服务器的应用场景。
-
微服务架构(Microservices Architecture):
- 微服务架构将应用程序划分为一组小型、独立的服务单元,每个服务单元都可以独立部署和运行。
- 每个服务单元都有自己的业务逻辑和数据存储,通过轻量级的通信机制进行交互。
- 微服务架构具有高度的灵活性、可扩展性和容错性,适用于大规模和复杂的应用程序。
-
事件驱动架构(Event-Driven Architecture):
- 事件驱动架构将应用程序设计为基于事件和消息的响应式系统。
- 不同的组件通过发布/订阅模式或消息队列进行事件的传递和处理。
- 这种架构可以实现松耦合和可扩展性,适用于需要实时响应和异步处理的应用场景。
以上只是几种常见的应用程序架构,实际的应用程序架构可能结合了多种模式和技术,根据具体的需求和场景进行选择和设计。
3.2 云应用程序架构
云应用程序架构(Cloud Application Architecture)是一种基于云计算环境中开发和部署应用程序的架构设计模式。
它利用云服务提供商的基础设施和平台,构建高度可扩展、弹性和可靠的应用程序。
云应用程序架构通常具有以下特点和组件:
-
微服务架构:云应用程序架构通常采用微服务架构,将应用程序拆分为一组小型、独立的服务单元。每个服务单元都有自己的业务逻辑和数据存储,通过轻量级的通信机制进行交互。
-
弹性扩展:通过云提供商的弹性计算能力,云应用程序能够根据需求快速扩展或缩减资源。这意味着它可以根据实际负载情况动态分配计算、存储和网络资源,以实现高可用性和性能优化。
-
云存储和数据库:云应用程序可以利用云提供商的存储服务和数据库服务,例如云存储服务和云数据库服务。这样可以方便地管理和存储大量的数据,并提供高可靠性和可伸缩性。
-
服务编排和管道:云应用程序常常利用服务编排和管道工具来管理和协调各个服务之间的交互和流程。这样可以实现自动化的部署、集成和监控,提高开发和运维效率。
-
安全性:云应用程序架构注重安全性,通过身份认证、访问控制、数据加密等安全措施来保护应用程序和数据的安全性。
通过采用云应用程序架构,开发人员可以更容易地构建和部署可扩展的应用程序,同时节省了硬件和基础设施的成本。云计算环境提供了灵活性、可靠性和高性能,使得应用程序可以更好地适应用户需求和变化的市场环境。
相关文章:
[架构之路-242]:目标系统 - 纵向分层 - 应用程序的类型与演进过程(单机应用程序、网络应用程序、分布式应用程序、云端应用程序、云原生应用程序)
目录 一、什么是计算机应用程序 1.1 什么是应用程序 1.2 应用程序的分类 二、应用程序架构分类详解与演进阶段 三、应用程序架构(Application Architecture) 3.1 基本类型 3.2 云应用程序架构 一、什么是计算机应用程序 1.1 什么是应用程序 计算…...
Jackson 反序列化失败,出现JSON: Unrecognized field
问题: 这边在灰度发布的时候,其他未发布的机器出现过could not read JSON: Unrecognized field “type”,这个报错,原因是有一个表新加了一个字段,并且灰度发布了一台机器,刚好有请求命中这台机器…...
vscode代码快捷输入
Vscode代码片段快捷输入 常用的代码片段为了避免重复输入,可以使用Vsco的中用户代码片段进行设置,这样就可以实现快捷输入. 操作流程 如下 打开vscode的设置 2. 找到用户代码片段 3. 选择模板 4. 然后写入代码片段即可 上面的代码片段可以设置多个,看自己 重点关注的是 prefi…...
【微服务】Feign 整合 Sentinel,深入探索 Sentinel 的隔离和熔断降级规则,以及授权规则和自定义异常返回结果
文章目录 前言一、Feign 整合 Sentinel1.1 实现步骤1.2 FallbackFactory 示例 二、Sentinel 实现隔离2.1 隔离的实现方法2.2 Sentinel 实现线程隔离示例 三、熔断降级规则3.1 熔断降级原理及其流程3.2 熔断策略 —— 慢调用3.3 熔断策略 —— 异常比例和异常数 四、授权规则4.1…...
Kurento多对多webrtc会议搭建测试
环境ubuntu18.04 KMS版本6.13.0 多对多通信demo7.0.0 KMS运行起来后,通过运行它的一个个demo,来实现不同的功能,它的demo很多如下: https://github.com/Kurento 里面有一对一,多对多,还有一些特效的demo。…...
蓝桥杯 (饮料换购,C++)
思路: 1、先加上初始的饮料数n。 2、再加上n可以兑换的饮料数n/3,求多余的瓶盖n%3。循环直至瓶盖数无法兑换新的一瓶饮料。 #include<iostream> using namespace std; int main() {int n,a0,sum0;cin >> n;sum n;while (n){n n a;//加上上…...
《java核心卷Ⅰ》知识点总结(可作面试题)
🛫 JDK和JRE傻傻分不清?🛫 HelloWorld的输出都经历了啥?🛫 Java的三个版本都是啥?🛫 关于main方法你都知道啥?main方法被声明为private会怎样?🛫 强制and自动类型转换都…...
发成绩小程序,一键群发成绩给家长,省事
大家好!又到了学期末,是不是又开始为了学生的成绩而烦恼了?别担心,今天就给大家带来一款超级实用的成绩查询系统!从此告别繁琐的手动操作,一键群发成绩给家长,轻松又愉快! 成绩查询系…...
barzilar_borwein算法微调函数的优化收敛
import optimtool as oo from optimtool.base import np, sp, pltpip install optimtool>2.4.2加载barzilar_borwein算法 import optimtool.unconstrain as ou barzilar_borwein ou.gradient_descent.barzilar_borwein初始化输入数据 f ( x ) ∑ i 1 n / 2 c ( x 2 i −…...
SpringBoot篇---第一篇
系列文章目录 文章目录 系列文章目录一、为什么要用SpringBoot二、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?三、运行Spring Boot有哪几种方式?一、为什么要用SpringBoot Spring Boot 优点非常多,如: 一、独立运行 Spring Boot而且内嵌了各种servlet容器,…...
算法通关村第二关-白银挑战反转链表拓展问题
大家好我是苏麟 , 今天聊一聊链表反转拓展问题 . 反转链表拓展问题 1.指定区间反转 描述 : 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left < right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 题目…...
【rust/树莓派】使用rppalembedded-graphics控制st7789 LCD屏幕
说在前面 树莓派版本:4bLCD模块:ST7789V2 240*280 LCD树莓派系统:Linux raspberrypi 5.15.76-v8 #1597 SMP aarch64 GNU/Linuxrust版本:rustc 1.73.0 模块详情 某雪的1.69inch LCD模块,包含杜邦线 准备工作 树莓派…...
WebSocket—STOMP详解(官方原版)
WebSocket协议定义了两种类型的消息(文本和二进制),但其内容未作定义。该协议定义了一种机制,供客户端和服务器协商在WebSocket之上使用的子协议(即更高级别的消息传递协议),以定义各自可以发送…...
淘宝/天猫获取购买到的商品订单物流信息 API分享
开发背景: 淘宝是中国最大的电商平台之一,拥有海量的用户和卖家。为了方便卖家和买家之间的交易,淘宝提供了订单物流API的开发接口。通过这个接口,卖家可以快速获取到买家的订单信息以及物流状态,从而更好地管理自己的…...
PS软件 点击 “另存为 Web 所用格式” ,提示错误 无法完成操作 系统找不到指定路径
软件:Adobe Photoshop 问题: PS 点击 另存为 Web 所用格式 ,提示错误 无法完成操作 系统找不到指定路径 解决: 如果是Win10以上的系统,出现这种情况基本就是被系统自带的杀毒软件阻止了,可以看一下电脑右…...
解决“您点击的链接已过期”;The Link You Followed Has Expired的问题
今天WP碰到一个坑。无论发布文章还是更新插件、更换主题都是这么一种状态“您点击的链接已过期”;The Link You Followed Has Expired 百度出来的答案都是修改post_max_size 方法1. 通过functions.php文件修复 这种方法更容易,只需将以下代码添加到Wor…...
说说对ajax、axios、jsonp的理解
下面是对 AJAX、Axios 和 JSONP 的简要说明: 1:AJAX(Asynchronous JavaScript and XML): AJAX 是一种用于创建异步通信的技术,通过在后台与服务器进行数据交换,实现页面的局部更新,…...
黄金代理这么多,怎么选?
目前,现货黄金代理已成为了市场中成熟的模式,我们只要在搜索引擎上搜索如何在市场中开户,会搜到各种各样的黄金代理,其中更是不乏服务非常优秀的。部分投资者早就接受了黄金代理的存在,并且率先开始在黄金代理中进行开…...
一个工作三年的前端是如何做性能优化的
你是怎么做性能优化的?关于这一个问题,也是我们前端开发程序员经常会讨论到的问题,接下来这篇文章将总结一下前端方面的性能优化及方式。 为什么要做性能优化 性能优化是为了提高网页的加载速度和相应速度,给用户带来更好的体验…...
如何确定自己的armbian系统是不是ARM64架构
使用 arch 命令: arch 命令会返回当前系统的架构信息。 arch系统是ARM64架构,返回 aarch64。系统是ARM32架构,它会返回 armv7l 或类似的值。 使用 uname 命令: 确认系统架构的方法是使用 uname 命令 uname -a这会显示系统的详…...
hyn/multi-tenant数据库管理最佳实践:分离策略、迁移与种子数据
hyn/multi-tenant数据库管理最佳实践:分离策略、迁移与种子数据 【免费下载链接】multi-tenant Run multiple websites using the same Laravel installation while keeping tenant specific data separated for fully independent multi-domain setups, previously…...
别只盯着去噪!拆解DnCNN中的BatchNorm:为什么它能让残差学习在PyTorch里又快又稳?
别只盯着去噪!拆解DnCNN中的BatchNorm:为什么它能让残差学习在PyTorch里又快又稳? 当我们在PyTorch中实现DnCNN时,往往会把注意力集中在残差学习的巧妙设计上,却忽略了BatchNorm(BN)这个看似普通…...
艾米森冲刺港股:年营收1542万 亏4898万
雷递网 雷建平 4月7日武汉艾米森生命科技股份有限公司(简称:“艾米森”)日前更新招股书,准备在港交所上市。年营收1542万 亏4898万艾米森于2015年1月成立,是一家早期癌症检测公司,战略聚焦于高发病率、高死…...
HTML怎么显示导出文件体积优化建议_HTML压缩图片选项【操作】
优化图片需用现代格式(如WebP)合理尺寸有损压缩;HTML压缩只删注释、合并空白、移除可选闭合标签;构建时图片须经imagemin插件压缩,CSS背景图也要走loader处理。HTML里怎么让图片变小却不模糊导出体积大,八成…...
每日极客日报 · 2026年04月08日 · 2026-04-08
每日极客日报 2026年04月08日 今日精选 20 条 IT 科技热点,覆盖 AI 大模型、网络安全、开源工具、云原生与工程实践等领域。 🔥 今日头条 Project Glasswing:Anthropic 联合苹果、谷歌、微软,用 AI 守护关键软件安全 Anthropic…...
【Linux篇】应用层自定义协议与序列化
📌 个人主页: 孙同学_ 🔧 文章专栏:Liunx 💡 关注我,分享经验,助你少走弯路! 应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层。 再谈 …...
从噪声整形到高精度:Delta-Sigma ADC核心原理深度剖析
1. Delta-Sigma ADC的独特魅力 第一次接触Delta-Sigma ADC时,我被它的"魔法"惊呆了——一个看似简单的1位核心,居然能输出24位甚至32位的高精度数据!这就像用一把刻度粗糙的尺子,通过特殊测量方法获得了比游标卡尺还精确…...
Arduino-Pico:Raspberry Pi Pico Arduino核心完全指南 - 支持所有RP2040和RP2350开发板
Arduino-Pico:Raspberry Pi Pico Arduino核心完全指南 - 支持所有RP2040和RP2350开发板 【免费下载链接】arduino-pico Raspberry Pi Pico Arduino core, for all RP2040 and RP2350 boards 项目地址: https://gitcode.com/gh_mirrors/ar/arduino-pico 想要在…...
零基础玩转EVA-01:手把手教你用机甲AI分析图片,效果惊艳
零基础玩转EVA-01:手把手教你用机甲AI分析图片,效果惊艳 1. 初识EVA-01:你的机甲视觉助手 想象一下,你面前有一张复杂的机械设计图,或者一张充满细节的风景照片。传统的AI图片分析工具可能只会给你一段干巴巴的文字描…...
我的数字记忆宝库:用m4s-converter守护那些即将消失的美好
我的数字记忆宝库:用m4s-converter守护那些即将消失的美好 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 去年冬天,我整…...
