.NET 云原生架构师训练营(系统架构)--学习笔记
目录
- 对外展现的功能
- 内部功能
- 功能交互与价值通路
- 系统架构
目标
- 认识系统的价值通路
- 认识功能架构,通过把功能结构与形式结构结合来描述系统架构
受益原则
好的架构必须使人受益,要想把架构做好,就要专注于功能的涌现,使得系统把它的主要功能通过跨越系统边界的接口对外展示出来
对外展现的功能
ASP .NET Core 的使用者是程序员,最终的受益是老板

上一讲对 ASP .NET Core 的描述是文字性描述,是一种非结构性描述,不是很准确,因为每个人对文字的理解都不一样
ASP .NET Core 对外展现的功能和价值可以主要拆分为两个过程:启动和执行
启动的时候有目标,就是代码;执行的时候有请求和响应
如何描述一个功能

一个过程通常会改变操作数对象的状态(包括创建、销毁)

功能需要由一个形式来进行承载,有时候我们也称之为工具对象(你的代码)
比如烧水需要一个烧水壶,但是烧水壶没办法提供热水,这个系统通过把水加热给我提供热水
加热是过程,水是操作数对象,通过加热的过程改变了水的温度,实现了整个系统的目标,为我提供热水
这里面我们可以发现加热需要一个工具对象,使用什么进行加热,燃气灶、柴火还是煤气
功能就是通过一个工具对象实施一个过程来改造一个目标操作数对象的一些状态来实现一些目标
ASP .NET Core 对外展现的功能和价值
| 与价值有关的操作数 | 与价值有关的属性及状态 | 与价值有关的过程 | 系统的形式 |
|---|---|---|---|
| web 请求 | web 请求响应体 | 影响/改变 | 带自托管的 WEB FRAMEWORK |
- 系统所带来的利益与它对外展现的功能有关
- 系统中的过程,会对与价值有关的操作数进行操控,并以此产生利益
内部功能
专注于系统对外展现的主要功能,也就是会对与价值有关的操作数进行创建、销毁、或影响的那个过程
| 主要内部操作数 | 主要内部过程 |
|---|---|
| tcp 网络请求 | 接收 |
| c# 可识别的请求 | 写入 Response |
| tcp 网络 | 格式化 |
如何找到内部过程
首先找到对外展现的功能,对外展现的功能里面必然包含一个操作数对象,这个操作数对象在内部必然会经过若干个过程的影响,最后实现了整体的功能
所以和最有价值的操作数对象相关的内部过程就可以提炼出来,形成一连串的动作,然后形成价值通路
比如电商系统中,核心的功能是完成用户购物,与价值有关的操作数是订单对象
从外部展现来看是用户创建订单,订单发货
从内部来看就会围绕订单对象,创建订单,确认订单,订单打通,订单发货,订单签收
功能交互与价值通路
功能架构:过程之间共享、或交互的操作数 = 功能交互功能与功能交互,合起来构成功能架构
价值通路:功能架构中包含价值通路,使得价值通路可以沉着这条通路而传递。利益就是沿着这条通路向下进行的,并最终演化为价值

不在价值通路上的东西
- 形式实体,形式是某个功能的工具,不在功能架构之内
- 对外展现的次要功能、提供支持的过程和操作数
- 对良好的外部功能起不到涌现作用的过程及操作数
- 对系统起到支撑作用的其它过程和形式
次要外部功能及内部功能
必须展现出与价值有关的主要功能,以体现该系统存在的意义,除此之外,它还可能展现出一些与价值有关的次要功能

系统架构

这是一个形式结构,SERVER 是形式实体

这是功能架构,接收是一个过程,C#可识别的请求信息是一个操作数对象
架构是形式结构和功能架构的结合

