特價 -20%

開源Web建置強大標準 – ASP.NET Core全端開發立即上手DM2475

原始價格:NT$880。目前價格:NT$704。

出版商 深智數位股份有限公司
出版日期 2024年11月19日
語言 繁體中文
頁數 656
ISBN 9786267569238

已售完

貨號: DM2475 Category:

描述

內容簡介

開源Web建置強大標準 - ASP.NET Core全端開發立即上手

.NET Core是由微軟開發的一個跨平台、開源的軟體框架。它是.NET Framework的新版本,提供了更好的效能、模組化和跨平台支援。與.NET Framework不同的是,.NET Core是從頭重新設計的,可以在Windows、macOS和Linux上運行。ASP.NET Core以服務容器為核心,可模組化擴充,並且搭配了常用的元件,它經過重新設計和最佳化,在效能和安全性上都有顯著提升。ASP.NET Core提供Razor Pages、MVC、Web API和Blazor等功能,可靈活組合應用於常規Web、微服務、行動後端和物聯網等場景。如果你已經熟悉.NET架構,再轉為開發Web程式,本書再適合不了。

本書適合有.NET或C#基礎的讀者,透過實例快速掌握ASP.NET Core關鍵技術。本書旨在提供一個全面的學習路徑,幫助讀者從初學者進階到能夠應對現代複雜軟體開發挑戰的專家。無論您是正在尋找開始使用.NET Core 技術堆疊的新手,還是希望深入了解其高級功能和最佳實踐的經驗開發者,本書都將為您提供所需的知識和技能。

 

 

作者簡介

作者簡介

周家安

微軟最有價值專家(MVP),擅長.NET及其相關開發技術,專注於探索簡單實用的程式設計學習方法。長期在博客園等技術社區分享程式設計經驗。出版《Go語言入門經典》《精通C#5.0》《C#碼農筆記:從第一行代碼到項目實戰》《Python實戰指南——手把手教你掌握300個精彩案例》等優秀原創科技圖書。

 

目錄

第 1 章 初始化ASP.NET Core 應用程式

1.1 應用程式的啟動過程

1.2 WebApplicationBuilder類別

1.3 啟動應用程式

1.4 使用Host初始化應用程式

1.4.1 通用主機

1.4.2 範例:簡單的通用主機

1.4.3 Web主機

1.5 設定應用程式的URL

1.5.1 呼叫UseUrls()方法

1.5.2 使用WebApplication類別的Urls屬性

1.5.3 呼叫Run()方法時傳遞URL

1.5.4 透過ServerAddressesFeature物件設定URL

1.5.5 使用命令列參數

1.5.6 使用設定檔

1.5.7 使用環境變數

1.5.8 使用launchSettings.json檔案

1.5.9 Kestrel伺服器的偵聽位址

1.5.10 透過HTTP.sys設定URL

1.5.11 PreferHostingUrls() 方法的作用

1.6 應用程式生命週期事件

第 2 章 執行環境

2.1 定義執行環境

2.2 Is{EnvironmentName}擴充方法

2.3 多執行環境下的設定檔

2.4 用於環境篩選的Razor標記

2.5 執行環境與相依注入

第 3 章 相依注入

3.1 相依注入與服務容器

3.1.1 ServiceCollection類別

3.1.2 ServiceProvider類別

3.2 .NET專案中的相依注入

3.3 ASP.NET Core專案中的相依注入

3.4 建構存在相依關係的服務

3.5 服務的生存期

3.6 GetService()方法與GetRequiredService()方法的區別

3.7 注入多個服務實例

3.8 容易被忽略的問題

第 4 章 設定應用程式

4.1 設定的基本結構

4.2 在.NET應用程式中使用設定

4.3 在ASP.NET Core應用程式中使用設定

4.3.1 設定的資料來源

4.3.2 查看所有設定資訊

4.4 IConfigurationBuilder介面

4.5 ConfigurationManager類別

4.6 IConfigurationSource介面與IConfigurationProvider介面

4.6.1 自訂擴充點

