当前位置: 首页 > news >正文

[架构之路-242]:目标系统 - 纵向分层 - 应用程序的类型与演进过程(单机应用程序、网络应用程序、分布式应用程序、云端应用程序、云原生应用程序)

目录

一、什么是计算机应用程序

1.1 什么是应用程序

1.2 应用程序的分类

二、应用程序架构分类详解与演进阶段

三、应用程序架构(Application Architecture)

3.1 基本类型

3.2 云应用程序架构


一、什么是计算机应用程序

1.1 什么是应用程序

计算机应用程序(Computer Application)是指专门为计算机系统开发的软件程序,用于执行特定的任务或完成特定的功能。计算机应用程序是通过编程语言编写的一系列指令和算法,通过计算机的硬件系统来实现特定的功能和任务。

计算机应用程序可以分为各种不同的类型,涵盖了多个领域和应用场景。常见的计算机应用程序包括文字处理软件、电子表格软件、数据库管理系统、图像编辑软件、多媒体播放器、网页浏览器、操作系统、游戏等。

计算机应用程序可以完成多种任务,例如创建文档、进行数据分析、管理数据库、图像处理、音视频播放、网络通信等。根据不同的应用需求,开发人员使用编程语言和开发工具来编写和构建计算机应用程序。用户可以通过用户界面与应用程序进行交互,输入数据、执行操作或获取所需的结果。

总的来说,计算机应用程序是为了满足特定需求而开发的软件程序,通过计算机系统的硬件执行指令来完成任务和功能。计算机应用程序在各个领域和行业中扮演着重要的角色,提供了丰富多样的功能和便利性。

1.2 应用程序的分类

应用程序可以按照不同的分类方式进行划分,以下是常见的应用程序分类方式:

  1. 平台分类:

    • 桌面应用程序:在个人计算机的桌面操作系统上运行的应用程序,例如文字处理软件、电子表格软件等。
    • 移动应用程序:专为移动设备(如智能手机和平板电脑)开发的应用程序,例如社交媒体应用、游戏等。
  2. 领域分类:

    • 商务应用程序:用于支持商业和企业流程的应用程序,例如客户关系管理软件、项目管理工具等。
    • 健康与医疗应用程序:用于健康管理、医疗辅助等领域的应用程序,例如健康记录应用、远程医疗应用等。
    • 教育应用程序:用于教育和学习目的的应用程序,例如在线学习平台、课程管理工具等。
  3. 功能分类:

    • 生产力工具应用程序:用于提高工作效率和生产力的应用程序,例如文字处理软件、电子表格软件等。
    • 创意与娱乐应用程序用于创意设计、娱乐和媒体内容的应用程序,例如图像编辑软件、音频编辑软件、游戏等。
  4. 访问方式分类:

    • 独立应用程序:作为单独的应用程序安装在设备上,并可通过设备图标直接启动。
    • Web 应用程序:通过浏览器访问,不需要安装在设备上,例如在线邮箱、在线文档编辑工具等。
  5. 应用架构分类:

    • 单机应用程序:在单个计算机上运行的应用程序,不需要网络连接。
    • 网络应用程序:通过网络进行交互和通信的应用程序,例如客户端-服务器架构的应用程序。
    • 分布式应用程序:在多个计算机上并行运行的应用程序,通过网络进行协作。
    • 云端应用程序:基于云计算架构部署和运行的应用程序,利用云服务提供商的基础设施和资源。

这些分类方式可以根据实际需求和特定的上下文进行灵活组合和划分来满足不同应用程序的分类和描述需求。

二、应用程序架构分类详解与演进阶段

应用程序的类型和演进过程可以大致分为以下几个阶段:

整个演进过程中,应用程序的类型不断发展和演变,从单机应用程序到网络应用程序,再到分布式应用程序和云端应用程序,最终到达云原生应用程序。

