深入淺出:ASP.NET CORE 版權信息
- ISBN:9787302656685
- 條形碼:9787302656685 ; 978-7-302-65668-5
- 裝幀:70g膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
深入淺出:ASP.NET CORE 本書特色
ASP.NET Core是建立在.NET基礎上的Web開發技術,經過幾個版本的迭代,已趨于完善。隨著Blazor的不斷優化,ASP.NET Core能同時勝任Web前端與后端的開發,*終可生成高性能且跨平臺的Web應用程序。本書秉持“學以致用”的理念,內容精練,通俗易懂,以實例的方式闡述知識。讀者可以參考書中實例動手實踐,提高學習效果。本書主要內容包括: 初始化ASP.NET Core應用程序; 依賴注入與服務容器; 應用程序配置與選項模式; HTTP管道與中間件; HTTP狀態存儲; Razor頁面; MVC框架與Web API; 模型綁定; 過濾器與標記幫助器; 靜態文件; SignalR與Blazor; 驗證與授權。
深入論述ASP.NET Core的理論、方法與開發技術!北京郵電大學魏翼飛教授、青島科技大學宋廷強教授、香港科技大學工學院李永剛教授聯袂推薦!
魏翼飛 北京郵電大學電子工程學院副院長《深入淺出:ASP.NET Core》的作者是一位編程愛好者,其在博客上發表的文章風格獨特有趣,經常會抓住一個知識點進行擴展,創作一系列文章,語言精練,代碼簡潔。從博客文章到原創圖書,作者也沿襲了這樣的風格。《深入淺出:ASP.NET Core》涵蓋的ASP.NET Core內容全面,給出的實例項目不復雜,簡單易懂,適合初學者學習。
宋廷強 青島科技大學信息科學技術學院副院長市場上雖然已經有一些ASP.NET Core方面的圖書,但是書中往往缺少實例和可動手實踐的素材。《深入淺出:ASP.NET Core》覆蓋知識體系較為全面,書中很多章節以實例為主,對初學者來說,容易理解和動手實踐,學起來比較輕松。
賈云龍 北京樂搏優聘教育科技咨詢有限公司首席執行官ASP.NET Core借助開源社區的壯大,得到快速發展,這在一定程度上增加了讀者對ASP.NET Core圖書的需求,尤其是編程入門者和開源愛好者的圖書需求。《深入淺出:ASP.NET Core》緊扣ASP.NET Core主題,核心知識明確,未涉及復雜的框架內容,易于入門,推薦初學者閱讀。
李永剛 香港科技大學工學院教授《深入淺出:ASP.NET Core》中理論講解與代碼演示的內容所占比例較為均衡,很適合讀者直接上機,動手實踐。結合配書程序代碼進行學習,讀者能快速獲得成就感。
全新視角剖析 ASP.NET Core 關鍵技術,易學實用。
深入淺出:ASP.NET CORE 內容簡介
ASP.NET Core是微軟推出的跨平臺、開放源代碼的Web開發框架。本書秉持“現學現用”的
原則,知識講解通俗易懂,并配有示例代碼。每個示例都是針對知識點而設計的,代碼量適中,
功能和結構簡單,便于讀者參考學習和擴展改造。
全書共18章。第1章和第2章講述了ASP.NET Core應用程序的初始化過程以及運行環境的設定;
第3章單獨介紹了ASP.NET Core應用程序的設計模式—組件化,即依賴注入技術;第4章和第5
章講述了配置應用程序的方法,包括使用配置文件和選項模式;第6章和第7章講述了HTTP管道和
HTTP狀態存儲;第8~11章涉及Web開發的重點知識:Razor頁面、MVC框架、模型綁定及Web API;
第12章和第13章講述MVC框架的應用擴展,包括過濾器和標記幫助器的使用,以適應實際開發需
求;第14章介紹了靜態文件服務,服務器可向客戶端提供目錄/文件的訪問入口;第15章講述路由
約束;第16章和第17章講述了ASP.NET Core獨有的客戶端技術—SignaIR和Blazor;第18章主要
涉及基本的安全功能,即驗證與授權。
本書適合作為廣大高校、培訓機構.NET課程相關的教材或.NET愛好者的參考書。對于想通過
自學步入編程大門的讀者,也推薦閱讀本書。
深入淺出:ASP.NET CORE 目錄
第 1 章 初始化 ASP.NET Core 應用程序 . 1
1.1 應用程序的啟動過程 ..1
1.2 WebApplicationBuilder 類 ..2
1.3 啟動應用程序.3
1.4 使用 Host 初始化應用程序 4
1.4.1 通用主機 5
1.4.2 示例:簡單的通用主機 .5
1.4.3 Web 主機 7
1.5 設置應用程序的 URL..9
1.5.1 調用 UseUrls()方法 .9
1.5.2 使用 WebApplication 類的 Urls 屬性 .. 10
1.5.3 調用 Run()方法時傳遞 URL .. 10
1.5.4 通過 ServerAddressesFeature 對象設置 URL 11
1.5.5 使用命令行參數 12
1.5.6 使用配置文件. 13
1.5.7 使用環境變量. 13
1.5.8 使用 launchSettings.json 文件 14
1.5.9 Kestrel 服務器的偵聽地址 . 14
1.5.10 通過 HTTP.sys 配置 URL . 15
1.5.11 PreferHostingUrls()方法的作用 .. 15
1.6 應用程序生命周期事件 16
第 2 章 運行環境. 18
2.1 定義運行環境.. 18
2.2 Is{EnvironmentName}擴展方法 . 19
2.3 多運行環境下的配置文件 21
2.4 用于環境篩選的 Razor 標記 23
2.5 運行環境與依賴注入 25
第 3 章 依賴注入. 28
3.1 依賴注入與服務容器 28
3.1.1 ServiceCollection 類 . 31
3.1.2 ServiceProvider 類 32
3.2 .NET 項目中的依賴注入.. 32
3.3 ASP.NET Core 項目中的依賴注入. 33
3.4 構建存在依賴關系的服務 35
3.5 服務的生存期.. 38
3.6 GetService()方法與 GetRequiredService()方法的區別. 41
3.7 注入多個服務實例. 42
3.8 容易被忽略的問題. 46
第 4 章 配置應用程序 48
4.1 配置的基本結構 . 48
4.2 在.NET 應用程序中使用配置 . 49
4.3 在 ASP.NET Core 應用程序中使用配置 .. 51
4.3.1 配置的數據來源 51
4.3.2 查看所有配置信息 51
4.4 IConfigurationBuilder 接口.. 52
4.5 ConfigurationManager 類 . 53
4.6 IConfigurationSource 接口與 IConfigurationProvider 接口 54
4.6.1 自定義擴展點. 55
4.6.2 示例:來自 CSV 文件的配置 56
4.7 JSON 配置 59
4.7.1 示例:訪問 JSON 數組對象.. 62
4.7.2 示例:自動重新加載配置.. 63
4.8 XML 配置 . 64
4.9 環境變量 .. 67
4.9.1 設置環境變量前綴 68
4.9.2 替換默認的 ASPNETCORE_前綴 70
4.9.3 示例:替換環境變量前綴.. 70
4.9.4 分層配置結構. 71
4.10 命令行參數 72
4.11 ini 配置 75
4.12 配置與依賴注入 78
4.12.1 示例:將 IConfiguration 注入 MVC 控制器 78
4.12.2 示例:通過配置選擇哈希算法 .. 79
4.13 鏈接多棵配置樹 82
第 5 章 選項模式. 85
5.1 選項模式概述.. 85
5.2 服務容器的擴展方法 87
5.3 各接口之間的關系. 87
5.3.1 IConfigureOptions接口與 IConfigureNamedOptions接口 .. 87
5.3.2 IPostConfigureOptions接口 .. 88
5.3.3 IValidateOptions接口 . 88
5.3.4 IOptionsFactory接口 .. 89
5.3.5 完整的流程圖. 90
5.4 選項類的封裝接口. 91
5.4.1 示例:在 MVC 控制器中訪問選項類. 92
5.4.2 示例:自動更新選項類 .. 93
5.5 帶名稱的選項組 . 95
5.6 后期配置 .. 98
5.7 選項類的驗證.. 99
5.7.1 內置的驗證方式 . 100
5.7.2 使用數據批注.. 102
5.8 處理帶參數的構造函數 . 105
5.9 直接實現 IOptions 接口 . 108
第 6 章 HTTP 管道 110
6.1 HTTP 管道與中間件 .. 110
6.2 中間件的實現方法.. 110
6.3 通過委托實現中間件 ..111
6.3.1 示例:Use()方法的簡單用法.. 114
6.3.2 HTTP 管道的“短路” . 115
6.3.3 Run()方法 . 116
6.4 通過類實現中間件.. 117
6.4.1 帶參數的中間件 . 118
6.4.2 中間件類與依賴注入 119
6.5 通過 IMiddleware 接口實現中間件 120
6.6 終結點. 121
6.6.1 示例:常見的 HTTP 請求方式 .. 123
6.6.2 示例:同時使用 Razor Pages 和 MVC . 125
6.6.3 為終結點分配名稱. 127
6.6.4 元數據 129
6.7 有條件地執行中間件 . 130
6.7.1 示例:調用包含 user_id 字段的中間件 .. 131
6.7.2 示例:只允許以 POST 方式調用 Web API . 132
第 7 章 HTTP 狀態存儲 ..135
7.1 HTTP 上下文. 135
7.1.1 示例:在中間件中設置響應標頭.. 136
7.1.2 示例:在 Map*()方法中訪問 HTTP 上下文 .. 137
7.1.3 示例:使用 Razor 標記呈現 HTTP 請求標頭 138
7.1.4 示例:在 MVC 中訪問 HTTP 上下文 .. 140
7.2 HTTP 消息頭. 141
7.2.1 HeaderNames 類.. 143
7.2.2 消息頭的分類.. 144
7.2.3 分析復雜消息頭 . 145
7.3 查詢字符串 148
7.3.1 讀取查詢參數.. 149
7.3.2 多值參數 .. 150
7.4 表單數據 151
7.4.1 讀取簡單的表單數據 151
7.4.2 文件上傳 .. 153
7.5 Cookie . 157
7.6 HttpContext 類的 Items 屬性 159
7.7 會話 . 160
7.7.1 ISession 接口 161
7.7.2 設置會話 Cookie 的名稱.. 164
7.7.3 示例:將會話數據存儲到 JSON 文件中 . 164
第 8 章 Razor頁面172
8.1 Razor 頁面的特點 172
8.2 Razor 語法 . 173
8.2.1 兩種表達式 .. 173
8.2.2 代碼塊 174
8.2.3 注釋 175
8.2.4 流程控制 .. 176
8.3 開啟 Razor 頁面功能.. 177
8.4 Razor 頁面文件 178
8.5 頁面文件的搜索路徑 . 179
8.5.1 配置 RazorPagesOptions 選項類 180
8.5.2 便捷的擴展方法 . 180
8.6 頁面路由 181
8.6.1 通過@page 指令設置路由規則.. 181
8.6.2 通過約定模型定義路由規則 .. 182
8.7 頁面模型類 184
8.7.1 頁面自身作為模型類 185
8.7.2 從 PageModel 派生類 185
8.7.3 通過特性類實現頁面模型類 .. 186
8.8 頁面處理程序 187
8.8.1 通用的處理程序 . 188
8.8.2 解決 POST 請求時出現的錯誤 .. 189
8.8.3 使用多個處理程序. 190
8.8.4 通過路由參數選擇處理程序 .. 192
8.8.5 自定義的處理程序模型 193
第 9 章 MVC框架 .199
9.1 MVC 基本概念 . 199
9.2 啟用 MVC 功能 199
9.3 控制器. 200
9.3.1 示例:從 ControllerBase 類派生 203
9.3.2 示例:從 Controller 類派生 205
9.3.3 示例:使用 ControllerAttribute.. 205
9.3.4 示例:使用 Controller 后綴 206
9.3.5 自定義控制器的名稱 207
9.3.6 示例:ControllerNameAttribute 類 207
9.3.7 自定義操作方法的名稱 208
9.3.8 示例:CustActionNameAttribute 類 .. 208
9.3.9 示例:ActionNameAttribute 類 .. 209
9.4 MVC 路由規則 . 210
9.4.1 全局路由規則.. 211
9.4.2 示例:注冊兩條全局路由規則 .. 211
9.4.3 局部路由規則.. 212
9.4.4 IRouteTemplateProvider 接口.. 213
9.4.5 通過實現約定接口定義路由規則.. 214
9.4.6 示例:CustPrefixRouteConvention 類 .. 215
9.5 限制操作方法所支持的 HTTP 請求 .. 217
9.5.1 示例:只支持 HTTP-PUT 請求的操作方法 217
9.5.2 內置特性類 .. 218
9.6 區域 . 220
9.7 視圖 . 221
9.7.1 視圖文件的默認存放路徑 221
9.7.2 自定義視圖的路徑格式 222
9.7.3 布局視圖 .. 225
9.7.4 示例:布局視圖的查找順序 .. 226
9.7.5 示例:配置 Razor Pages 布局視圖的查找路徑 . 229
9.7.6 _ViewImports 與_ViewStart 文件 .. 231
9.7.7 示例:_ViewStart 文件的替換行為 .. 232
9.8 IViewLocationExpander 接口 233
9.8.1 示例:多版本視圖. 234
9.8.2 示例:根據 URL 查詢參數擴展視圖路徑 .. 237
9.8.3 LanguageViewLocationExpander 類 .. 240
9.9 局部視圖 242
9.9.1 示例:成績單.. 243
9.9.2 示例:導航欄.. 246
9.10 視圖組件.. 248
9.10.1 示例:一個簡單的視圖組件.. 249
9.10.2 視圖文件的查找路徑 250
9.10.3 示例:帶參數的視圖組件 .. 251
9.10.4 通過標記幫助器調用視圖組件 . 253
9.10.5 示例:Greeting 視圖組件 254
9.10.6 示例:在 MVC 控制器中調用視圖組件 . 255
9.10.7 兩個特性類 . 255
9.11 識別其他程序集中的控制器.. 256
9.11.1 示例:使用 ApplicationPartAttribute 類 . 256
9.11.2 示例:使用 AddApplicationPart()擴展方法 .. 257
9.11.3 示例:使用 ApplicationPartManager 類 .. 259
第 10 章 模型綁定 .261
10.1 概述 .. 261
10.2 自動綁定 .. 262
10.2.1 示例:計算器. 263
10.2.2 示例:綁定數組類型的數據.. 264
10.2.3 示例:綁定復雜類 266
10.2.4 多個參數的模型綁定 268
10.2.5 示例:綁定 3 個參數 268
10.2.6 字典類型的模型綁定 270
10.2.7 示例:綁定字典數據 270
10.2.8 示例:綁定 IFormCollection 類型 272
10.2.9 示例:MD5 計算器 .. 273
10.2.10 綁定 IFormFile 和 IFormFileCollection 類型 .. 274
10.2.11 示例:上傳一個文本文件 275
10.2.12 示例:上傳多個文件 . 276
10.3 設置模型綁定的來源 278
10.3.1 示例:綁定 HTTP 消息頭 .. 278
10.3.2 示例:從 HTTP 消息正文提取數據. 279
10.3.3 示例:與路由參數綁定 .. 280
10.3.4 示例:FromServices 特性的使用 . 280
10.3.5 示例:混合使用 From*特性類 . 282
10.3.6 示例:將 From*特性類應用于屬性成員 283
10.4 自定義 IValueProvider 接口 284
10.4.1 示例:由自定義字符串提供的值. 285
10.4.2 示例:CookieValueProvider 288
10.5 IModelBinder 接口 292
10.5.1 內置綁定器 . 293
10.5.2 示例:AddressInfoModelBinder 類 .. 294
10.6 BindRequiredAttribute 類與 BindNeverAttribute 類 . 296
10.7 綁定到屬性成員. 299
10.7.1 示例:控制器的屬性綁定 .. 299
10.7.2 示例:PageModel 中的屬性綁定 . 300
10.7.3 示例:CancellationToken 類型的屬性綁定 302
第 11 章 Web API .305
11.1 Web API 基礎 . 305
11.1.1 ControllerBase 類與 Controller 類 . 305
11.1.2 ApiController 特性 306
11.1.3 示例:一個簡單的 Web API .. 306
11.1.4 示例:以 POST 方式提交數據.. 308
11.2 XML 格式 310
11.2.1 示例:常規的 XML 序列化方案 .. 311
11.2.2 示例:使用 XmlDataContractSerializer 方案 314
11.3 選擇響應格式 . 316
11.3.1 示例:通過 Accept 消息頭選擇響應格式.. 316
11.3.2 示例:使用格式過濾器 .. 317
11.4 自定義格式 . 319
11.4.1 示例:CustDataInputFormatter 類 319
11.4.2 示例:BytesToHexOutputFormatter 類 323
11.5 極小 API .. 325
11.5.1 示例:一些簡單的極小 API 例子. 325
11.5.2 示例:在極小 API 上使用數據源特性 327
11.5.3 上傳文件.. 328
11.5.4 示例:直接讀取文件流 .. 328
11.5.5 示例:上傳多個文件 330
11.5.6 IResult 接口. 332
11.5.7 示例:Results 類的使用.. 333
11.6 API 瀏覽功能 . 333
11.6.1 IApiDescriptionGroupCollectionProvider 接口.. 334
11.6.2 示例:列出已定義的 Web API.. 334
11.6.3 API 約定 .. 337
11.6.4 Swagger 框架.. 339
11.6.5 示例:使用 Swagger 生成 API 文檔 340
第 12 章 過濾器 .343
12.1 過濾器的執行過程 343
12.1.1 示例:觀察過濾器的運行順序 . 344
12.1.2 示例:同時實現多個接口.. 348
12.2 過濾器的作用域. 349
12.2.1 示例:全局過濾器 349
12.2.2 示例:特性化的過濾器 .. 350
12.3 在 Razor Pages 中使用過濾器 352
12.3.1 示例:在 Razor 標記頁和頁面模型類上應用過濾器 . 352
12.3.2 示例:在 Razor Pages 中應用全局過濾器 . 353
12.3.3 頁面處理程序的過濾器 .. 354
12.3.4 示例:實現 IPageFilter 接口 . 354
12.4 異步過濾器接口. 355
12.4.1 示例:實現異步授權過濾器.. 356
12.4.2 示例:實現異步資源過濾器.. 356
12.5 IAlwaysRunResultFilter 接口 . 358
12.6 IFilterFactory 接口 360
12.6.1 示例:訪問服務容器中的過濾器 . 360
12.6.2 示例:使用 TypeFilterAttribute 類創建過濾器實例 361
12.6.3 示例:使用 ServiceFilterAttribute 類訪問服務容器中的過濾器 . 363
12.7 過濾器的運行順序 364
12.7.1 示例:過濾器的作用域與運行順序 364
12.7.2 示例:自定義過濾器的運行順序 . 368
12.8 抽象的過濾器特性類 369
12.8.1 示例:重寫 ActionFilterAttribute 類 370
12.8.2 示例:重寫 ExceptionFilterAttribute 類 . 371
第 13 章 標記幫助器.372
13.1 標記幫助器簡介. 372
13.1.1 示例:為標記添加“加粗”功能 373
13.1.2 示例:標記幫助器 . 374
13.1.3 示例:使用標記幫助器設置 HTML 元素的文本樣式 375
13.2 將標記幫助器注冊到服務容器 . 377
13.3 內置的標記幫助器 380
13.3.1 示例:緩存當前時間 380
13.3.2 示例:用
展開全部
深入淺出:ASP.NET CORE 作者簡介
周家安:微軟最有價值專家(MVP),擅長.NET及其相關開發技術,專注于探索簡單實用的編程學習方法。長期在博客園等技術社區分享編程經驗。曾出版《Go語言入門經典》《精通C# 5.0》《C#碼農筆記——從第一行代碼到項目實戰》《Python實戰指南——手把手教你掌握300個精彩案例》等優秀原創科技圖書。