4.6.2 範例:來自CSV檔案的設定

4.7 JSON設定

4.7.1 範例:存取JSON陣列物件

4.7.2 範例:自動重新載入設定

4.8 XML設定

4.9 環境變數

4.9.1 設定環境變數首碼

4.9.2 替換預設的ASPNETCORE_首碼

4.9.3 範例:替換環境變數首碼

4.9.4 分層設定結構

4.10 命令列參數

4.11 ini設定

4.12 設定與相依注入

4.12.1 範例:將IConfiguration注入MVC控制器

4.12.2 範例:透過設定選擇雜湊演算法

4.13 連結多棵設定樹

第 5 章 選項模式

5.1 選項模式概述

5.2 服務容器的擴充方法

5.3 各介面之間的關係

5.3.1 IConfigureOptions<TOptions>介面與IConfigureNamedOptions<TOptions>介面

5.3.2 IPostConfigureOptions<TOptions>介面

5.3.3 IValidateOptions<TOptions>介面

5.3.4 IOptionsFactory<TOptions>介面

5.3.5 完整的流程圖

5.4 選項類別的封裝介面

5.4.1 範例:在MVC 控制器中存取選項類別

5.4.2 範例:自動更新選項類別

5.5 附帶名稱的選項群組

5.6 後期設定

5.7 選項類別的驗證

5.7.1 內建的驗證方式

5.7.2 使用資料批註

5.8 處理帶有參數的建構函式

5.9 直接實現IOptions介面

第 6 章 HTTP管道

6.1 HTTP管道與中介軟體

6.2 中介軟體的實現方法

6.3 透過委託實現中介軟體

6.3.1 範例:Use()方法的簡單用法

6.3.2 HTTP管道的「短路」

6.3.3 Run()方法

6.4 透過類別實現中介軟體

6.4.1 帶有參數的中介軟體

6.4.2 中介軟體類別與相依注入

6.5 透過IMiddleware介面實現中介軟體

6.6 終結點

6.6.1 範例:常見的HTTP請求方式

6.6.2 範例:同時使用Razor Pages和MVC

6.6.3 為終結點分配名稱

6.6.4 中繼資料

6.7 有條件地執行中介軟體

6.7.1 範例:呼叫包含user_id欄位的中介軟體

6.7.2 範例:只允許以POST方式呼叫Web API

第 7 章 HTTP狀態儲存

7.1 HTTP上下文

7.1.1 範例:在中介軟體中設定回應表頭

7.1.2 範例:在Map*()方法中存取HTTP上下文

7.1.3 範例:使用Razor標記呈現HTTP請求表頭

7.1.4 範例:在MVC中存取HTTP上下文

7.2 HTTP訊息表頭

7.2.1 HeaderNames類別

7.2.2 訊息表頭的分類

7.2.3 分析複雜訊息表頭

7.3 查詢字串

7.3.1 讀取查詢參數

7.3.2 多值參數

7.4 表單資料

7.4.1 讀取簡單的表單資料

7.4.2 檔案上傳

7.5 Cookie

7.6 HttpContext類別的Items屬性

7.7 階段

7.7.1 ISession介面

7.7.2 設定階段Cookie的名稱

7.7.3 範例:將階段資料儲存到JSON檔案中

第 8 章 Razor頁面

8.1 Razor頁面的特點

8.2 Razor語法

8.2.1 兩種運算式

8.2.2 程式區塊

8.2.3 註釋

8.2.4 流程控制

8.3 開啟Razor頁面功能

8.4 Razor分頁檔

8.5 分頁檔的搜索路徑

8.5.1 設定RazorPagesOptions選項類別

8.5.2 便捷的擴充方法

8.6 頁面路由

8.6.1 透過@page指令設定路由規則

8.6.2 透過約定模型定義路由規則

8.7 頁面模型類別

8.7.1 頁面自身作為模型類別

8.7.2 從PageModel衍生類別

8.7.3 透過特性類別實現頁面模型類別

8.8 頁面處理常式

