iT邦幫忙

2022 iThome 鐵人賽

DAY 1
0

前言

免不必俗的,開賽的第一天總要介紹一下30天的主題跟方向,
這30天的系列文主要寫給已有 C# 基礎,或使用過dotnet framework跟dotnet core
但是想要更加深入的了解其中的運作原理的朋友們

大綱

主要會介紹的主題如下:

  1. Dependency injection(依賴注入)
  2. Host(主機)
  3. Log
  4. Configuration(設定)
  5. File System(檔案系統)
  6. Pipline (Middleware)
  7. Routing(路由)
  8. Static File(靜態檔案)
  9. Authorize(授權)
  10. Authencation(認證)
  11. Handel Error(錯誤處理)

使用的開發環境如下:

  • OS: Window 10
  • IDE: Jetbrains Rider
  • Dotnet Version: Dotnet 6

.Net Framework 與.Net Core

既然是第一天,還是寫點輕鬆的東西
我們來談談過去的dotnet framework 不能跨平台與dotnet core 能夠跨平台的原因

先來點名詞解釋:

  • CLI: 一種與語言無關的標準,定義可執行的程式本身跟執行他的引擎建立一個規範,也就是說滿足cli定義東西都可以被其定義的引擎執行。
    舉例而言,我定義了一個綠色球形的東西(可執行的程式本身)可以被機器(引擎)絞碎,我實作了(西瓜)綠色球型,跟果汁機(機器)
    (emca335)
  • CIL: 通用中繼語言,介於高階語言與機器語言之間的語言,是CLI中用來描述可執行程式的語言。 (可執行的程式本身)
  • CLR: dotnet 的VM,負責將IL Code 轉成機器碼
    這邊的引擎比較像是系統

看下圖會比較好理解
來看看我們的C#(or F#, VB)程式碼 是怎麼在電腦上執行的

來源(wiki)

C# 程式碼經過編譯器編譯成 CIL,
接著 CLR 會將 CIL 轉成101010的機器碼在對應的系統上執行

接著我們拆解dotnet framework 的架構如下
https://ithelp.ithome.com.tw/upload/images/20220902/20109549EmrJ3tsOJO.png

可以簡化成
|-----|
App Model
|-----|
BCL
|-----|
CLR
|-----|

  • App Model: ASP.NET WPF等Base onBCL的應用程式
  • BCL: 指的是像定義了int, string, io, reflection 的基礎程式庫
  • CLR: run time ,負責將IL轉譯成機器語言

微軟最初可能並沒有考慮推出除了window以外的.Net
隨著時間演進,dotnet framework 中的東西越來越多,有web,有桌面應用程式,有WCF,WPF等等
Web 可能參考到BCL中的A, WCF可能用到B
功能越來越多,dotnet framework 的BCL也越來越肥,導致其要在CLR轉成機器碼的東西也越來越多。
總之,重點就是 dotnet framework 不支援將IL 翻到windows以外的OS

所以在dotnet core 中做了改進:


我們把重點放在Common base libaray 跟 infrastructure 上
Common base libaray 中定義了共用的模組,也就是所有appmodel 大部分共通的api會放在裡面
而runtime component 也支援將其翻成各作業系統支持的機器語言

現在與未來

跨平台的Dotnet Core已經推出了一段時間,一路更新到現在最新穩定版Dotnet 6
微軟目前已經推出.Net7 Preview了,且官方也說明未來Dotnet Framework不會更新新版本了
有著更多更有有趣且更方便的語法糖和執行效率等優點

好.Net Core 不學嗎

現在就讓我們來深入了解.Net Core框架吧


下一篇
[Day2] 從好萊塢開始反轉你的人生,談談IoC 與DI - 1
系列文
擁抱 .Net Core30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
CCCCC
iT邦新手 4 級 ‧ 2022-09-14 08:39:06

有些圖片死掉了

Eric Xie iT邦新手 4 級 ‧ 2022-09-14 20:44:52 檢舉

死掉的其實不是圖片,是超連結。
用了圖片的markdown,所以會有破圖
已經修正了,感謝告知

我要留言

立即登入留言