[架构之路-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这会显示系统的详…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