8.8.1 通用的處理常式

8.8.2 解決POST請求時出現的錯誤

8.8.3 使用多個處理常式

8.8.4 透過路由參數選擇處理常式

8.8.5 自訂的處理常式模型

第 9 章 MVC框架

9.1 MVC基本概念

9.2 啟用MVC功能

9.3 控制器

9.3.1 範例:從ControllerBase類別衍生

9.3.2 範例:從Controller類別衍生

9.3.3 範例:使用ControllerAttribute

9.3.4 範例:使用Controller尾碼

9.3.5 自訂控制器的名稱

9.3.6 範例:ControllerNameAttribute類別

9.3.7 自訂操作方法的名稱

9.3.8 範例:CustActionNameAttribute類別

9.3.9 範例:ActionNameAttribute類別

9.4 MVC路由規則

9.4.1 全域路由規則

9.4.2 範例:註冊兩筆全域路由規則

9.4.3 局部路由規則

9.4.4 IRouteTemplateProvider介面

9.4.5 透過實現約定介面定義路由規則

9.4.6 範例:CustPrefixRouteConvention類別

9.5 限制操作方法所支援的HTTP請求

9.5.1 範例:只支援HTTP-PUT請求的操作方法

9.5.2 內建特性類別

9.6 區域

9.7 視圖

9.7.1 視圖檔案的預設存放路徑

9.7.2 自訂視圖的路徑格式

9.7.3 版面配置視圖

9.7.4 範例:版面配置視圖的查詢順序

9.7.5 範例:設定Razor Pages版面配置視圖的查詢路徑

9.7.6 _ViewImports與_ViewStart檔案

9.7.7 範例:_ViewStart檔案的替換行為

9.8 IViewLocationExpander介面

9.8.1 範例:多版本視圖

9.8.2 範例:根據URL查詢參數擴充視圖路徑

9.8.3 LanguageViewLocationExpander類別

9.9 局部視圖

9.9.1 範例:成績單

9.9.2 範例:導覽列

9.10 視圖元件

9.10.1 範例:一個簡單的視圖元件

9.10.2 視圖檔案的查詢路徑

9.10.3 範例:帶有參數的視圖元件

9.10.4 透過標記幫助器呼叫視圖元件

9.10.5 範例:Greeting視圖元件

9.10.6 範例:在MVC控制器中呼叫視圖元件

9.10.7 兩個特性類別

9.11 辨識其他程式集中的控制器

9.11.1 範例:使用ApplicationPartAttribute類別

9.11.2 範例:使用AddApplicationPart()擴充方法

9.11.2 範例:使用ApplicationPartManager類別

第 10 章 模型綁定

10.1 概述

10.2 自動綁定

10.2.1 範例:計算機

10.2.2 範例:綁定陣列類型的資料

10.2.3 範例:綁定複雜類型

10.2.4 多個參數的模型綁定

10.2.5 範例:綁定3個參數

10.2.6 字典類型的模型綁定

10.2.7 範例:綁定字典資料

10.2.8 範例:綁定IFormCollection類型

10.2.9 範例:MD5計算機

10.2.10 綁定IFormFile和IFormFileCollection類型

10.2.11 範例:上傳一個文字檔

10.2.12 範例:上傳多個檔案

10.3 設定模型綁定的來源

10.3.1 範例:綁定HTTP訊息表頭

10.3.2 範例:從HTTP訊息文字提取資料

10.3.3 範例:與路由參數綁定

10.3.4 範例:FromServices特性的使用

10.3.5 範例:混合使用From*特性類別

10.3.6 範例:將From*特性類別應用於屬性成員

10.4 自訂IValueProvider介面

10.4.1 範例:由自訂字串提供的值

10.4.2 範例:CookieValueProvider

10.5 IModelBinder介面

10.5.1 內建綁定器

10.5.2 範例:AddressInfoModelBinder類別

10.6 BindRequiredAttribute類別與BindNeverAttribute類別

10.7 綁定到屬性成員

