本文主要是介绍软件体系结构复习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
复习参考:
一文搞懂什么是RESTful API
九种常见UML图
企业级软件开发的基本概念
- 软件架构:在设计和构建软件系统时采用的基本结构和原则。
它涉及到对软件系统进行模块化、组织和分解的方式,以及不同模块之间的交互和通信方式。 - 在软件设计中,架构域包括:
-
业务架构:定义了软件系统和 业务目标&需求 的对应关系,包括业务流程、业务规则和业务逻辑等。
-
数据架构:涉及数据的组织、存储和管理方式,包括数据模型、数据库设计和数据访问策略等。
-
产品架构:关注软件的功能和特性,以满足用户需求。产品架构通常从用户体验、功能模块和交互设计等方面进行考虑。
-
应用架构:描述软件系统的不同组件和模块之间的关系和通信方式,包括应用程序的整体结构、模块划分和接口设计等
-
技术架构:涉及软件系统的基础设施和技术选择,包括编程语言、开发框架、数据存储和部署架构等。
-
- 软件架构:
- 根据问题确定系统边界
- 按一定原则进行划分
- 建立不同模块间的沟通机制
- 整体性交付软件功能
企业级软件架构特征
- 企业级应用:指那些为商业组织、大型企业而创建并部署的解决方案和应用。
这些大型企业级应用的结构复杂,涉及的外部资源众多、事务密集、数据量大、用户数多,有较强的安全性顾虑。 - 企业级软件要解决的特殊问题(背景:企业级软件要承受数据量、业务量不断增加的压力):
-
伸缩性:指企业级应用能承受日益增长的业务量。
要求企业级应用程序能够扩展以满足新的需求,这种扩展有功能上的扩展,也有用户群的扩展。当网上潜在的有上百万的用户同时使用某个特定的应用时,应用程序不仅要处理大量的客户的请求,还要有效使用系统资源。
-
安全性:
-
异构和互通
-
分布式
-
spring框架核心概念
J2EE简介
- Java VS Java EE:两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,目前主要是.NET和Java两大主流体系。
- J2EE:
Open and standard based platform for developing, deploying and managing n-tier, Web-enabled, server-centric enterprise applications
开放的、基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用
- 框架的用处:
- 为组件运行提供基础服务
- 为组件开发提供基础类
- 实现了组件之间的隔离
- 支持组件间的协作
- 管理组件生命周期
- 运行于容器之内
Java EE开发平台大致分为两种方式:
(1)以Spring为核心的轻量级Java EE企业开发平台。
(2)以EJB3+JPA为核心的经典Java EE开发平台。
- Spring
- 是一个开源框架.
- Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.
- Spring 是一个 IOC(DI) 和 AOP 容器框架.
Spring Boot概述
spring boot的优势就是“习惯优于配置”(将原来项目中大量的配置内容,全部剔除掉,让你无须手动进行配置,即可轻松开发)的理念让项目快速运行起来,使用spring boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用spring boot你可以不用或者只需要很少的spring配置
习惯优于配置:若所用工具的约定和你的期待相符,就可以省去配置;不符合的话,就要通过相关的配置来达到你所期待的结果
- spring boot的优点:
A:快速构建项目
使用Spring Boot,只需20行左右的代码即可生成一个基本的Spring Web应用, Spring Boot提供自动化配置,使用Spring Boot,你只需编写必要的代码和配置必须的属性
B:对主流开发框架的无配置集成
C:项目可独立运行,无须外部依赖Servlet容器
内置了tomcat,构建的Jar包通过java -jar就可以直接运行。
D:极大的提高了开发、部署效率
E:与云计算、微服务的天然集成
Spring Boot非常契合微服务的概念,可以结合Spring Boot与Spring Cloud和Docker技术来构建微服务并部署到云端
Spring框架核心概念
Spring框架总览:
Java EE逻辑结构图:
Spring是一种非常完整的技术,即使只使用Spring技术也能实现项目的开发。但是在实际开发中我们只是让Spring做业务逻辑层,因为Spring的业务处理能力是非常强大的。简单来说,Spring就是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
控制反转(IoC=Inversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
- IoC也称为好莱坞原则(Hollywood Principle):“Don’t call us, we’ll call you”。即,如果大腕明星想演节目,不用自己去找好莱坞公司,而是由好莱坞公司主动去找他们(当然,之前这些明星必须要在好莱坞登记过)。
- 依赖注入:即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。
在Spring中,bean是由Spring IoC容器来进行实例化、组装并受其管理的对象。Bean和它们 之间的依赖关系反映在窗口使用的配置元数据中。
- 面向接口编程
-
什么是接口?
接口定义了行为的协议,这些行为在继承接口的类中实现。
接口定义了很多方法,但是没有实现它们。类履行接口协议并实现所有定义在接口中的方法。
接口是一种只有声明没有实现的特殊类。 -
接口的优点:
Client不必知道其使用对象的具体所属类。
一个对象可以很容易地被(实现了相同接口的)的另一个对象所替换。
对象间的连接不必硬绑定(hardwire)到一个具体类的对象上,因此增加了灵活性。
松散藕合(loosens coupling)。
增加了重用的可能性。 -
接口的缺点:
设计的复杂性略有增加
-
- Spring 支持 3 种依赖注入的方式
- 属性注入
- 构造器注入
- 工厂方法注入(很少使用,不推荐)
- Spring Boot中的bean及依赖注入
- 使用注解注册bean
@Component , @Repository , @ Controller ,@Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。 - 使用注解注入bean
配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
@Autowired可以标注在属性上、方法上和构造器上,来完成自动装配。默认是根据属性类型,spring自动将匹配到的属性值进行注入。 - 启用自动配置
在主类(启动类)中使用@SpringBootApplication
很多Spring Boot开发者总是在主类上添加@Configuration、@EnableAutoConfiguration和@ComponentScan。因为这些注解经常一起使用,Spring Boot提供了一个方便的替代方案:@SpringBootApplication。
@SpringBootApplication =@ Configuration +@ EnableAutoConfiguration+@ ComponentScan ,
这一个注解代替了这三个注解;
@Configuration 和 @bean 注入定义了一个实体类;
@EnableAutoConfiguration 启用了上下文自动配置;
@ComponentScan 扫描指定的包,若未指定值,默认扫包范围:被注释的 class所在的包;
- 使用注解注册bean
IOC操作Bean管理,bean管理是指(1)spring创建对象 (2)spring注入属性。当我们在将一个类上标注@Service或者@Controller或@Component或@Repository注解之后,spring的组件扫描就会自动发现它,并且会将其初始化为spring应用上下文中的bean
Spring MVC模式
- MVC模式完全实现了页面表示和业务逻辑的分离。
- MVC模式的优势之一就在于三层各施其职,互不干涉。
- MVC模式也有它的缺点,其一就是由于它没有明确的定义,所以完全理解MVC并不容易。
- 基于Spring Boot的MVC模式
在 Spring Boot MVC 中,Web 自动化配置会帮你减少上面的步骤。默认使用的视图是 ThymeLeaf,
- 编写预定义的处理请求控制器
- 编写默认 ThymeLeaf 视图对象
- 控制器是控制请求接收和负责响应到视图的角色,接收和处理客户端的请求
spring通过注解控制器类,加载特定的控制器。
视图技术
Thymeleaf最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个Web应用
- jsp
优点:
1、功能强大,可以写java代码
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广,丰富的第三方jsp标签库
5、性能良好。jsp编译成class文件执行,有很好的性能表现
缺点:
由于可以编写java代码,耦合性高,如使用不当容易破坏mvc结构。 - thymeleaf
优点:
1、页面可被浏览器正确显示
2、开发者只需将标签添加到属性中
3、扩展性非常好,可以自定义模板属性集合
4、官方标准,用户群广,丰富的第三方jsp标签库
5、性能比jsp好,SpringBoot 官方推荐使用
缺点:
模板必须符合xml 规范。
- th:each迭代循环
1)th:each中迭代对象的类型
迭代对象可以是java.util.List,java.util.Map,数组等数据类型;
2)th:each循环迭代的基本语法
th:each="obj,iterStat:${objList}”
3)使用循环迭代的常用html标签元素有哪些?
可以在div、tr、li等标签元素中使用;
数据持久化
ORM基本概念
对象关系映射(Object Relational Mapping,简称ORM)模式是为了解决面向对象和关系数据库存在的互不匹配的现象的技术。
换言之,ORM是通过使用描述对象和数据库之间映射的元数据,把程序中的对象自动持久化到关系数据库中。
ORM和关系型数据库 构造 伪面向对象数据库系统
ORM把数据库映射成对象
JPA简介
Java Persistence API,就是java持久化api。
JPA是ORM规范,Hibernate、TopLink等是JPA规范的具体实现,这样的好处是开发者可以面向JPA规范进行持久层的开发,而底层的实现则是可以切换的。Spring Data Jpa则是在JPA之上添加另一层抽象(Repository层的实现),极大地简化持久层开发及ORM框架切换的成本。
JPA组成:
- 实体类
- 实体是轻量级的持久化域对象。
- 通常,实体表示关系数据库中的表,并且每个实体实例对应于该表中的行(记录-》对象)
- 实体的主要编程工件是实体类,尽管实体可以使用辅助类
Spring -Data-JPA
MyBatis
流程图
软件架构模式
体系结构简称为架构或构架
软件架构的基本概念
软件架构也称为软件体系结构。
- 软件体系结构定义了软件局部和总体 计算部件的构成,以及这些部件之间的相互作用关系。
体系结构=组件+连接件+约束
常用软件架构
单体结构
分层架构
微服务集群结构
负载均衡:
session共享:
分布式结构
微服务架构
serverless
前后端分离
前后端未分离
前后端半分离
前后端分离
docker
docker相比虚拟机更为轻量,不会去模拟底层硬件,只会为每一个应用提供一个完全隔离的运行环境
docker常用操作:
A)获取镜像 docker pull ***
B)删除指定镜像 docker rmi ***
C)查看所有镜像 docker images
D)新建并启动容器 docker run ***
E)启动容器 docker start ***
F)停止容器 docker stop ***
nginx
nginx基础知识
nginx常用命令
nginx核心功能配置
- 正向代理vs反向代理:
- 正向代理(代理的客户端client):人可以感知到,但服务器感知不到
- 反向代理(代理的服务端server):人不可以感知到,但服务器可以感知到
redis
redis简介
redis数据类型和操作
redis在项目中的实践应用
nacos
微服务架构介绍
springCloud介绍
springCloud Alibaba简介
springCloud Alibaba实践
这篇关于软件体系结构复习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!