.NET 云原生架构师训练营(建立系统观)--学习笔记
目录
- 目标
- ASP .NET Core
- 什么是系统
- 什么是系统思维
- 系统分解
- 什么是复杂系统
- 作业
目标
- 通过整体定义去认识系统
- 通过分解去简化对系统的认识
ASP .NET Core
- ASP .NET Core 是什么
- ASP .NET Core 是干什么的
- Host、Server、HostApplication 与 ASP .NET Core 是什么关系
- ASP .NET Core 和 .NET Core 是什么关系
ASP .NET Core 是什么
WEB FRAMEWORK(形式)
ASP .NET Core 是干什么的
帮助我们快速地构建跨平台的、现代化的、高性能的、面向云的WEB应用程序(功能)
形式 + 功能 = 系统
你身边看到的那些系统:
形式 | 功能 |
---|---|
锤子 | 钉钉子 |
集装箱 | 存储货物 |
飞机 | 快速传输人或物 |
结论一:系统具有形式和功能的属性
Host、Server、HostApplication 与 ASP .NET Core 是什么关系
它们是构成 ASP .NET Core 的一部分
形式 | 功能 |
---|---|
Host | 管理资源 |
Server | 监听和处理网络 |
HostApplication | 封装 HTTP 处理程序 |
结论二:系统由若干个(实体/部件/模块)组成,每个子实体也同时具有形式和功能属性,能够独立成为一个系统
一个集装箱可以被拆解成多个部分,每一个部分都有它的功能和属性
ASP .NET Core + Your code = 一个新系统
原则一:系统的涌现原则
系统的整体功能大于各部件之和
- | 预期的 | 非预期的 |
---|---|---|
良好的涌现 | 能处理HTTP请求 | 很适合云原生的场景 |
不良的涌现 | 会受到攻击,并发高的时候会瘫痪 | 程序员写的异常 |
非预期的良好的涌现:设计的时候没想到还能这样使用
ASP .NET Core 和 .NET Core 是什么关系
ASP .NET Core 是 .NET Core 的一部分,负责 WEB 这一类应用程序的处理
原则二:整体原则
每个系统都作为某一个或某些个大系统的一小部分而运作,同时,每个系统中也包含一些更小的系统
例如在设计一个椅子的时候,可以把椅子放到一个房间里面去考虑,把房间放到整个建筑里面去考虑,把建筑放到整个社区里面去考虑,社区放到整个城市规划里面去考虑
例如当我做 WEB FRAMEWORK 的时候只需要考虑 ASP .NET Core,但是当我需要做一个开发平台,比如 .NET Core 的时候,就不止是 ASP .NET Core 了,它只是这个平台上面开发 WEB 应用的东西。
除了 WEB 应用,开发平台还需要处理控制台应用 Console,移动端应用 Mobile,这个时候就会考虑有哪些组件除了给 ASP .NET Core 使用,同时还会给平层的或者更高层的使用。
这个时候就会抽象出 DI,Configuration,Logging 的这些部分,它们是 ASP .NET Core 的组成部分之一,但是同时它们也可以被 .NET Core 这个更大的系统里面的其他子系统使用
当我们以整体的原则去思考的时候,可以满足更大的系统的需要,但同时成本也会更低,设计质量也会更好,不然可能会每个子系统都设计一个 DI,Configuration,Logging,如果一开始就以一个整体去考虑,就不会这样
当我们需要为一个大系统添加一个小系统的时候,需要考虑整体可能会带来的影响,比如商城增加一个发放优惠券的功能,需要考虑优惠券对原来会员等级的优惠,平台的优惠有没有冲突,另外需要考虑优惠券对订单系统,库存系统,会员系统会不会有影响
所有的系统都是由实体组成,实体本身也是一个系统
所有的系统都可以作为一个实体,来构成一个更大的系统
什么是系统
- 系统拥有形式属性和功能属性
- 系统由实体组成,且系统功能大于部分功能之和
- 组成系统的实体同样具备形式与功能的属性,它们本身也是一个系统
什么是系统思维
把你的问题、你正在处理的事情当成一个系统来看待和进行分析
比如把培训当成一个系统来看待,它的功能是什么?功能是能够给系统的使用者带来价值的东西。
培训系统的用户是参加培训的人,它的功能是能够让参加培训的人学有所成,这是他们获得的价值和利益,很多系统列了功能清单,但是没办法描述清楚功能给用户带来的价值是什么。
系统分层:
- 一楼:理解系统是什么?理解其意义
- 二楼:预测某物发生变化后的情况
- 三楼:提供决策
- 四楼:用部件合成系统
系统分解
- 分解系统
- 层级分解
分解系统
分解是一种把实体分成小的部件或组成部分的方法。即分而治之。
比如培训系统可以拆分为理论课程、实践课程、答疑、直播、学员管理(打卡、作业、招生)
当把一个系统每一部分都拆开出来之后,每一部分都可以更加精细的设计,比如如何监督大家更好的学习(辅助系统)
层级分解
体系是用来理解并思考复杂系统的办法。是一种其实体均处在某个层次或某个位阶的系统。将分解的元素按体系进行排列,就形成了层级分解
系统思维的最高维度:用部件合成系统的方式设计系统
什么是复杂系统
- 简单系统(一层)
- 中等复杂(两层):每一个部件的子级不超过7个,可以往上浮动2个,即最多产生81个元素
- 复杂系统(三层):每一个部件的子级有9个,最多产生729个元素
作业
请用整体定义和体系分解两种方式提交你对于一个系统的认识(可以是当前你公司的系统,也可以是其它的一些你所了解的系统。)
系统A:
形式:
功能:
体系分解:
(请补充该系统的体系分解图,尽可能地分解到足够深的层次 )
课程链接
https://appsqsyiqlk5791.h5.xiaoeknow.com/v1/course/video/v_5f39bdb8e4b01187873136cf?type=2
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。
.NET 云原生架构师训练营(建立系统观)--学习笔记的更多相关文章
- .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...
- .NET 云原生架构师训练营(权限系统 RGCA 架构设计)--学习笔记
目录 项目核心内容 实战目标 RGCA 四步架构法 项目核心内容 无代码埋点实现对所有 API Action 访问控制管理 对 EF Core 实体新增.删除.字段级读写控制管理 与 Identity ...
- .NET 云原生架构师训练营(设计原则与模式)--学习笔记
在复杂系统的架构设计中引入设计原则与模式,能够极大降低复杂系统开发.和维护的成本 目录 几个问题 为什么要学习设计模式 优良架构设计的具体指标 理解复杂系统 面向对象思想(指导复杂系统的分析.设计.实 ...
- .NET 云原生架构师训练营(模块二 基础巩固 敏捷开发)--学习笔记
2.7.1 敏捷开发 敏捷介绍 敏捷的起源 敏捷软件开发宣言 敏捷开发十二原则 生命周期对比 敏捷开发的特点 敏捷的发展 敏捷的核心 敏捷的起源 2001年,17个老头子在一起一边滑雪,一边讨论工作, ...
- .NET 云原生架构师训练营(对象过程建模)--学习笔记
目录 UML OPM OPM优化 UML 1997年发布UML标准 主要域 视图 图 主要概念 结构 静态视图 类图 类.关联.泛化.依赖关系.实现.接口 用例视图 用例图 用例.参与者.关联.扩展. ...
- .NET 云原生架构师训练营(ASP .NET Core 整体概念推演)--学习笔记
演化与完善整体概念 ASP .NET Core 整体概念推演 整体概念推演到具体的形式 ASP .NET Core 整体概念推演 ASP .NET Core 其实就是通过 web framework ...
- .NET 云原生架构师训练营(模块二 基础巩固 MongoDB API重构)--学习笔记
2.5.8 MongoDB -- API重构 Lighter.Domain Lighter.Application.Contract Lighter.Application LighterApi Li ...
- .NET 云原生架构师训练营(模块二 基础巩固 消息队列 介绍与基础)--学习笔记
2.6.1 消息队列 -- 介绍 主要使用场景 队列的三种形式 消息队列的优点 主要使用场景 典型的异步处理 流量削锋 应用解耦 队列的三种形式 点对点 工作队列 发布与订阅 消息队列的优点 1.屏蔽 ...
- .NET 云原生架构师训练营(模块二 基础巩固 Scrum 核心)--学习笔记
2.7.2 Scrum 核心 3个工件 5个会议 5个价值观 3个工件 产品待办列表(Product Backlog) Sprint 待办列表(Sprint Backlog) 产品增量(Product ...
随机推荐
- [luogu7116]微信步数
先判定无解,当且仅当存在一个位置使得移动$n$步后没有结束且仍在原地 暴力枚举移动的步数,记$S_{i}$为移动$i$步(后)未离开范围的点个数,则恰好移动$i$步的人数为$S_{i-1}-S_{i} ...
- [luogu6185]序列
对于2操作,如果把这些操作看成边,那么对于某一个连通块内的若干个点,满足权值可以任意分配(证明:归纳,若n个点可以,那么先将新增的点调整好,再对原来n个点重新分配即可),因此可以将原图缩点,并将连通块 ...
- Python系列教程-详细版 | 图文+代码,快速搞定Python编程(附全套速查表)
作者:韩信子@ShowMeAI 教程地址:http://showmeai.tech/article-detail/python-tutorial 声明:版权所有,转载请联系平台与作者并注明出处 引言 ...
- IDEA修改XML注释风格
作为一个强迫症患者,每次想在xml文件用快捷键注释的时候,它自动生成的注释一直都是这样的:这令我非常难受,于是每次我都要把光标移到前面,然后再Tab以下,让它变成这样可是每次都这样,好麻烦啊,如果自己 ...
- 快来使用Portainer让测试环境搭建飞起来吧
Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台操作.Swarm集群和服 ...
- SSRF的原理和防范
背景 最近做的安全测评主要是SSRF,发现自己在这一块有挺大知识盲点,抓紧补一下. 1.介绍 SSRF(Server-Side Request Forgery:服务器端请求伪造),是一种攻击者利用服务 ...
- 【GS文献】植物全基因组选择育种技术原理与研究进展
目录 1. 优势杂交育种预测 2. GS育种原理与模型算法 岭回归和LASSO回归 贝叶斯方法 GBLUP和RRBLUP 偏最小二乘法 支持向量机/支持向量回归 其他方法 3. 模型预测能力验证 4. ...
- 【机器学习与R语言】6-线性回归
目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...
- R语言与医学统计图形-【10】ggplot2图形映射
ggplot2绘图系统--图形映射 颜色的映射. #aes中映射变量 ggplot()+geom_point(aes(x=carat,y=price,color='blue'),#color视为单一变 ...
- perl 转置矩阵
这里提供一个转置矩阵的perl脚本,R语言中的t()函数同样也能实现转置 1 use strict; 2 3 open A,"$ARGV[0]"; 4 5 my %ha; 6 my ...