10.7.1 範例:控制器的屬性綁定

10.7.2 範例:PageModel中的屬性綁定

10.7.3 範例:CancellationToken類型的屬性綁定

第 11 章 Web API

11.1 Web API基礎

11.1.1 ControllerBase類別與Controller類別

11.1.2 ApiController特性

11.1.3 範例:一個簡單的Web API

11.1.4 範例:以POST方式提交資料

11.2 XML格式

11.2.1 範例:常規的XML序列化方案

11.2.2 範例:使用XmlDataContractSerializer方案

11.3 選擇回應格式

11.3.1 範例:透過Accept訊息表頭選擇回應格式

11.3.2 範例:使用格式篩檢程式

11.4 自訂格式

11.4.1 範例:CustDataInputFormatter類別

11.4.2 範例:BytesToHexOutputFormatter類別

11.5 極小API

11.5.1 範例:一些簡單的極小API例子

11.5.2 範例:在極小API上使用資料來源特性

11.5.3 上傳檔案.

11.5.4 範例:直接讀取檔案串流

11.5.5 範例:上傳多個檔案

11.5.6 IResult介面

11.5.7 範例:Results類別的使用

11.6 API瀏覽功能

11.6.1 IApiDescriptionGroupCollectionProvider介面

11.6.2 範例:列出已定義的Web API

11.6.3 API約定

11.6.4 Swagger框架

11.6.5 範例:使用Swagger生成API文件

第 12 章 篩檢程式

12.1 篩檢程式的執行過程

12.1.1 範例:觀察篩檢程式的執行順序

12.2.2 範例:同時實現多個介面

12.2 篩檢程式的作用域

12.1.1 範例:全域篩檢程式

12.2.2 範例:特性化的篩檢程式

12.3 在Razor Pages中使用篩檢程式

12.1.1 範例:在Razor標記頁和頁面模型類別上應用篩檢程式

12.2.2 範例:在Razor Pages中應用全域篩檢程式

12.2.3 頁面處理常式的篩檢程式

12.2.4 範例:實現IPageFilter介面

12.4 非同步篩檢程式介面

12.4.1 範例:實現非同步授權篩檢程式

12.4.2 範例:實現非同步資源篩檢程式

12.5 IAlwaysRunResultFilter介面

12.6 IFilterFactory介面

12.6.1 範例:存取服務容器中的篩檢程式

12.6.2 範例:使用TypeFilterAttribute類別建立篩檢程式實例

12.6.2 範例:使用ServiceFilterAttribute 類別存取服務容器中的篩檢程式

12.7 篩檢程式的執行順序

12.7.1 範例:篩檢程式的作用域與執行順序

12.7.2 範例:自訂篩檢程式的執行順序

12.8 抽象的篩檢程式特性類別

12.8.1 範例:重寫ActionFilterAttribute類別

12.8.2 範例:重寫ExceptionFilterAttribute類別

第 13 章 標記幫助器

13.1 標記幫助器簡介

13.1.1 範例:為<span>標記增加「加粗」功能

13.1.2 範例:<url>標記幫助器

13.1.3 範例:使用標記幫助器設定HTML元素的文字樣式

13.2 將標記幫助器註冊到服務容器

13.3 內建的標記幫助器

13.3.1 範例:快取當前時間

13.3.2 範例:用<button>元素提交表單

13.3.3 範例:asp-for屬性的使用

13.3.4 範例:呈現驗證資訊

13.4 標記幫助器元件

13.4.1 範例:在<body>元素內插入CSS樣式

13.4.2 範例:使用ITagHelperComponentManager 物件註冊標記幫助器元件

第 14 章 靜態檔案

14.1 靜態檔案簡介

14.2 使用靜態檔案

14.2.1 範例:存取影像檔

14.2.2 範例:修改WEBROOT路徑

14.2.3 範例:統計輸入的字元數量

14.2.4 範例:合併多個目錄

14.3 目錄瀏覽

14.3.1 範例:瀏覽外部目錄

14.3.2 範例:自訂檔案類型映射