这些应用程序类型的演进主要受到技术的发展和需求的变化的影响,旨在提升应用程序的性能、可靠性和扩展性,以满足不断变化的用户需求。

  1. 单机应用程序:前后端一体

    • 单机应用程序是最基本的应用程序类型,在单个计算机上运行,不依赖于网络连接
    • 这种应用程序可以是桌面应用程序或移动应用程序,通过本地资源进行数据存储和处理。
    • 单机应用程序适用于一些简单的应用场景,不涉及多台计算机或网络通信。
  2. 网络应用程序:前后端分离

    • 网络应用程序通过网络进行通信和交互,主要包括客户端和服务器之间的数据传输和处理。
    • 客户端通过浏览器、手机应用等方式连接到服务器,通过网络请求和接收数据来实现功能。
    • 这种架构更适用于需要实时更新和共享数据的应用程序,允许多个用户同时访问和操作。
  3. 分布式应用程序:分体式

    • 分布式应用程序是指将应用程序的不同组件分布在多个计算机上,并通过网络进行协作和通信。
    • 这种架构将应用程序的负载和任务分散到多个节点上,提高了系统的性能、可靠性和可扩展性。
    • 分布式应用程序适用于大规模应用程序和需要处理复杂计算和大数据量的场景。
  4. 云端应用程序:云底座

    • 云端应用程序基于云计算平台部署和运行,利用云服务提供商的基础设施和资源。
    • 这种架构可以实现弹性扩展、高可用性和灵活性,用户可以根据需求按需获取和使用计算资源。
    • 云端应用程序适用于需要高度可伸缩性、持续交付和容错性的应用场景。
  5. 云原生应用程序:微服务

    • 云原生应用程序是一种基于云计算架构和开发模式进行设计和构建的应用程序。
    • 这种架构关注容器化部署、自动化管理和弹性伸缩,以适应云计算环境的动态性和变化性。
    • 云原生应用程序采用微服务架构和容器技术,可以更快地进行部署、更新和扩展,并满足云计算的要求。

在应用程序架构的演进阶段中,从单机应用程序到网络应用程序、分布式应用程序、云端应用程序以及云原生应用程序,每个阶段都提供了更高级别的技术和架构设计,以应对不同规模和需求的应用程序挑战。选择适合的应用程序架构需要考虑实际需求、预期扩展性、性能要求以及可用资源等因素。

三、应用程序架构(Application Architecture)

3.1 基本类型

应用程序架构(Application Architecture)是指在设计和构建应用程序时,所采用的组织结构和模式的总称。它定义了应用程序的各个组件、模块以及它们之间的关系和交互方式

应用程序架构的设计对于应用程序的性能、可扩展性、可维护性和易用性都具有重要的影响。

下面介绍几种常见的应用程序架构:

  1. 单层架构(Monolithic Architecture):

    • 单层架构是最简单的应用程序架构,所有的功能模块都集中在一个单一的代码库中。
    • 这种架构适用于小型和简单的应用程序,但随着应用程序规模的增大和复杂性的提高,单层架构可能会导致代码的混乱和难以维护。
  2. 分层架构(Layered Architecture):

    • 分层架构将应用程序划分为多个层次,每个层次都具有特定的职责和功能。
    • 典型的分层架构包括表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)等。
    • 这种架构使得各个层次的代码更加清晰、可维护,并且可以提高代码重用性,但也增加了架构的复杂性。
  3. 客户端-服务器架构(Client-Server Architecture):网络

    • 客户端-服务器架构将应用程序的功能划分为客户端和服务器两部分。
    • 客户端负责用户界面和交互,而服务器负责数据存储、业务处理和数据传输等。
    • 这种架构可以实现分布式计算和资源共享,适用于需要多个客户端同时访问服务器的应用场景。
  4. 微服务架构(Microservices Architecture):

    • 微服务架构将应用程序划分为一组小型、独立的服务单元,每个服务单元都可以独立部署和运行。
    • 每个服务单元都有自己的业务逻辑和数据存储,通过轻量级的通信机制进行交互。
    • 微服务架构具有高度的灵活性、可扩展性和容错性,适用于大规模和复杂的应用程序。
  5. 事件驱动架构(Event-Driven Architecture):

    • 事件驱动架构将应用程序设计为基于事件和消息的响应式系统
    • 不同的组件通过发布/订阅模式或消息队列进行事件的传递和处理
    • 这种架构可以实现松耦合和可扩展性,适用于需要实时响应和异步处理的应用场景。

        以上只是几种常见的应用程序架构,实际的应用程序架构可能结合了多种模式和技术,根据具体的需求和场景进行选择和设计。

