注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)深入淺出:ASP.NET Core

深入淺出:ASP.NET Core

深入淺出:ASP.NET Core

定 價:¥128.00

作 者: 周家安
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787302656685 出版時間: 2024-04-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  這是一本面向ASP.NET Core新手的基礎教程,學用相長,注重實踐。每個關鍵知識點都配有簡單的示例,以輔助理解。本書內(nèi)容涉及ASP.NET Core應用程序的初始化、配置,服務容器與依賴注入的使用,HTTP/中間件管道的構建,HTTP會話狀態(tài)的維護,Razor頁面與MVC,Web API,Blazor,靜態(tài)文件的訪問,以及安全與授權。

作者簡介

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

圖書目錄

第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  調(diào)用UseUrls()方法 9
1.5.2  使用WebApplication類的Urls屬性 10
1.5.3  調(diào)用Run()方法時傳遞URL 10
1.5.4  通過ServerAddressesFeature對象設置URL 11
1.5.5  使用命令行參數(shù) 12
1.5.6  使用配置文件 13
1.5.7  使用環(huán)境變量 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章  運行環(huán)境 18
2.1  定義運行環(huán)境 18
2.2  Is{EnvironmentName}擴展方法 19
2.3  多運行環(huán)境下的配置文件 21
2.4  用于環(huán)境篩選的Razor標記 23
2.5  運行環(huán)境與依賴注入 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()方法的區(qū)別 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  配置的數(shù)據(jù)來源 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數(shù)組對象 62
4.7.2  示例:自動重新加載配置 63
4.8  XML配置 64
4.9  環(huán)境變量 67
4.9.1  設置環(huán)境變量前綴 68
4.9.2  替換默認的ASPNETCORE_前綴 70
4.9.3  示例:替換環(huán)境變量前綴 70
4.9.4  分層配置結構 71
4.10  命令行參數(shù) 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  內(nèi)置的驗證方式 100
5.7.2  使用數(shù)據(jù)批注 102
5.8  處理帶參數(shù)的構造函數(shù) 105
5.9  直接實現(xiàn)IOptions接口 108
第6章  HTTP管道 110
6.1  HTTP管道與中間件 110
6.2  中間件的實現(xiàn)方法 110
6.3  通過委托實現(xiàn)中間件 111
6.3.1  示例:Use()方法的簡單用法 114
6.3.2  HTTP管道的“短路” 115
6.3.3  Run()方法 116
6.4  通過類實現(xiàn)中間件 117
6.4.1  帶參數(shù)的中間件 118
6.4.2  中間件類與依賴注入 119
6.5  通過IMiddleware接口實現(xiàn)中間件 120
6.6  終結點 121
6.6.1  示例:常見的HTTP請求方式 123
6.6.2  示例:同時使用Razor Pages和MVC 125
6.6.3  為終結點分配名稱 127
6.6.4  元數(shù)據(jù) 129
6.7  有條件地執(zhí)行中間件 130
6.7.1  示例:調(diào)用包含user_id字段的中間件 131
6.7.2  示例:只允許以POST方式調(diào)用Web API 132
第7章  HTTP狀態(tài)存儲 135
7.1  HTTP上下文 135
7.1.1  示例:在中間件中設置響應標頭 136
7.1.2  示例:在Map*()方法中訪問HTTP上下文 137
7.1.3  示例:使用Razor標記呈現(xiàn)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  讀取查詢參數(shù) 149
7.3.2  多值參數(shù) 150
7.4  表單數(shù)據(jù) 151
7.4.1  讀取簡單的表單數(shù)據(jù) 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  示例:將會話數(shù)據(jù)存儲到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指令設置路由規(guī)則 181
8.6.2  通過約定模型定義路由規(guī)則 182
8.7  頁面模型類 184
8.7.1  頁面自身作為模型類 185
8.7.2  從PageModel派生類 185
8.7.3  通過特性類實現(xiàn)頁面模型類 186
8.8  頁面處理程序 187
8.8.1  通用的處理程序 188
8.8.2  解決POST請求時出現(xiàn)的錯誤 189
8.8.3  使用多個處理程序 190
8.8.4  通過路由參數(shù)選擇處理程序 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路由規(guī)則 210
9.4.1  全局路由規(guī)則 211
9.4.2  示例:注冊兩條全局路由規(guī)則 211
9.4.3  局部路由規(guī)則 212
9.4.4  IRouteTemplateProvider接口 213
9.4.5  通過實現(xiàn)約定接口定義路由規(guī)則 214
9.4.6  示例:CustPrefixRouteConvention類 215
9.5  限制操作方法所支持的HTTP請求 217
9.5.1  示例:只支持HTTP-PUT請求的操作方法 217
9.5.2  內(nèi)置特性類 218
9.6  區(qū)域 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  示例:根據(jù)URL查詢參數(shù)擴展視圖路徑 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  示例:帶參數(shù)的視圖組件 251
9.10.4  通過標記幫助器調(diào)用視圖組件 253
9.10.5  示例:Greeting視圖組件 254
9.10.6  示例:在MVC控制器中調(diào)用視圖組件 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  示例:綁定數(shù)組類型的數(shù)據(jù) 264
10.2.3  示例:綁定復雜類 266
10.2.4  多個參數(shù)的模型綁定 268
10.2.5  示例:綁定3個參數(shù) 268
10.2.6  字典類型的模型綁定 270
10.2.7  示例:綁定字典數(shù)據(jù) 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消息正文提取數(shù)據(jù) 279
10.3.3  示例:與路由參數(shù)綁定 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  內(nèi)置綁定器 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方式提交數(shù)據(jù) 308
11.2  XML格式 310
11.2.1  示例:常規(guī)的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上使用數(shù)據(jù)源特性 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  過濾器的執(zhí)行過程 343
12.1.1  示例:觀察過濾器的運行順序 344
12.1.2  示例:同時實現(xiàn)多個接口 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  示例:實現(xiàn)IPageFilter接口 354
12.4  異步過濾器接口 355
12.4.1  示例:實現(xiàn)異步授權過濾器 356
12.4.2  示例:實現(xiàn)異步資源過濾器 356
12.5  IAlwaysRunResultFilter接口 358
12.6  IFilterFactory接口 360
12.6.1  示例:訪問服務容器中的過濾器 360
12.6.2  示例:使用TypeFilterAttribute類創(chuàng)建過濾器實例 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  內(nèi)置的標記幫助器 380
13.3.1  示例:緩存當前時間 380
13.3.2  示例:用元素提交表單 381 13.3.3  示例:asp-for屬性的使用 382
13.3.4  示例:呈現(xiàn)驗證信息 384
13.4  標記幫助器組件 386
13.4.1  示例:在元素內(nèi)插入CSS樣式 387 13.4.2  示例:使用ITagHelperComponentManager對象注冊標記幫助器組件 389
第14章  靜態(tài)文件 392
14.1  靜態(tài)文件簡介 392
14.2  使用靜態(tài)文件 393
14.2.1  示例:訪問圖像文件 393
14.2.2  示例:修改WEBROOT路徑 395
14.2.3  示例:統(tǒng)計輸入的字符數(shù)量 397
14.2.4  示例:合并多個目錄 398
14.3  目錄瀏覽 400
14.3.1  示例:瀏覽外部目錄 401
14.3.2  示例:自定義文件類型映射 401
14.4  文件服務 410
第15章  路由約束 412
15.1  路由約束的作用 412
15.2  IRouteConstraint接口 412
15.3  內(nèi)置的路由約束 413
15.3.1  示例:雙精度數(shù)值約束 415
15.3.2  示例:限制字符串長度 415
15.3.3  示例:特定格式的訂單號 416
15.3.4  示例:限制整數(shù)值的范圍 417
15.4  自定義路由約束 417
第16章  SignalR 419
16.1  WebSocket 419
16.1.1  示例:用JavaScript實現(xiàn)客戶端 419
16.1.2  示例:用.NET控制臺實現(xiàn)WebSocket客戶端 422
16.1.3  子協(xié)議 424
16.2  SignalR基礎 427
16.2.1  SignalR中心 428
16.2.2  示例:簡易計算器 428
16.2.3  示例:使用面向.NET的SignalR庫 430
16.3  調(diào)用客戶端 433
16.3.1  示例:聊天室 433
16.3.2  將客戶端定義為接口 435
16.3.3  示例:實時更新進度條 436
16.3.4  示例:記錄連接狀態(tài) 438
第17章  Blazor 442
17.1  Blazor概述 442
17.2  服務器托管 443
17.2.1  示例:使用Razor Pages承載Blazor應用 444
17.2.2  示例:在MVC視圖中承載Blazor應用 446
17.2.3  初始化腳本 448
17.2.4  示例:使用初始化腳本 449
17.2.5  示例:手動添加modules.json文件 450
17.3  WebAssembly托管 451
17.3.1  示例:手動創(chuàng)建Blazor WebAssembly項目 452
17.3.2  示例:用node.js開發(fā)Blazor WebAssembly服務器 454
17.3.3  示例:初始化腳本 457
17.3.4  DevServer 458
17.4  路由組件 459
17.4.1  示例:路由組件的簡單應用 460
17.4.2  示例:使用路由參數(shù) 461
17.4.3  示例:使用[Route]特性 463
17.5  布局組件 463
17.5.1  示例:導航欄 464
17.5.2  示例:將普通組件用于布局 466
17.6  組件參數(shù) 466
17.6.1  示例:嵌套組件的參數(shù)傳遞 466
17.6.2  示例:頂層組件的參數(shù)傳遞(Blazor Server) 467
17.6.3  示例:頂層組件的參數(shù)傳遞(Blazor WebAssembly) 468
17.7  級聯(lián)參數(shù) 469
17.7.1  示例:根據(jù)類型接收級聯(lián)參數(shù) 469
17.7.2  示例:根據(jù)命名接收級聯(lián)參數(shù) 472
17.8  事件 473
17.8.1  示例:計數(shù)器 476
17.8.2  示例:記錄鼠標指針的位置 476
17.8.3  EventCallback結構體 477
17.8.4  示例:進度條組件 478
17.9  CSS隔離 480
17.10  數(shù)據(jù)綁定 482
17.10.1  示例:綁定日期輸入元素 483
17.10.2  示例:使用oninput事件 483
17.10.3  組件之間的綁定 484
17.10.4  示例:Slider組件 485
17.11  用.NET代碼編寫組件 486
17.11.1  渲染樹 487
17.11.2  示例:用.NET代碼實現(xiàn)App和Index組件 488
17.11.3  示例:使用依賴注入 491
17.12  .NET與JavaScript互操作 493
17.12.1  示例:調(diào)用JavaScript中的alert()方法 494
17.12.2  示例:調(diào)用QRCode.js生成二維碼 494
17.12.3  示例:階乘計算器 496
17.12.4  示例:JavaScript調(diào)用.NET對象的實例方法 497
第18章  驗證與授權 500
18.1  驗證與授權的關系 500
18.2  與驗證有關的核心服務 501
18.3  驗證處理程序 501
18.3.1  示例:驗證HTTP消息頭 502
18.3.2  示例:多個驗證方案共用一個IAuthenticationHandler接口 505
18.4  IAuthenticationSignInHandler接口 508
18.5  驗證中間件 515
18.6  授權處理程序與必要條件 519
18.6.1  示例:允許指定的部門訪問 520
18.6.2  PassThroughAuthorizationHandler類 522
18.7  授權策略 525
18.7.1  示例:按用戶星級授權 525
18.7.2  示例:集成內(nèi)置的Cookie驗證 529
18.7.3  示例:在終結點上應用授權策略 534

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號