这是一个动静结合的系统架构,既会告诉你系统对外的一些功能和价值是如何实现的,同时也会告诉你它有哪些内部的实体来满足的
总结
- 系统架构由功能架构与形式元素及形式架构相结合而成
- 系统架构是通过系统结构和行为的组合使系统提供功能
- 功能就是系统的顶层过程,系统架构(结构-行为组合)用于支持系统执行其顶层过程,进而使系统实现其功能为客户创造价值
架构模式
模式:描述的是一种关系(类与类的关系、组件与组件的关系),并且这种关系是可复用的!
特定上下文:说明这种关系的适用场景是有限制的,只能在特定场景下能适用!
常见问题:说明这种关系是解决某个问题或某类问题的解决方案。
- Layered pattern
- Client-server pattern
- Master-slave pattern
- Pipe-filter pattern
- Broker pattern
- Peer-to-peer pattern
- Event-bus pattern
- Model-view-controller pattern
- Blackboard pattern
- Interpreter pattern
作业
在 1.1 的作业中,你将你认识的那个系统进行了形式上的分解。
请进一步思考,该系统对外提供的功能是通过什么样的价值通路实现的?
请画出该系统的价值通路(通过功能架构图来体现价值通路)。
把功能架架构 与1.1中的形式相结合,形成架构图,请画出该系统的架构图。
课程链接
https://appsqsyiqlk5791.h5.xiaoeknow.com/v1/course/video/v_5f39bdb8e4b01187873136cf?type=2

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
如有任何疑问,请与我联系 (MingsonZheng@outlook.com) 。
.NET 云原生架构师训练营(系统架构)--学习笔记的更多相关文章
- Java架构师-十项全能学习笔记(1)
Java架构师-十项全能学习笔记(1) @Configuration @EnableStateMachine public class OrderStateMachineConfig extends ...
- 向架构师进军--->系统架构设计基础知识
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 在讲解系统架构设计之前,有必要补充一下架构相关的概念,因此本博文主要讲述架构.架构师 ...
- Java架构师之路 Spring学习笔记(一) Spring介绍
前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...
- .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记
目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...
- IT架构师介绍-软件架构设计学习第一天(非原创)
文章大纲 一.架构师定义二.架构师分类与具备能力三.研发人员发展的技术路线四.架构师知识体系五.参考文章 一.架构师定义 什么是架构师,这个聊架构话题时永恒的问题.每个公司对架构师的定位也有所 ...
- 打造云原生大型分布式监控系统系列文章-腾讯工程师roc
附上本系列文章链接 打造云原生大型分布式监控系统(一): 大规模场景下 Prometheus 的优化手段 打造云原生大型分布式监控系统(二): Thanos 架构详解 打造云原生大型分布式监控系统(二 ...
- 架构师之路->架构师思维的培养
公司的CMS(综合赋码管理系统)是WINFORM的CS架构.这套系统的架构师换了3届,到现在已经几年没有架构师了.本来入职时,岗位目标就是这个“自动化架构师”. 后来和领导达成共识先争取成为储备架构师 ...
- .NET 云原生架构师训练营(权限系统 RGCA 架构设计)--学习笔记
目录 项目核心内容 实战目标 RGCA 四步架构法 项目核心内容 无代码埋点实现对所有 API Action 访问控制管理 对 EF Core 实体新增.删除.字段级读写控制管理 与 Identity ...
- .NET 云原生架构师训练营(建立系统观)--学习笔记
目录 目标 ASP .NET Core 什么是系统 什么是系统思维 系统分解 什么是复杂系统 作业 目标 通过整体定义去认识系统 通过分解去简化对系统的认识 ASP .NET Core ASP .NE ...
随机推荐
- springboot和springcloud版本上的选择
现在的springboot项目和cloud版本都是更新很快,但我们开发不是版本越新越好,我们要把版本对应起来,那么我们怎么去关联呢? springboot和springcloud不是越新越好,clou ...
- UOJ #129 / BZOJ 4197 / 洛谷 P2150 - [NOI2015]寿司晚宴 (状压dp+数论+容斥)
题面传送门 题意: 你有一个集合 \(S={2,3,\dots,n}\) 你要选择两个集合 \(A\) 和 \(B\),满足: \(A \subseteq S\),\(B \subseteq S\), ...
- Codeforces 1276F - Asterisk Substrings(SAM+线段树合并+虚树)
Codeforces 题面传送门 & 洛谷题面传送门 SAM hot tea %%%%%%% 首先我们显然可以将所有能够得到的字符串分成六类:\(\varnothing,\text{*},s, ...
- 模版 动态 dp
模版 动态 dp 终于来写这个东西了.. LG 模版:给定 n 个点的数,点有点权, $ m $ 次修改点权,求修改完后这个树的最大独立集大小. 我们先来考虑朴素的最大独立集的 dp \[dp[u][ ...
- Perl 语言入门6-9
---- 第6章 哈希----------- 简介 键值对.键和值都是任意标量,但键总是会被转换成字符串. 键唯一,值可重复. 应用场景:一组数据对应到另一组数据时. 如找出重复/唯一/交叉引用/查表 ...
- Anaconda3-更换为清华源后依旧报错CondaHTTPError: HTTP 000 CONNECTION FAILED
前言 今天发现换完清华源以后依旧报错 CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsi.. ...
- X-MagicBox-820的luatOS之路连载系列6
继上次用Qt实现了显示地图和MQTT通信之后(X-MagicBox-820的luatOS之路连载系列5),说是要研究下地图的开放接口,也看了标记点和线的方法(地图上自定义标记点和轨迹线的实现).这次就 ...
- euerka总结
一.euerka的基本知识 1. 服务治理 Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理 在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系 ...
- Freeswitch 安装爬坑记录1
2 Freeswitch的安装 2.1 准备工作 服务器安装CentOS 因为是内部环境,可以关闭一些防火墙设置,保证不会因为网络限制而不能连接 关闭防火墙 查看防火墙 systemctl statu ...
- 零基础学习java------day19-------定时器,线程面试题,Udp,Tcp
0. 定时器 0.1 概述: 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行,在jaa中,可以通过Timew和TimerTask类来实现定义调度的功能 0.2 Tim ...