描述
內容簡介
【新書簡介】
還在擔心微軟產品的跨平台相容性嗎?或者你認為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的開發人員閱讀,還可為讀者在工作及鞏固基礎時提供有力的支援。
|