日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET 云原生架构师训练营(设计原则设计模式)--学习笔记

發布時間:2023/12/4 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET 云原生架构师训练营(设计原则设计模式)--学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?點擊上方“DotNet NB”關注公眾號

回復“1”獲取開發者路線圖

學習分享?丨作者?/?鄭?子?銘????

這是DotNet?NB?公眾號的第180篇原創文章

目錄

  • 設計原則

  • 設計模式

設計原則

  • DRY (Don't repeat yourself 不要重復)

  • KISS (Keep it stupid simple 簡單到傻子都能看懂)

  • YAGNI (You Aren't Gonna Need It 你不會需要它的)

  • CCP 共同閉包

  • CRP 共同復用

  • 高內聚、低耦合

  • 慣例優先配置

  • SCO 關注點分離

  • ADP 無依賴環

  • SOLID 面向對象設計原則

SOLID

  • S - Single-responsiblity Principle 單一職責

  • O - Open-closed Principle 對修改關閉,對擴展開放

  • L - Liskov Substitution Principle 里氏替換

  • I - Interface Segregation Principle 接口隔離

  • D - Dependency Inversion Principle 依賴反轉

設計模式

模式通常是指那些在一些相同的領域和上下文內,解決同樣的問題。所以一定要結合具體的使用場景去了解設計模式

使用設計模式的目的是為了可重用代碼,提高代碼的可擴展性和可維護性

設計模式主要分為三種類型:創建型,結構型,行為型

創建型模式關注點是如何創建對象,其核心思想是要把對象的創建和使用相分離,這樣使得兩者能相對對立地變換

結構型模式主要涉及如何組合各種對象以便獲得更好、更靈活的結構。雖然面向對象的繼承機制提供了最基本的子類擴展父類的功能,但結構型模式不僅僅簡單地使用繼承,而更多地通過組合與運行期的動態組合來實現更靈活的功能

行為型模式主要涉及算法和對象間的職責分配。通過使用對象組合,行為型模式可以描述一組對象應該如何協作來完成一個整體任務

類型模式
創建型工廠方法:Factory Method;抽象工廠:Abstract Factory;建造者:Builder;原型:Prototype;單例:Singleton
結構型適配器;橋接;組合;裝飾器;外觀;享元;代理
行為型責任鏈;命令;解釋器;迭代器;中介;備忘錄;觀察者;狀態;策略;模板方法;訪問者

工廠方法:Kestrel Server 從網絡監聽

意圖:定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類中

何時使用:有多種類型需要根據特定的場景進行創建實例時(或單個對象的創建過程比較復雜時)

外觀模式:Kestrel Server 到請求執行調度

為子系統中的一組接口提供一個一致的界面。Facade 模式定義了一個高層接口,這個接口使得這一子系統更加容易使用

符合單一職責原則,不要將過多的邏輯封裝在 TransportManager 類中

KISS 原則,KEEP IT Stupid Simple

源碼

https://github.com/dotnet/aspnetcore/

目錄 Microsoft.AspNetCore.Server.Kestrel.Core 下面的 KestrelServerImpl 類中有一個綁定方法

options.EndPoint = await _transportManager.BindAsync(options.EndPoint, connectionDelegate, options.EndpointConfig, onBindCancellationToken).ConfigureAwait(false);

這個方法是通過 TransportManager 實現的,它是 Facade 模式,所以直接用了一個類來實現

在 TransportManager 的 StartAcceptLoop 方法中實現了綁定的功能,其實就是調用了其他的幾個類

private void StartAcceptLoop<T>(IConnectionListener<T> connectionListener, Func<T, Task> connectionDelegate, EndpointConfig? endpointConfig) where T : BaseConnectionContext {var transportConnectionManager = new TransportConnectionManager(_serviceContext.ConnectionManager);var connectionDispatcher = new ConnectionDispatcher<T>(_serviceContext, connectionDelegate, transportConnectionManager);var acceptLoopTask = connectionDispatcher.StartAcceptingConnections(connectionListener);_transports.Add(new ActiveTransport(connectionListener, acceptLoopTask, transportConnectionManager, endpointConfig)); }

在 TransportManager 的綁定方法中使用了 _transportFactory,它就是 IConnectionListenerFactory

var transport = await _transportFactory.BindAsync(endPoint, cancellationToken).ConfigureAwait(false);

IConnectionListenerFactory 轉到實現可以看到 SocketTransportFactory,它在 Transport.Sockets 中

除了 SocketTransportFactory,還有 QuicTransportFactory,它是 HTTP/3 協議的監聽器

多種實現最后都由 TransportManager 進行統一的管理

工廠方法符合開閉原則,后期有新的類型的時候,只需要添加新的類型和對應的工廠即可。不需要對代碼邏輯進行修改

課程鏈接

.NET云原生架構師訓練營講什么,怎么講,講多久

推薦閱讀:

《Kubernetes全棧架構師(Kubeadm高可用安裝k8s集群)--學習筆記》

《.NET 云原生架構師訓練營(模塊一 架構師與云原生)--學習筆記》

《.NET Core開發實戰(第1課:課程介紹)--學習筆記》

總結

以上是生活随笔為你收集整理的.NET 云原生架构师训练营(设计原则设计模式)--学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。