.NET 入門到高階路線

2023-02-01 21:06:02

.NET 入門到高階路線

  1. c# 基礎語法
  2. .NET Core 基礎知識
  3. ORM
  4. 關係型資料庫
  5. 中介軟體
  1. 運維

  2. 微服務

  3. 應用框架

CSharp基礎語法

微軟官方教學地址 :C# 檔案 - 入門、教學、參考。 | Microsoft Learn

b站視訊:

劉鐵猛《C#語言入門詳解》全集_嗶哩嗶哩_bilibili

C#語言入門詳解

.NET Core 基礎知識

微軟官方教學地址:使用 ASP.NET Core 建立 Web API | Microsoft Learn

.NET 6教學,.Net Core 2022視訊教學,楊中科主講_嗶哩嗶哩_bilibili

ASP.NETCore基礎知識概述

Blazor

Blazor 是一個使用 Blazor 生成互動式使用者端 Web UI 的框架:

  • 使用 C# 代替 JavaScript 來建立資訊豐富的互動式 UI。
  • 共用使用 .NET 編寫的伺服器端和使用者端應用邏輯。
  • 將 UI 呈現為 HTML 和 CSS,以支援眾多瀏覽器,其中包括移動瀏覽器。
  • 與新式託管平臺(如 Docker)整合。
  • 使用 .NET 和 Blazor 生成混合桌面和移動應用。

使用 .NET 進行使用者端 Web 開發可提供以下優勢:

  • 使用 C# 代替 JavaScript 來編寫程式碼。
  • 利用現有的 .NET 庫生態系統。
  • 在伺服器和使用者端之間共用應用邏輯。
  • 受益於 .NET 的效能、可靠性和安全性。
  • 使用開發環境(例如 Visual StudioVisual Studio Code)保持 Windows、Linux 或 macOS 上的工作效率。
  • 以一組穩定、功能豐富且易用的通用語言、框架和工具為基礎來進行生成。

Blazor 微軟官方檔案

Blazor 基礎教學

Blazor UI框架推薦
- Masa Blazor *作者推薦
- Bootstrap Blazor
- Ant Design Blazor
- MatBlazor
- Radzen Blazor

ORM

freesql

是一款功能強大的物件關係對映(O/RM)元件,支援 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin✨

EntityFrameworkCore

Entity Framework (EF) Core 是輕量化、可延伸、開源和跨平臺版的常用 Entity Framework 資料存取技術。

Dapper

Dapper是由Stack Overflow背後的團隊建立的micro-ORM。Dapper 是 .NET 的簡單物件對映器,在速度方面擁有 Micro ORM 之王的稱號,幾乎與使用原始 ADO.NET 資料讀取器一樣快。ORM是一個物件關係對映器,負責資料庫和程式語言之間的對映。

關係型資料庫

SQLServer

SQL Server是由Microsoft開發和推廣的關聯式資料庫管理系統(DBMS)
SQL Server使用方便,伸縮性好與相關軟體整合程度高;
SQL Server 資料庫引擎為關係型資料和結構化資料提供了更安全可靠的儲存功能。

MySql

MySQL 是最流行的關係型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關聯式資料庫管理系統)應用軟體之一。

PostgreSQL

PgSQL PostgreSQL 的歷史簡介. 現在被稱為 PostgreSQL 的物件- 關係型資料庫管理系統 (有一段時間被稱為 Postgres95)是從伯克利寫的 POSTGRES 軟體包發展而來的。. 經過十幾年的發展, PostgreSQL 是世界上可以獲得的最先進的 開放原始碼 的 資料庫系統 , 它提供了多版本並行控制,支援幾乎所有 SQL 構件 (包括 子查詢 , 事務 和使用者定義型別和函數), 並且可以獲得非常廣闊範圍的(開發)語言繫結(包括 C,C++,Java,perl,tcl,和 python)

中介軟體

