對外展現的功能
内部功能
功能互動與價值通路
系統架構
目标
認識系統的價值通路
認識功能架構,通過把功能結構與形式結構結合來描述系統架構
受益原則
好的架構必須使人受益,要想把架構做好,就要專注于功能的湧現,使得系統把它的主要功能通過跨越系統邊界的接口對外展示出來
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/ ),不得用于商業目的,基于本文修改後的作品務必以相同的許可釋出。
如有任何疑問,請與我聯系 ([email protected]) 。