.NET Core 第一節課 - 起源

Marzlam發表於2020-11-21

.Net core 3.1 LTS長支援版本  2022 12月   .net 5 目前LTS版本還要等版本

.NET Core 到底是什麼?

小型的、高效的、可以通過檔案複製直接部署的跨平臺框架。

為什麼要用.net core? 也就是優勢?

1: .net 基金會和社群  來管理 .net core  並決定採取 開源 策略  使用 MIT 協議   (別小看這個協議   開源協議很多 這個很強大 自由性極高 下方有幾個開源協議對比)    

2:跨平臺  跨架構    支援命令列   部署靈活  相容性強    linux  這麼火  這麼給力  不跨平臺不行噻

3:精簡化     比起.net fw  精簡化   需要什麼  我在去新增什麼   .net fw 不管你用不用  都一大套 給到你    舉例:session   fw 直接

幫你給搞好了 直接用 ,.net core  你需要自己新增。

4:效能高  比.net fw 更加優秀 也比其它同級開源框架高效   不是精簡了就效能高  是因為 有內建  kestrel  

 

.NET Core 核心到底是什麼?

重要元件:CoreCLR/CoreFX/CLI/Roslyn

CoreCLR: 公共語音執行時   底層其實是C++

職責

1. 執行.net程式   中間程式碼IL解析 什麼方法 型別  生成後設資料(型別資訊、GC資訊、異常資訊)

 .net 程式(IL中間程式碼不依賴與平臺)同一個.net程式 可以在不同平臺執行  

 而 原生程式(包含特定硬體架構的機器碼,呼叫作業系統的函式) 、Native 需要在特定平臺執行

2.中間程式碼編譯  中間程式碼載入到記憶體 Class Loader  然後轉換到機器碼 也就是JIT 即時編譯器  根據作業系統等等 選擇最適合的

3.型別安全 保證物件型別一定正確

c語言  int*指標 - void*指標 在往後傳  後面就不知道是int了

c# string - object  GetType方法就可以知道真實型別  是因為  CLR會對每一個物件( 託管物件)都會儲存 型別資訊 

4.異常處理  try-catch

5.執行緒管理  (託管執行緒,GC)  充分利用資源

託管程式碼用相同方式在不同平臺進行多執行緒的處理

6.GC 垃圾回收機制  對無效的物件 銷燬   對記憶體的整理  範圍是針對於 託管程式碼

對於非託管資源,還是需要開發手動釋放

 

CoreFX:  .net 5 中叫Libraries      基礎型別  c#編寫的 庫函式  比如  datetime 型別   thread  執行緒類

大多是FW的BCL基礎型別 進行相容處理過遷移過來的 關鍵字 partial  + 條件編譯 

分開:公用 特定平臺   避免了介面卡模式在原始碼中的應用    提升了效率

1.減少開發的工作量 .讓不同模組的互動更加容易

比如c語音中 倆個類庫:不同時間型別   c#直接用datetime 就行了

 2.NET Standard/. NET  標準  ==最基礎的功能

.NET FW 和 .NETCore 有對應的標準版本 也就是遷移匹配度

 

CLI

Common Language Infrastructure =通用中間架構   為了跨平臺、跨語言   c#\vb.net\F#

一種技術標準 == IL  比如int都是=4個位元組   不需要關注平臺差異    

基礎型別、指令種類、模組/類/方法的結構,二進位制的檔案格式

 

Command Line Interface=命令列介面

以前一些windows的東西 不支援 linux

 

VS  VScode都是通過.NET Core CLI 工具  建立專案等等

 

Roslyn   編譯平臺,程式碼分析

vs2017 開始 內建了

 

開源協議:GPL\Apache\BSD\MIT

協議:目的是為了保護和尊重作者的智慧財產權,即便是開源,也不說明原始碼可以隨意使用!!

GPL(極端思想) 所有軟體都開源  使用這個協議程式碼用或者改(函式,衍生程式碼)都必須開源  傳染性極強 

國內比較喜歡白嫖,所以不採用   

LGPL  在GPL 基礎上  可以用  不能改   一旦改了 就必須開源

Apache (註明資訊,作者,修改釋出說明) 不要求用了改了就開源   相比寬鬆許多

BSD\MIT  最寬鬆的協議,自由的使用,自由的修改,自由的釋出

BSD額外有一個規定:如果你對BSD協議下的軟體的原始碼進行了修改再發布,那麼你不能借用該專案原作者的名義進行宣傳。為什麼 怕用大廠的東西 然後 專案很爛  抹黑大廠 

所以 .net core 採用mit 協議   更好的促進了 .net 生態 為開源打好了基礎!

 

 

相關文章