中介軟體是介於應用系統和系統軟體之間的一類軟體,它使用系統軟體所提供的基礎服務(功能),銜接網路上應用系統的各個部分或不同的應用,能夠達到資源共用、功能共用的目的。它並沒有很嚴格的定義,但是普遍接受IDC的定義:中介軟體是一種獨立的系統軟體服務程式,分散式應用軟體藉助這種軟體在不同的技術之間共用資源,中介軟體位於客戶機伺服器的作業系統之上,管理計算資源和網路通訊。從這個意義上可以用一個等式來表示中介軟體:中介軟體=平臺+通訊,這也就限定了只有用於分散式系統中才能叫中介軟體,同時也把它與支撐軟體和實用軟體區分開來。

mongodb

MongoDB 是一個基於分散式檔案儲存的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可延伸的高效能資料儲存解決方案。

MongoDB 是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。

Reids

REmote DIctionary Server(Redis) 是一個由 Salvatore Sanfilippo 寫的 key-value 儲存系統,是跨平臺的非關係型資料庫。

Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協定、支援網路、可基於記憶體、分散式、可選永續性的鍵值對(Key-Value)儲存資料庫,並提供多種語言的 API。

Redis 通常被稱為資料結構伺服器,因為值(value)可以是字串(String)、雜湊(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等型別。

Rabbitmq

RabbitMQ是實現了高階訊息佇列協定(AMQP)的開源訊息代理軟體(亦稱訊息導向中介層)。RabbitMQ伺服器是用Erlang語言編寫的,而叢集和故障轉移是構建在開放電信平臺框架上的。所有主要的程式語言均有與代理介面通訊的使用者端庫。

ActiveMQ

Apache ActiveMQ是Apache軟體基金會所研發的開放原始碼訊息中介軟體;由於ActiveMQ是一個純Java程式,因此只需要作業系統支援Java虛擬機器器,ActiveMQ便可執行。

Kafka

Kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以處理消費者規模的網站中的所有動作流資料。 這種動作(網頁瀏覽,搜尋和其他使用者的行動)是在現代網路上的許多社會功能的一個關鍵因素。 這些資料通常是由於吞吐量的要求而通過處理紀錄檔和紀錄檔聚合來解決。 對於像Hadoop的一樣的紀錄檔資料和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行載入機制來統一線上和離線的訊息處理,也是為了通過叢集機來提供實時的消費。

運維

Docker

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協定開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。

DockerCompose

Compose 是用於定義和執行多容器 Docker 應用程式的工具。通過 Compose,您可以使用 YML 檔案來設定應用程式需要的所有服務。然後,使用一個命令,就可以從 YML 檔案設定中建立並啟動所有服務。

Drone

Drone是為繁忙的開發團隊提供的自助持續整合平臺。

CI/CD

CI 持續整合(Continuous Integration)
協同開發是目前主流的開發方式,也就是多位開發人員可以同時處理同一個應用的不同模組或者功能。

但是,如果企業計劃在同一天,將所有開發分支程式碼整合在一起,最終可能會花費很多時間和進行很多重複勞動,費事費力。因為程式碼衝突是難以避免的。

如果開發人員原生的環境和線上不一致的話,那麼這個問題就更加複雜了。

持續整合(CI)可以幫助開發者更加方便地將程式碼更改合併到主分支。

一旦開發人員將改動的程式碼合併到主分支,系統就會通過自動構建應用,並執行不同級別的自動化測試(通常是單元測試和整合測試)來驗證這些更改,確保這些更改沒有對應用造成破壞。

如果自動化測試發現新程式碼和現有程式碼之間存在衝突,CI 可以更加輕鬆地快速修復這些錯誤。

CD 持續交付(Continuous Delivery)
CI 在完成了構建、單元測試和整合測試這些自動化流程後,持續交付可以自動把已驗證的程式碼釋出到企業自己的儲存庫。

持續交付旨在建立一個可隨時將開發環境的功能部署到生產環境的程式碼庫。

在持續交付過程中,每個步驟都涉及到了測試自動化和程式碼釋出自動化。

在流程結束時,運維團隊可以快速、輕鬆地將應用部署到生產環境中。

CD 持續部署(Continuous Deployment)
對於一個完整、成熟的 CI/CD 管道來說,最後的階段是持續部署。

它是作為持續交付的延伸,持續部署可以自動將應用釋出到生產環境。

實際上,持續部署意味著開發人員對應用的改動,在編寫完成後的幾分鐘內就能及時生效(前提是它通過了自動化測試)。這更加便於運營團隊持續接收和整合使用者反饋。

總而言之,所有這些 CI/CD 的關聯步驟,都極大地降低了應用的部署風險。

不過,由於還需要編寫自動化測試以適應 CI/CD 管道中的各種測試和釋出階段,因此前期工作量還是很大的。

微服務

一種軟體開發技術- 面向服務的體系結構(SOA)架構樣式的一種變體,它提倡將單一應用程式劃分成一組小的服務,服務之間互相協調、互相配合,為使用者提供最終價值。每個服務執行在其獨立的程序中,服務與服務間採用輕量級的通訊機制互相溝通(通常是基於HTTP的RESTful API)。每個服務都圍繞著具體業務進行構建,並且能夠獨立地部署到生產環境、類生產環境等。另外,應儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據上下文,選擇合適的語言、工具對其進行構建。

應用框架

ABP

ABP是一個開源且檔案友好的應用程式框架。ABP不僅僅是一個框架,它還提供了一個最徍實踐的基於領域驅動設計(DDD)的體系結構模型,可以支援.net framework和.net core兩種技術流派。

ABP 框架特點

  • 依賴注入,這個部分使用 Castle windsor (依賴注入容器)來實現依賴注入,這個也是我們經常使用IOC來處理的方式;
  • Repository倉儲模式,已實現了Entity Framework、NHibernate、MangoDB、記憶體資料庫等,倉儲模式可以快速實現對資料介面的呼叫;
  • 身份驗證與授權管理,可以使用宣告特性的方式對使用者是否登入,或者介面的許可權進行驗證,可以通過一個很細粒度的方式,對各個介面的呼叫許可權進行設定;
  • 資料有效性驗證,ABP自動對介面的輸入引數物件進行非空判斷,並且可以根據屬性的申請資訊對屬性的有效性進行校驗;
  • 審計紀錄檔記錄,也就是記錄我們對每個介面的呼叫記錄,以及對記錄的建立、修改、刪除人員進行記錄等處理;
  • Unit Of Work工作單元模式,為應用層和倉儲層的方法自動實現資料庫事務,預設所有應用服務層的介面,都是以工作單元方式執行,即使它們呼叫了不同的儲存物件處理,都是處於一個事務的邏輯裡面;
  • 例外處理,ABP框架提供了一整套比較完善的流程處理操作,可以很方便的對異常進行進行記錄和傳遞;
  • 紀錄檔記錄,我麼可以利用Log4Net進行常規的紀錄檔記錄,方便我們跟蹤程式處理資訊和錯誤資訊;
  • 多語言/在地化支援,ABP框架對多語言的處理也是比較友好的,提供了對XML、JSON語言資訊的設定處理;
  • Auto Mapping自動對映,這個是ABP的很重要的物件隔離概念,通過使用AutoMaper來實現域物件和DTO物件的屬性對映,可以隔離兩者的邏輯關係,但是又能輕鬆實現屬性資訊的賦值;
  • 動態Web API層,利用這個動態處理,可以把Application Service 直接釋出為Web API層,而不需要在累贅的為每個業務物件手工建立一個Web API的控制器,非常方便;
  • 動態JavaScript的AJax代理處理,可以自動建立Javascript 的代理層來更方便使用Web Api,這個在Web層使用。

ABP 框架特別的功能

  • 多租戶支援(每個租戶的資料自動隔離,業務模組開發者不需要在儲存和查詢資料時寫相應程式碼;
  • 軟刪除支援(繼承相應的基礎類別或實現相應介面,會自動實現軟刪除)
  • 系統設定存取管理(系統級、租戶級、使用者級,作用範圍自動管理)
  • EventBus實現領域事件(Domain Events)
  • 模組以及模組的依賴關係實現外掛化的模組處理等等

結尾

歡迎大佬繼續補充,壯大dotnet生態!

來著token的分享

技術交流群:737776595