14.4 檔案服務

第 15 章 路由約束

15.1 路由約束的作用

15.2 IRouteConstraint介面

15.3 內建的路由約束

15.3.1 範例:雙精度數值約束

15.3.2 範例:限制字串長度

15.3.3 範例:特定格式的訂單號

15.3.4 範例:限制整數值的範圍

15.4 自訂路由約束

第 16 章 SignalR

16.1 WebSocket

16.1.1 範例:用JavaScript實現使用者端

16.1.2 範例:用.NET 主控台實現WebSocket使用者端

16.1.3 子協定

16.2 SignalR基礎

16.2.1 SignalR中心

16.2.2 範例:簡易計算機

16.2.3 範例:使用.NET導向的SignalR函式庫

16.3 呼叫使用者端

16.3.1 範例:聊天室

16.3.2 將使用者端定義為介面

16.3.3 範例:即時更新進度指示器

16.3.4 範例:記錄連接狀態

第 17 章 Blazor

17.1 Blazor概述

17.2 伺服器託管

17.2.1 範例:使用Razor Pages承載Blazor應用

17.2.2 範例:在MVC視圖中承載Blazor應用

17.2.3 範例:初始化指令稿

17.2.4 範例:使用初始化指令稿

17.2.5 範例:手動增加modules.json檔案

17.3 WebAssembly託管

17.3.1 範例:手動建立Blazor WebAssembly專案

17.3.2 範例:用node.js開發Blazor WebAssembly伺服器

17.3.3 範例:初始化指令稿

17.3.4 DevServer

17.4 路由元件

17.4.1 範例:路由元件的簡單應用

17.4.2 範例:使用路由參數

17.4.3 範例:使用[Route]特性

17.5 版面配置元件

17.5.1 範例:導覽列

17.5.2 範例:將普通元件用於版面配置

17.6 元件參數

17.6.1 範例:巢狀結構元件的參數傳遞

17.6.2 範例:頂層元件的參數傳遞(Blazor Server)

17.6.3 範例:頂層元件的參數傳遞(Blazor WebAssembly)

17.7 串聯參數

17.7.1 範例:根據類型接收串聯參數

17.7.2 範例:根據命名接收串聯參數

17.8 事件

17.8.1 範例:計數器

17.8.2 範例:記錄滑鼠指標的位置

17.8.3 EventCallback結構

17.8.4 範例:進度指示器元件

17.9 CSS隔離

17.10 資料綁定

17.10.1 範例:綁定日期輸入元素

17.10.2 範例:使用oninput事件

17.10.3 元件之間的綁定

17.10.4 範例:Slider元件

17.11 用.NET程式撰寫元件

17.11.1 著色樹

17.11.2 範例:用.NET程式實現App和Index元件

17.11.3 範例:使用相依注入

17.12 .NET與JavaScript交互操作

17.12.1 範例:呼叫JavaScript中的alert()方法

17.12.2 範例:呼叫QRCode.js生成二維碼

17.12.3 範例:階乘計算機

17.12.4 範例:JavaScript呼叫.NET物件的實例方法

第 18 章 驗證與授權

18.1 驗證與授權的關係

18.2 與驗證有關的核心服務

18.3 驗證處理常式

18.3.1 範例:驗證HTTP訊息表頭

18.3.2 範例:多個驗證方案共用一個IAuthenticationHandler介面

18.4 IAuthenticationSignInHandler介面

18.5 驗證中介軟體

18.6 授權處理常式與必要條件

18.6.1 範例:允許指定的部門存取

18.6.2 PassThroughAuthorizationHandler 類別

18.7 授權策略

18.7.1 範例:按使用者星級授權

18.7.2 範例:整合內建的Cookie驗證

18.7.3 範例:在終結點上應用授權策略

 

 

序言