3.2 云应用程序架构

云应用程序架构(Cloud Application Architecture)是一种基于云计算环境中开发和部署应用程序的架构设计模式。

它利用云服务提供商的基础设施和平台,构建高度可扩展、弹性和可靠的应用程序

云应用程序架构通常具有以下特点和组件:

  1. 微服务架构:云应用程序架构通常采用微服务架构,将应用程序拆分为一组小型、独立的服务单元。每个服务单元都有自己的业务逻辑和数据存储,通过轻量级的通信机制进行交互。

  2. 弹性扩展:通过云提供商的弹性计算能力,云应用程序能够根据需求快速扩展或缩减资源。这意味着它可以根据实际负载情况动态分配计算、存储和网络资源,以实现高可用性和性能优化。

  3. 云存储和数据库:云应用程序可以利用云提供商的存储服务和数据库服务,例如云存储服务和云数据库服务。这样可以方便地管理和存储大量的数据,并提供高可靠性和可伸缩性。

  4. 服务编排和管道:云应用程序常常利用服务编排和管道工具来管理和协调各个服务之间的交互和流程。这样可以实现自动化的部署、集成和监控,提高开发和运维效率。

  5. 安全性:云应用程序架构注重安全性,通过身份认证、访问控制、数据加密等安全措施来保护应用程序和数据的安全性。

通过采用云应用程序架构,开发人员可以更容易地构建和部署可扩展的应用程序,同时节省了硬件和基础设施的成本。云计算环境提供了灵活性、可靠性和高性能,使得应用程序可以更好地适应用户需求和变化的市场环境。

相关文章:

[架构之路-242]:目标系统 - 纵向分层 - 应用程序的类型与演进过程(单机应用程序、网络应用程序、分布式应用程序、云端应用程序、云原生应用程序)

目录 一、什么是计算机应用程序 1.1 什么是应用程序 1.2 应用程序的分类 二、应用程序架构分类详解与演进阶段 三、应用程序架构(Application Architecture) 3.1 基本类型 3.2 云应用程序架构 一、什么是计算机应用程序 1.1 什么是应用程序 计算…...

Jackson 反序列化失败,出现JSON: Unrecognized field

问题: 这边在灰度发布的时候,其他未发布的机器出现过could not read JSON: Unrecognized field “type”,这个报错,原因是有一个表新加了一个字段,并且灰度发布了一台机器,刚好有请求命中这台机器&#xf…...

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++)

思路&#xff1a; 1、先加上初始的饮料数n。 2、再加上n可以兑换的饮料数n/3&#xff0c;求多余的瓶盖n%3。循环直至瓶盖数无法兑换新的一瓶饮料。 #include<iostream> using namespace std; int main() {int n,a0,sum0;cin >> n;sum n;while (n){n n a;//加上上…...

《java核心卷Ⅰ》知识点总结(可作面试题)

&#x1f6eb; JDK和JRE傻傻分不清?&#x1f6eb; HelloWorld的输出都经历了啥&#xff1f;&#x1f6eb; Java的三个版本都是啥&#xff1f;&#x1f6eb; 关于main方法你都知道啥&#xff1f;main方法被声明为private会怎样&#xff1f;&#x1f6eb; 强制and自动类型转换都…...

发成绩小程序,一键群发成绩给家长,省事

