微軟官方教學地址 :C# 檔案 - 入門、教學、參考。 | Microsoft Learn
B站視訊:
微軟官方教學地址:使用 ASP.NET Core 建立 Web API | Microsoft Learn
.NET 6教學,.Net Core 2022視訊教學,楊中科主講_嗶哩嗶哩_bilibili
Blazor 是一個使用 Blazor 生成互動式使用者端 Web UI 的框架:
使用 .NET 進行使用者端 Web 開發可提供以下優勢:
Blazor UI框架推薦
ORM簡介
物件關係對映(Object Relational Mapping,簡稱ORM)模式是一種為了解決物件導向與關聯式資料庫存在的互不匹配的現象的技術。
簡單的說,ORM是通過使用描述物件和資料庫之間對映的後設資料,將程式中的物件自動持久化到關聯式資料庫中。
那麼,到底如何實現持久化呢?一種簡單的方案是採用寫死方式,為每一種可能的資料庫存取操作提供單獨的方法。
這種方案存在以下不足:
1.持久化層缺乏彈性。一旦出現業務需求的變更,就必須修改持久化層的介面
2.持久化層同時與域模型與關聯式資料庫模型繫結,不管域模型還是關聯式資料庫模型發生變化,毒藥修改持久化曾的相關程式程式碼,增加了軟體的維護難度。
是一款功能強大的物件關係對映(O/RM)元件,支援 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin✨
Entity Framework (EF) Core 是輕量化、可延伸、開源和跨平臺版的常用 Entity Framework 資料存取技術。(作者推薦efcore是由微軟官方維護)
Dapper是由Stack Overflow背後的團隊建立的micro-ORM。Dapper 是 .NET 的簡單物件對映器,在速度方面擁有 Micro ORM 之王的稱號,幾乎與使用原始 ADO.NET 資料讀取器一樣快。ORM是一個物件關係對映器,負責資料庫和程式語言之間的對映。
SqlSugar 是一款 老牌 .NET 開源ORM框架,由果糖巨量資料科技團隊維護和更新
SQL Server是由Microsoft開發和推廣的關聯式資料庫管理系統(DBMS);
SQL Server使用方便,伸縮性好與相關軟體整合程度高;
SQL Server 資料庫引擎為關係型資料和結構化資料提供了更安全可靠的儲存功能。
MySQL 是最流行的關係型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關聯式資料庫管理系統)應用軟體之一。
PgSQL PostgreSQL 的歷史簡介. 現在被稱為 PostgreSQL 的物件- 關係型資料庫管理系統 (有一段時間被稱為 Postgres95)是從伯克利寫的 POSTGRES 軟體包發展而來的。. 經過十幾年的發展, PostgreSQL 是世界上可以獲得的最先進的 開放原始碼 的 資料庫系統 , 它提供了多版本並行控制,支援幾乎所有 SQL 構件 (包括 子查詢 , 事務 和使用者定義型別和函數), 並且可以獲得非常廣闊範圍的(開發)語言繫結(包括 C,C++,Java,perl,tcl,和 python)
中介軟體是介於應用系統和系統軟體之間的一類軟體,它使用系統軟體所提供的基礎服務(功能),銜接網路上應用系統的各個部分或不同的應用,能夠達到資源共用、功能共用的目的。它並沒有很嚴格的定義,但是普遍接受IDC的定義:中介軟體是一種獨立的系統軟體服務程式,分散式應用軟體藉助這種軟體在不同的技術之間共用資源,中介軟體位於客戶機伺服器的作業系統之上,管理計算資源和網路通訊。從這個意義上可以用一個等式來表示中介軟體:中介軟體=平臺+通訊,這也就限定了只有用於分散式系統中才能叫中介軟體,同時也把它與支撐軟體和實用軟體區分開來。
MongoDB 是一個基於分散式檔案儲存的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可延伸的高效能資料儲存解決方案。
MongoDB 是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。
REmote DIctionary Server(Redis) 是一個由 Salvatore Sanfilippo 寫的 key-value 儲存系統,是跨平臺的非關係型資料庫。
Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協定、支援網路、可基於記憶體、分散式、可選永續性的鍵值對(Key-Value)儲存資料庫,並提供多種語言的 API。
Redis 通常被稱為資料結構伺服器,因為值(value)可以是字串(String)、雜湊(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等型別。
RabbitMQ是實現了高階訊息佇列協定(AMQP)的開源訊息代理軟體(亦稱訊息導向中介層)。RabbitMQ伺服器是用Erlang語言編寫的,而叢集和故障轉移是構建在開放電信平臺框架上的。所有主要的程式語言均有與代理介面通訊的使用者端庫。
Apache ActiveMQ是Apache軟體基金會所研發的開放原始碼訊息中介軟體;由於ActiveMQ是一個純Java程式,因此只需要作業系統支援Java虛擬機器器,ActiveMQ便可執行。
用於分散式系統的應用程式效能監視工具,特別為微服務、雲原生和基於容器(Kubernetes)架構設計。
Consul是微服務架構中,解決服務發現、設定中心的分散式中介軟體。
Consul是HashiCorp公司推出的開源工具,Consul由Go語言開發,部署起來非常容易,只需要極少的可執行程式和組態檔,具有綠色、輕量級的特點。Consul是分散式的、高可用的、 可橫向擴充套件的用於實現分散式系統的服務發現與設定。
Kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以處理消費者規模的網站中的所有動作流資料。 這種動作(網頁瀏覽,搜尋和其他使用者的行動)是在現代網路上的許多社會功能的一個關鍵因素。 這些資料通常是由於吞吐量的要求而通過處理紀錄檔和紀錄檔聚合來解決。 對於像Hadoop的一樣的紀錄檔資料和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的訊息處理,也是為了通過叢集機來提供實時的消費。
Dapr 是一個可移植的、事件驅動的執行時,它使任何開發人員能夠輕鬆構建出彈性的、無狀態和有狀態的應用程式,並可執行在雲平臺或邊緣計算中,它同時也支援多種程式語言和開發框架。
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協定開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。
Compose 是用於定義和執行多容器 Docker 應用程式的工具。通過 Compose,您可以使用 YML 檔案來設定應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 檔案設定中建立並啟動所有服務。
Drone是為繁忙的開發團隊提供的自助持續整合平臺。
CI 持續整合(Continuous Integration)
協同開發是目前主流的開發方式,也就是多位開發人員可以同時處理同一個應用的不同模組或者功能。
但是,如果企業計劃在同一天,將所有開發分支程式碼整合在一起,最終可能會花費很多時間和進行很多重複勞動,費事費力。因為程式碼衝突是難以避免的。
如果開發人員原生的環境和線上不一致的話,那麼這個問題就更加複雜了。
持續整合(CI)可以幫助開發者更加方便地將程式碼更改合併到主分支。
一旦開發人員將改動的程式碼合併到主分支,系統就會通過自動構建應用,並執行不同級別的自動化測試(通常是單元測試和整合測試)來驗證這些更改,確保這些更改沒有對應用造成破壞。
如果自動化測試發現新程式碼和現有程式碼之間存在衝突,CI 可以更加輕鬆地快速修復這些錯誤。
CD 持續交付(Continuous Delivery)
CI 在完成了構建、單元測試和整合測試這些自動化流程後,持續交付可以自動把已驗證的程式碼釋出到企業自己的儲存庫。
持續交付旨在建立一個可隨時將開發環境的功能部署到生產環境的程式碼庫。
在持續交付過程中,每個步驟都涉及到了測試自動化和程式碼釋出自動化。
在流程結束時,運維團隊可以快速、輕鬆地將應用部署到生產環境中。
CD 持續部署(Continuous Deployment)
對於一個完整、成熟的 CI/CD 管道來說,最後的階段是持續部署。
它是作為持續交付的延伸,持續部署可以自動將應用釋出到生產環境。
實際上,持續部署意味著開發人員對應用的改動,在編寫完成後的幾分鐘內就能及時生效(前提是它通過了自動化測試)。這更加便於運營團隊持續接收和整合使用者反饋。
總而言之,所有這些 CI/CD 的關聯步驟,都極大地降低了應用的部署風險。
不過,由於還需要編寫自動化測試以適應 CI/CD 管道中的各種測試和釋出階段,因此前期工作量還是很大的。
一種軟體開發技術- 面向服務的體系結構(SOA)架構樣式的一種變體,它提倡將單一應用程式劃分成一組小的服務,服務之間互相協調、互相配合,為使用者提供最終價值。每個服務執行在其獨立的程序中,服務與服務間採用輕量級的通訊機制互相溝通(通常是基於HTTP的RESTful API)。每個服務都圍繞著具體業務進行構建,並且能夠獨立地部署到生產環境、類生產環境等。另外,應儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據上下文,選擇合適的語言、工具對其進行構建。
域驅動設計 (DDD) 提倡基於與用例相關的真實業務來構建模型。 在構建應用程式的上下文中,DDD 用域來描述問題。 它將獨立的問題區域描述為界定的上下文(每個界定的上下文關聯一個微服務),並強調使用一種通用的語言來討論這些問題。 它還提出許多技術概念和模式,如具有充血模型的域實體(無貧血模型)、值物件、聚合和聚合根(或根實體)規則,用於支援內部實現。 本部分介紹這些內部模式的設計和實現。
有時這些 DDD 技術規則和模式被認為是障礙,因為會導致實施 DDD 方法時的學習曲線較陡峭。 但重要的並非模式本身,而是如何根據業務問題組織程式碼,並使用相同的業務術語(通用語言)。 此外,只有在需要實現採用重要業務規則的複雜微服務時,才應使用 DDD 方法。 較為簡單的功能,如 CRUD 服務,可使用較為簡單的方法來管理。
設計和定義微服務時,最關鍵的任務是界定邊界。 藉助 DDD 模式,可瞭解域中的複雜性。 對於每個界定的上下文的域模型,需確定和定義為域建模時所需的實體、值物件和聚合。 生成和優化限定在某個邊界內的域模型,該邊界用於定義上下文。 如果是微服務的形式,這會十分明晰。 這些邊界內的元件最終會成為微服務,但在某些情況下,BC 或業務微服務可由多個物理服務組成。 DDD 與邊界相關,微服務也是如此。
對於讀取/查詢,來自 eShopOnContainers 參照應用程式的訂購微服務獨立於 DDD 模型和事務區域實現查詢。 此實現主要是因為查詢的需要和事務的需要有很大不同。 寫入的執行事務必須符合域邏輯。 另一方面,查詢是冪等的,可以與域規則分離。
ABP是一個開源且檔案友好的應用程式框架。ABP不僅僅是一個框架,它還提供了一個最徍實踐的基於領域驅動設計(DDD)的體系結構模型,可以支援.net framework和.net core兩種技術流派。
ABP 框架特點
ABP 框架特別的功能
全新的.NET現代應用開發,提供分散式應用執行時–基於Dapr雲原生最佳實踐,能夠快速實現分散式、微服務、DDD,SaaS等現代應用開發
OpenIddict是什麼?
OpenIddict旨在提供一個通用的解決方案,在任何ASP中實現OpenID連線使用者端、伺服器和令牌驗證支援。NET Core 2.1(及更高版本)應用程式。ASP。NET 4.6.1(及更高版本)應用程式也得到了完全的支援,這要歸功於原生的Microsoft。Owin 4.2整合。
OpenIddict完全支援程式碼/隱式/混合流、使用者端憑證/資源所有者密碼授予和裝置授權流。
OpenIddict原生支援實體框架核心、實體框架6和MongoDB,並且可以實現自定義儲存以支援其他提供者。
歡迎大佬繼續補充, 壯大 dotnet 生態!
GitHub 地址: dotent入門到高階
來自 token 的分享
技術交流群: 737776595