架构
来自智得网
简介
架构最早来自建筑学理论,代表建筑的基础框架。建筑的基础框架决定了建筑的内部构造,外观,是建筑最基础的部分,建筑的架构一般由组件以及连接件构成。例如著名的科隆大教堂是典型的哥特式建筑,后来被软件行业引入,用来解决软件研发过程中的问题。
针对不同的分层以及不同的域,都有不同的架构理论,关注不同的维度。
针对软件不同的生命周期,架构有工程架构,模块架构,代码架构,测试架构,部署架构等,更宏观的还有企业架构。
工程架构中又会有纵向架构和横向架构,纵向架构包括模块切分,例如领域驱动架构为微服务的拆分提供了方法论。横向的分层架构有MVC架构,接入层/逻辑层/存储层架构等。
分层架构
软件大的分层架构可以分为CS架构,web架构两类,CS架构是指Client-Server,在传统的桌面应用程序比较流行,目前的移动端APP也可以称为client,web架构是指不需要安装程序,通过浏览器来实现软件界面的方式。
无论是CS架构,还是web架构,都有server端,server端内部也有不同的分层,最为有代表性是MVC架构。
MVC
MVC架构将server端分为view层,controller层,model层,view层一般指视图层,视图包括用户界面以及直接面向client,web提供的http接口。
view
view层一般有如下特点:
- view层直接面向终端用户,所以需要聚合的数据量较大,一般会提供较粗粒度的接口,可复用的程度较低。
- view层通过查询模型获取数据,然后返回给前端。
model
- model层用于存储,修改,查询数据
controller
- controller层是用于请求的入口,主要作用是把指令传递给model层进行数据的变更,或者查询数据之后,通过合适的View层模版进行数据展示。
DDD
DDD架构的分层思想是强化实体的概念,通过充血模型把逻辑固化在实体,避免mvc的controller层过度膨胀。
模块设计
和单体应用不同的是,微服务架构往往把系统拆解成若干个逻辑/物理单元。
服务的架构需要是无状态的服务。
语言/框架选型
存储设计
服务治理
部署架构