.NET Core 第一節課 - 起源
.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 生態 為開源打好了基礎!
相關文章
- 第一節課心得
- Python入門第一課——Python的起源、發展與前景!Python
- ASP.NET Core系列(二):建立第一個.Net Core 專案ASP.NET
- 機器學習進階 第一節 第一課機器學習
- Java基礎 第一節 第八課Java
- 10.15 見習後的第一節課
- Java基礎 第三節 第一課Java
- 軟體工程概論18918第一節課軟體工程
- python第一節課內容及練習Python
- 資料結構 第一節 第六課資料結構
- 關於 .NET Core(.NET Core 指南)
- 機器學習進階 第一節 第九課機器學習
- 機器學習進階 第一節 第四課機器學習
- 機器學習進階 第一節 第七課機器學習
- .NET Core
- 機器學習進階 第一節 第十六課機器學習
- .NET平臺系列9 .NET Core 3.0 / .NET Core 3.1 詳解
- 第一章:第一節資料載入及初步觀察-課程
- Dapper in .Net CoreAPP
- .Net Core:限流
- ASP.NET Core Web API 索引 (更新Redis in .NET Core)ASP.NETWebAPI索引Redis
- 【asp.net core 系列】14 .net core 中的IOCASP.NET
- ASP.NET Core ----ASP.NET Core中使用Code FirstASP.NET
- ASP.NET 6.0 Core 遷移 ASP.NET Core 7.0ASP.NET
- .NET Core/.NET之Stream簡介
- .Net Core(.Net6)建立grpcRPC
- .Net Core 使用SessionSession
- 關於.NET Core
- .net core使用RabbitMQMQ
- .net Core 使用AutoMapperAPP
- .net core Configuration物件物件
- .NET CORE命令列命令列
- .Net Core 使用 FluentValidation
- GRPC與.net coreRPC
- 通俗易懂,什麼是.NET Core,.NET Core能做什麼
- .NET Core基礎學習——.NET Core SDK與命令列(CL命令列
- Java第一課Java
- hadoop第一課Hadoop