還在擔心微軟產品的跨平台相容性嗎?或者你認為Linux才是真正的程式開發嗎?時代真的變了,.NET架構應該是全世界最多人使用的框架,只要安裝了Visual Studio,就可以開發Windows、MacOS、Linux、Web、雲端、Docker/K8S、主控台等應用,只要你會使用C#!但本書不強調C#的語法,本書的重點在於.NET框架中的開發及設定,並且全書都圍繞在Visual Studio上,也包含了目前最流行的.vscode的應用。在了解基本使用之外,本書直攻問題的核心,包括執行緒、鎖定等機制,並且也精解了JIT等編輯器的原理及方法。最後就是大家關心的平台部署了。本書使用了目前業界最新的部署標準Docker/K8s,更完整說明了compose、swarm等進階Docker技術。還等什麼,Linux的世界也可以用.NET進入,學習一個.NET就可以完成跨平臺開發,這本書就是你贏在終點的起跑點。
【本書看點】
✪ .NET環境安裝、Visual Studio最新版安裝
✪ .NET執行原理、CLI介紹
✪ ASP.NET的多執行模式介紹
✪ 相依性插入、設定和選項、工作排程
✪ IHostedService和BackgroundService的背景工作介紹
✪ 中介軟體完整攻略,快取的應用,當地語系,系統健康檢查
✪ 檔案系統的開發及詳解,各種日誌的詳細說明
✪ 多執行緒及工作平行,執行緒同步及鎖定
✪ 記憶體管理、診斷偵錯
✪ 編輯技術及部署
✪ Docker、K8S的部署
【適合讀者】
☛ 初級和中級開發人員。
☛ 對.NET技術有興趣的讀者。
☛ 準備投入.NET開發,或進一步提升自己的讀者
作者
馮輝
Microsoft MVP、Dapr Member、.NET Conf China 2020/2021講師、開源技術的積極倡導者與貢獻者。具有豐富的.NET開發經驗,並專注於.NET平臺、雲原生、服務化和DevOps等技術領域的研究。
目錄
第1章 .NET概述和環境安装
1.1 .NET框架簡介
1.2 .NET的開發環境
1.3 小結
第2章 .NET執行原理概述
2.1 .NET CLI概述
2.2 小結
第 3 章 ASP.NET Core 應用程式的多種執行模式
3.1 自宿主
3.2 IIS服務承載
3.3 將WebAPI嵌入桌面應用程式中
3.4 服務承載
3.5 延伸閱讀:WindowsFormsLifetime
3.6 小結
第 4 章 相依性插入
4.1.NET相依性插入
4.2實作批次服務註冊
4.3小結
第 5 章 設定與選項
5.1 設定模式
5.2 選項模式
5.3 設計一個簡單的設定中心
5.4 小結
第 6 章 使用IHostedService和BackgroundService實作背景工作
6.1 IHostedService
6.2 BackgroundService
6.3 工作排程
6.4 小結
第 7 章 中介軟體
7.1 中介軟體的作用
7.2 中介軟體的呼叫過程
7.3 撰寫自訂中介軟體
7.4 在篩檢程式中應用中介軟體
7.5 製作簡單的API統一回應格式與自動包裝
7.6 延伸閱讀:責任鏈模式
7.7 延伸閱讀:中介軟體常見的擴充方法
7.8 小結
第 8 章 快取
8.1 記憶體快取
8.2 分散式快取
8.3 HTTP快取
8.4 小結
第 9 章 當地語系化
9.1 內容當地語系化
9.2 多樣化的資料來源
9.3 小結
第 10 章 健康檢查
10.1 檢查當前應用的健康狀態
10.2 發佈健康報告
10.3 視覺化健康檢查介面
10.4 小結
第 11 章 檔案系統
11.1 ASP.NET Core靜態檔案
11.2 自訂一個簡單的檔案系統
11.3 小結
第 12 章 日誌
12.1 主控台日誌
12.2 偵錯日誌
12.3 事件日誌
12.4 EventSource日誌
12.5 TraceSource日誌
12.6 DiagnosticSource日誌
12.7 小結
第 13 章 多執行緒與工作平行
13.1 執行緒簡介
13.2 基於工作的非同步程式設計
13.3 執行緒平行
13.4 小結
第 14 章 執行緒同步機制和鎖定
14.1 不可部分完成作業
14.2 自旋鎖
14.3 混合鎖
14.4 互斥鎖
14.5 旗號
14.6 讀寫鎖
14.7 小結
第 15 章 記憶體管理
15.1 記憶體分配
15.2 垃圾回收器
15.3 資源釋放
15.4 垃圾回收器的設定
15.5 小結
第 16 章 診斷和偵錯
16.1 性能診斷工具
16.2 Linux偵錯
16.3 小結
第 17 章 編譯技術精講
17.1 IL解析
17.2 JIT簡介
17.3 JIT編譯
17.4 AOT編譯
17.5 小結
第 18 章 部署
18.1 發佈與部署
18.2 Docker
18.3 撰寫Dockerfile檔案
18.4 建構.NET應用鏡像
18.5 Docker Compose
18.6 Docker Swarm
18.7 Kubernetes
18.8 小結
序/導讀
前言
隨著.NET技術的發展,湧現出眾多的設計思想和核心概念。值得開發人員關注的技術點有很多,如ASP.NET Core模組的設計、跨平台偵錯與部署等。
.NET已經成為一種熱門的現代技術系統,從.NET徹底邁向跨平台和開放原始碼開始,已經歷經了約10個版本。新一代的.NET平台以擁抱雲端原生為核心,擁有更小的體積、更少的資源佔用和更快的啟動速度,並且支援水平擴充。
筆者也算是一個親歷者,從.NET Core 1.0到現在,是一個從重生到繁榮的成長階段,.NET生態更加開放,開放原始碼社區越來越活躍,不僅支持傳統的x86架構系統,還支持ARM架構,並且獲得了諸多新興架構系統的踴躍支持,同時在工業、IoT、車聯網等領域獲得了廣泛運用。無論是從社區參與度,還是從NuGet的下載量,都不難看出.NET的發展速度。
.NET具備原生的跨平台部署能力,是一種用於建構多端應用的開放平台。使用.NET可以建構桌面應用、雲端服務、嵌入式應用及機器學習應用等,讀者可以從GitHub官網的dotnet組織中獲取它所有的原始程式碼。
電腦科學家Alan J. Perlis曾說過:“不能影響你的程式設計思維方式的語言不值得學習和使用。”由此可知,“思維”非常重要,只有了解一門程式語言或框架的基礎模型與核心設計,才能將其應用到日常的程式設計中。
框架的設計過程是非常複雜的,筆者偏向於將複雜問題簡單化,先研究它的實現方式,再了解它的設計模式,透過這一層層的推導過程,慢慢地了解整體脈絡。閱讀原始程式碼是一個枯燥但會帶來收穫的過程。在本書中,筆者將框架設計方法,以及它們的實現(可擴充性)方式毫無保留地寫下來。
本書整合了筆者在工作中使用.NET開發應用程式的撰寫經驗和偵錯經驗,同時結合了筆者關於Linux平台和容器雲端平台的使用經驗。透過本書,筆者將介紹每個模組的核心設計與實現,因為要想在生產環境中大規模使用,就需要在這個複雜而龐大的專案中抓到主線,了解內部的實現和偵錯技術,以便快速定位問題和解決問題。
本書對ASP.NET Core的部分核心內容進行了深入解析,在這個基礎上延伸內容,以及自訂擴充實例,初學者可以更深入地了解ASP.NET Core內部的運作方式。本書也涵蓋了很多基礎知識,如垃圾回收、偵錯、執行緒等,除此之外,增加了部署方面的內容,將應用程式部署到宿主機、Docker和Kubernetes中。
筆者透過對.NET技術的原理進行剖析及實例的演示,幫助讀者快速熟悉框架的核心設計及實現原理。希望讀者在閱讀完本書後,能夠將書中的內容學以致用,使用.NET建構出高性能的應用程式,同時為開放原始碼社區貢獻一份心力。
本書特色
本書主要介紹.NET框架的核心部分,不僅闡述了框架的核心設計,還展示了實作程式和執行效果,同時根據不同的功能模組擴充出屬於自己的小元件。透過閱讀本書,讀者可以深入了解.NET框架的核心設計,掌握.NET性能最佳化和ASP.NET Core的部署方式。本書包含18章。第1~3章主要介紹.NET框架、開發環境和運行模式。第4~12章主要介紹相依性插入、設定與選項、背景工作、中介軟體、快取、當地語系化、健康檢查、檔案系統和日誌等常用功能模組。第13~17章主要介紹執行緒、執行緒同步、記憶體管理、診斷和偵錯,以及編譯技術等內容。第18章主要介紹應用程式的部署方式,包括宿主機的部署,以及Docker和Kubernetes的部署。
本書可供.NET開發人員和.NET初學者閱讀與參考,也適合具備其他編程語言基礎且想要學習.NET的開發人員閱讀,還可為讀者在工作及鞏固基礎時提供有力的支援。