大家好&#xff01;又到了学期末&#xff0c;是不是又开始为了学生的成绩而烦恼了&#xff1f;别担心&#xff0c;今天就给大家带来一款超级实用的成绩查询系统&#xff01;从此告别繁琐的手动操作&#xff0c;一键群发成绩给家长&#xff0c;轻松又愉快&#xff01; 成绩查询系…...

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 &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 题目…...

【rust/树莓派】使用rppalembedded-graphics控制st7789 LCD屏幕

说在前面 树莓派版本&#xff1a;4bLCD模块&#xff1a;ST7789V2 240*280 LCD树莓派系统&#xff1a;Linux raspberrypi 5.15.76-v8 #1597 SMP aarch64 GNU/Linuxrust版本&#xff1a;rustc 1.73.0 模块详情 某雪的1.69inch LCD模块&#xff0c;包含杜邦线 准备工作 树莓派…...

WebSocket—STOMP详解(官方原版)

WebSocket协议定义了两种类型的消息&#xff08;文本和二进制&#xff09;&#xff0c;但其内容未作定义。该协议定义了一种机制&#xff0c;供客户端和服务器协商在WebSocket之上使用的子协议&#xff08;即更高级别的消息传递协议&#xff09;&#xff0c;以定义各自可以发送…...

淘宝/天猫获取购买到的商品订单物流信息 API分享

开发背景&#xff1a; 淘宝是中国最大的电商平台之一&#xff0c;拥有海量的用户和卖家。为了方便卖家和买家之间的交易&#xff0c;淘宝提供了订单物流API的开发接口。通过这个接口&#xff0c;卖家可以快速获取到买家的订单信息以及物流状态&#xff0c;从而更好地管理自己的…...

PS软件 点击 “另存为 Web 所用格式” ,提示错误 无法完成操作 系统找不到指定路径

软件&#xff1a;Adobe Photoshop 问题&#xff1a; PS 点击 另存为 Web 所用格式 &#xff0c;提示错误 无法完成操作 系统找不到指定路径 解决&#xff1a; 如果是Win10以上的系统&#xff0c;出现这种情况基本就是被系统自带的杀毒软件阻止了&#xff0c;可以看一下电脑右…...

解决“您点击的链接已过期”;The Link You Followed Has Expired的问题

今天WP碰到一个坑。无论发布文章还是更新插件、更换主题都是这么一种状态“您点击的链接已过期”&#xff1b;The Link You Followed Has Expired 百度出来的答案都是修改post_max_size 方法1. 通过functions.php文件修复 这种方法更容易&#xff0c;只需将以下代码添加到Wor…...

说说对ajax、axios、jsonp的理解

下面是对 AJAX、Axios 和 JSONP 的简要说明&#xff1a; 1&#xff1a;AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;&#xff1a; AJAX 是一种用于创建异步通信的技术&#xff0c;通过在后台与服务器进行数据交换&#xff0c;实现页面的局部更新&#xff0c…...

黄金代理这么多,怎么选?

目前&#xff0c;现货黄金代理已成为了市场中成熟的模式&#xff0c;我们只要在搜索引擎上搜索如何在市场中开户&#xff0c;会搜到各种各样的黄金代理&#xff0c;其中更是不乏服务非常优秀的。部分投资者早就接受了黄金代理的存在&#xff0c;并且率先开始在黄金代理中进行开…...

一个工作三年的前端是如何做性能优化的

你是怎么做性能优化的&#xff1f;关于这一个问题&#xff0c;也是我们前端开发程序员经常会讨论到的问题&#xff0c;接下来这篇文章将总结一下前端方面的性能优化及方式。 为什么要做性能优化 性能优化是为了提高网页的加载速度和相应速度&#xff0c;给用户带来更好的体验…...

如何确定自己的armbian系统是不是ARM64架构

使用 arch 命令&#xff1a; arch 命令会返回当前系统的架构信息。 arch系统是ARM64架构&#xff0c;返回 aarch64。系统是ARM32架构&#xff0c;它会返回 armv7l 或类似的值。 使用 uname 命令&#xff1a; 确认系统架构的方法是使用 uname 命令 uname -a这会显示系统的详…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...