ASP.NET Core 由微軟官方推出,開放原始程式碼並以社區為主,可以生成執行於Windows、macOS、Linux 等作業系統的新型Web 應用程式。ASP.NET Core並不是ASP.NET 的延續版本,而是經過重新設計和最佳化的框架。由於它是編譯執行的,因此在性能上的優勢明顯。而且,其內部對非同步任務和安全性做了大量整合工作,有些安全功能是預設啟用的,如對跨站漏洞攻擊的防範。經過六七個版本的迭代,ASP.NET Core 已趨向完善,對Web 前端與其他資料存取技術的相容性也得到極大提升。對於常規Web 功能、微服務、行動後端以及物聯網後端等應用場景,ASP.NET Core 都是不錯的選擇。

本書所涉及的內容針對性強,只要讀者具備.NET 或C# 程式設計相關基礎,即可透過本書快速掌握ASP.NET Core 的關鍵技術。本書在每個基礎知識的講解後都會附上專門的範例,方便讀者將學到的知識馬上付諸實踐,加深印象。

ASP.NET Core 配有官方開發工具,並共用.NET SDK 工具。無論讀者使用的是Windows 還是Linux 作業系統,都可以執行dotnet new 命令建立ASP.NET Core 應用專案,或執行dotnet run 命令執行應用程式。

本書推薦使用官方提供的工具撰寫程式。

 Visual Studio:Windows、macOS 使用者均可以使用,簡稱VS。VS 是著名的整合式開發環境,提供從開發、驗證、生成到偵錯和執行的完整支援。除了程式提示功能,還有聯想功能,可以根據程式上下文以及巨量資料整理推斷各種程式部分,極大地提高編碼效率。

 Visual Studio Code: 簡稱VS Code 或VSC。VS Code 是VS 的分支版本,著重程式編輯功能。VS Code 透過安裝擴充支援各種程式語言。理論上,只要擁有足夠的擴充,VS Code 就能撰寫任何程式語言的程式(如C、C++、Python、C#、Java 等)。VS Code 能執行在Windows、Linux 及macOS 等作業系統上,同時也支援ARM 架構,如Raspberry Pi OS。使用時先執行dotnetnew命令建立ASP.NET Core 專案,然後在VS Code 中開啟專案所在目錄即可。

雖然ASP.NET Core 可以細分出Razor Pages、MVC、Web API、Blazor 等專案,但實際上這些功能是可以在同一個專案中實現的。ASP.NET Core 以服務容器為核心,可以元件化擴充。只要向容器註冊服務類型,就能開啟相關的功能,如MVC 與Blazor 功能可以同時啟用(URL 路由不能有衝突)。

本書適合有一定.NET 或C# 基礎的讀者閱讀,也可以作為高等學校或培訓機構的輔助教材。也歡迎想了解ASP.NET Core 的開發人員閱讀本書。

由於編者水準有限,書中難免出現不妥之處,望讀者們不吝批評指正。

本書主要內容

本書深入探討如何利用最新的.NET Core 技術堆疊,從基礎到進階應用全面涵蓋的書籍。旨在幫助讀者掌握現代軟體開發中所需的核心技能和最佳實踐。首先,書籍將從.NET Core 的基本架構入手。讀者將學習到.NET Core 跨平台開發的優勢,以及如何利用.NET Core 的基本工具進行開發。我們將深入探討.NET Core 的核心概念,包括如何建立和組織專案結構,以及如何使用依賴注入和配置服務來管理應用程序的組件。

其次,本書將詳細介紹如何建立高效率的Web應用程式。我們將從設計和實作Web API開始,涵蓋API的路由設計、參數綁定、請求和回應格式化等方面。讀者將學習到如何使用.NET Core 框架提供的工具和技術來開發RESTful API,並探索如何處理身份驗證和授權、輸入驗證、日誌記錄等關鍵問題。除了基本的Web應用程式開發,本書還將深入探討微服務架構下的開發模式。讀者將學習到如何將大型應用程序拆分為多個微服務,並通過API或服務發現來實現這些服務的管理和溝通。

額外資訊

出版商

深智數位股份有限公司

出版日期

2024年11月19日

語言

繁體中文

頁數

656

ISBN

9786267569238