本書假設讀者已經熟悉C#和.NET的開發(fā),并且對關系型數據庫有所了解,但不要求對C#有太深入的了解。初學C#的讀者可能會發(fā)現有些代碼難以閱讀,因為本書不會詳細講解C#的內容。
ASP.NET Core是一個開源跨平臺框架,用于構建Web應用、IoT應用和移動后端應用。ASP.NET Core應用程序可以運行于 .NET Core和完整的 .NET Framework之上。全書共分9章,深入淺出地介紹了ASP.NET Core的基礎知識和前端UI選擇方面的知識,主要包括.NET Core的基礎知識及其安裝、dotnet命令、Visual Studio開發(fā)工具的安裝和使用、ASP.NET Core的原理及其組件介紹、Entity Framework Core框架、ASP.NET Core MVC框架和依賴注入等。
本書面向從未使用過ASP.NET Core和EF Core的初、中級用戶,以及想了解ASP.NET Core和EF Core的讀者,也可作為各初、高等院校師生的教學和自學叢書,以及社會相關領域培訓班的教材。
自2000年6月微軟提出.NET戰(zhàn)略,經過16年的推廣之后,在2016年推出了升級版.NET Core。這是一個真正跨平臺的框架,如今,.NET Core已經得到了比較廣泛的認可。使用.NET開發(fā)B/S應用程序當然首推ASP.NET Core,因為在ASP.NET Core 2.1中內置了更多的功能。相對于ASP.NET Core 1.0,ASP.NET Core 2.x降低了學習門檻,引進了新的Razor Page用戶界面設計方式,可以很容易地與.NET Framework 4.6以上版本兼容,便于用戶輕松地把舊項目遷移到.NET Core環(huán)境上來。
ASP.NET Core由模塊化的組件構成,是一個比ASP.NET更為精簡且模塊化的框架。ASP.NET Core不再基于System.Web.dll,而是基于一系列顆;、且有良好架構的 NuGet包。ASP.NET Core并不只是前端技術,也是后端技術。ASP.NET Core是ASP.NET開發(fā)人員需要了解的一種技術,是在多種平臺上進行Web開發(fā)時可供使用的另一種全棧解決方案,以便在Windows、Mac和Linux上跨平臺地開發(fā)和運行自己的ASP.NET Core應用程序。
本書對ASP.NET Core 2.x進行了全面講解,包括.NET Core、ASP.NET Core的原理及其組件、ASP.NET Core MVC框架和Entity Framework Core框架等,通過本書的學習可以幫助開發(fā)者走進ASP.NET Core 跨平臺開發(fā)的世界。本書側重于各種小功能的實現,并在實現過程中揭示ASP.NET Core 2.x的特性。
全書共分9章,內容如下:
第1章介紹.NET Core的基礎知識,并通過一個簡單的控制臺應用介紹.NET Core。
第2章介紹.NET Core CLI的dotnet命令,并通過一些簡單示例來學習如何使用這些命令。
第3章介紹Visual Studio 2017和NuGet包,并通過一些簡單示例來學習如何使用Visual Studio 2017進行應用開發(fā)及引用NuGet包。
第4章介紹ASP.NET Core框架。
第5章介紹Entity Framework (EF) Core框架和配置特性,并通過構建使用EF Core的ASP.NET Core應用程序示例來具體應用EF Core功能。
第6章介紹ASP.NET Core MVC使用模型視圖控制器設計模式構建 Web 應用和 API 的豐富框架。
第7章介紹依賴注入,并通過示例來學習如何使用依賴注入。
第8章介紹Razor標記語言。
第9章介紹設計一個優(yōu)秀Web應用程序應注意的前端UI選擇問題,以及現在比較流行的幾種UI,這些UI為統(tǒng)一整個Web應用程序的風格和減少冗余代碼提供了很好的解決方案。
讀者在閱讀完本書后能夠了解ASP.NET Core的基礎知識和原理,學會使用ASP.NET Core并結合EF Core開發(fā)簡單的跨平臺應用程序。由于筆者能力有限,本書只能拋磚引玉,有未盡如人意之處,希望讀者海涵并提出寶貴意見,以期共同進步。
第1章.NET Core1
1.1.NET Core介紹1
1.1.1什么是.NET1
1.1.2什么是.NET Framework1
1.1.3什么是.NET Core2
1.2.NET Core跨平臺2
1.2.1.NET Standard3
1.2.2.NET Core的特點4
1.3.NET Core SDK下載安裝7
第2章dotnet命令12
2.1dotnet命令結構12
2.1.1dotnet命令結構介紹13
2.1.2dotnet命令示例14
2.2dotnet new16
2.2.1介紹16
2.2.2示例20
2.3dotnet restore22
2.4dotnet sln24
2.4.1介紹24
2.4.2示例25
2.5dotnet build27
2.5.1介紹27
2.5.2示例28
2.6dotnet pack28
2.6.1介紹28
2.6.2示例29
2.7dotnet run30
2.7.1介紹30
2.7.2示例32
2.8dotnet publish32
2.8.1介紹32
2.8.2示例34
2.9dotnet add package35
2.9.1介紹35
2.9.2示例35
2.10dotnet add reference37
2.10.1介紹37
2.10.2示例37
2.11dotnet命令綜合示例38
第3章Visual Studio 2017與NuGet44
3.1安裝 Visual Studio 201744
3.1.1檢查計算機安裝環(huán)境44
3.1.2下載 Visual Studio 201744
3.1.3運行Visual Studio 2017安裝程序45
3.1.4選擇工作負載46
3.1.5逐個選擇組件(可選)47
3.1.6安裝語言包(可選)47
3.1.7更改安裝位置(可選)48
3.1.8起始頁介紹48
3.2使用Visual Studio創(chuàng)建程序49
3.3Visual Studio功能簡介53
3.3.1菜單53
3.3.2解決方案資源管理器53
3.3.3快速啟動56
3.3.4編輯器58
3.3.5運行和調試應用程序61
3.3.6調試代碼62
3.3.7使用重構和 IntelliSense66
3.4NuGet簡介68
3.4.1包、創(chuàng)建者、主機和使用者之間的關系68
3.4.2包的兼容性69
3.4.3NuGet工具70
3.4.4管理依賴項70
3.4.5跟蹤引用和還原包71
3.5在Visual Studio中安裝和使用包72
3.5.1程序包管理器UI72
3.5.2程序包管理器控制臺74
3.5.3在應用中使用Newtonsoft.Json API75
第4章ASP.NET Core簡介77
4.1為何使用 ASP.NET Core77
4.2ASP.NET Core啟動的秘密78
4.2.1ASP.NET Core啟動流程78
4.2.2宿主構造器:WebHostBuilder79
4.2.3UseStartup〈Startup〉()80
4.2.4WebHostBuilder.Build()82
4.2.5WebHost.Initialize()85
4.2.6WebHost.Run()87
4.2.7構建請求處理管道87
4.2.8啟動WebHost90
4.2.9啟動Server92
4.2.10啟動IHostedService93
4.3ASP.NET Core中間件94
4.3.1什么是中間件94
4.3.2中間件的運行方式94
4.3.3中間件排序96
4.3.4Use、Run和Map方法98
4.3.5內置中間件103
4.4ASP.NET Core中的靜態(tài)文件104
4.4.1如何將靜態(tài)文件注入到項目中105
4.4.2自定義靜態(tài)文件夾107
4.4.3添加默認文件支持109
4.4.4設置HTTP響應標頭110
4.4.5啟用目錄瀏覽112
4.5ASP.NET Core中的配置113
4.5.1配置相關的包114
4.5.2文件配置115
4.5.3XML配置120
4.5.4按環(huán)境配置121
4.5.5在Razor頁面中訪問配置122
4.5.6其他配置方式122
4.6ASP.NET Core中的日志記錄123
4.6.1日志模型三要素124
4.6.2日志記錄級別125
4.6.3將日志寫入不同的目的地126
4.6.4添加篩選功能130
4.6.5根據等級過濾日志消息131
4.6.6設置文件配置133
4.6.7作用域135
4.6.8日志記錄建議137
4.7在ASP.NET Core中使用多個環(huán)境137
4.7.1環(huán)境137
4.7.2在運行時確定環(huán)境137
4.7.3開發(fā)環(huán)境139
4.7.4生產環(huán)境141
4.7.5基于環(huán)境的Startup類和方法142
4.8Session詳解142
4.8.1什么是Session142
4.8.2理解Session機制143
4.8.3ASP.NET Core中的Session144
4.8.4ASP.NET Core中如何使用Session145
4.9ASP.NET Core中的緩存149
4.9.1緩存的基礎知識149
4.9.2將數據緩存在內存中149
4.9.3基于SQL Server的分布式緩存158
第5章Entity Framework Core167
5.1先決條件167
5.2Visual Studio開發(fā)167
5.2.1使用 NuGet的包管理器用戶界面167
5.2.2使用 NuGet的包管理器控制臺168
5.3創(chuàng)建數據庫168
5.4EF Core的兩種編程方式170
5.5EF Core 2.0 Database First的基本使用170
5.6Entity Framework Core的實體特性177
5.6.1數據注釋特性Key178
5.6.2數據注釋特性Timestamp182
5.6.3數據注釋特性ConcurrencyCheck183
5.6.4數據注釋特性Required184
5.6.5數據注釋特性MaxLength186
5.6.6數據注釋特性MinLength187
5.6.7數據注釋特性Table188
5.6.8數據注釋特性Column191
5.6.9數據注釋特性ForeignKey193
5.6.10數據注釋特性NotMapped196
5.7EF Core 2.0 Code First199
5.8EF Core 2.0 Code First 創(chuàng)建數據庫199
5.8.1創(chuàng)建實體199
5.8.2創(chuàng)建數據庫203
5.8.3數據庫修改204
5.8.4還原遷移206
5.8.5刪除遷移207
5.8.6生成SQL腳本208
5.8.7創(chuàng)建存儲過程209
5.8.8給數據庫添加初始數據209
5.9用EF Core 2.0 Code First查詢數據214
5.9.1查詢的工作原理215
5.9.2執(zhí)行查詢215
5.9.3基本查詢216
5.9.4異步查詢217
5.9.5加載所有數據218
5.9.6加載單個實體218
5.9.7條件查詢219
5.9.8使用SQL語句查詢220
5.9.9基本SQL查詢221
5.9.10傳遞參數221
5.9.11使用SQL查詢,用LINQ編寫條件排序222
5.9.12跟蹤與非跟蹤查詢223
5.10EF Core 2.0 Code First保存數據224
5.10.1添加數據225
5.10.2修改數據228
5.10.3刪除數據230
5.10.4單個 SaveChanges中的多個操作232
5.10.5異步保存235
5.10.6使用事務235
5.10.7默認事務235
5.10.8顯式事務235
5.11EF Core 2.0 Code First處理并發(fā)沖突239
5.11.1并發(fā)沖突239
5.11.2樂觀并發(fā)239
5.11.3檢測并發(fā)沖突241
5.11.4解決并發(fā)沖突243
5.11.5使用時間戳和行級版本號246
第6章ASP.NET Core MVC253
6.1ASP.NET Core MVC概述253
6.1.1什么是 MVC模式253
6.1.2什么是ASP.NET Core MVC254
6.2ASP.NET Core中的路由259
6.2.1路由259
6.2.2路由基礎知識259
6.2.3路由模板263
6.2.4路由約束263
6.2.5正則表達式265
6.3ASP.NET Core中的模型綁定266
6.3.1模型綁定簡介266
6.3.2模型綁定的工作原理266
6.3.3數組綁定269
6.3.4返回帶格式的數據270
6.4ASP.NET Core MVC 中的模型驗證271
6.4.1模型驗證簡介271
6.4.2驗證特性272
6.4.3自定義驗證273
6.4.4客戶端驗證275
6.4.5遠程驗證277
6.5ASP.NET Core MVC 中的視圖279
6.5.1Razor視圖引擎279
6.5.2使用視圖的好處280
6.5.3創(chuàng)建視圖281
6.5.4控制器如何指定視圖281
6.5.5向視圖傳遞數據283
6.6ASP.NET Core 中的布局288
6.6.1什么是布局288
6.6.2指定布局290
6.6.3導入共享指令291
6.6.4在呈現每個視圖之前運行代碼292
6.7ASP.NET Core 中的標記助手293
6.7.1什么是標記助手293
6.7.2標記助手的功能294
6.7.3管理標記助手的作用域296
6.7.4標記助手的智能提示支持297
6.8ASP.NET Core 中的分部視圖299
6.8.1什么是分部視圖299
6.8.2何時使用分部視圖300
6.8.3聲明分部視圖300
6.8.4分部視圖訪問示例300
6.9ASP.NET Core 中的視圖組件304
6.9.1什么是視圖組件304
6.9.2如何創(chuàng)建視圖組件類304
6.9.3創(chuàng)建一個簡單的視圖組件305
6.9.4調用視圖組件作為標記助手308
6.9.5在控制器方法中直接調用視圖組件309
6.9.6指定視圖名稱310
6.10在ASP.NET Core MVC 中使用控制器處理請求312
6.10.1什么是控制器312
6.10.2定義操作313
6.10.3控制器響應返回的方法313
6.11ASP.NET Core 中的過濾器314
6.11.1過濾器314
6.11.2過濾器的工作原理314
6.11.3授權過濾器315
6.11.4資源過濾器315
6.11.5操作過濾器317
6.11.6異常過濾器319
6.11.7結果過濾器321
6.11.8內置過濾器特性322
6.11.9取消和設置短路323
6.11.10依賴關系注入324
6.11.11過濾器示例325
6.12ASP.NET Core 中的區(qū)域331
第7章依賴注入337
7.1什么是依賴注入337
7.1.1什么是依賴337
7.1.2什么是注入338
7.1.3為什么要反轉338
7.1.4何為容器340
7.2.NET Core DI341
7.2.1構造函數注入行為341
7.2.2實例的注冊341
7.2.3實例的生命周期342
7.3DI在ASP.NET Core中的應用349
7.3.1在Startup類中初始化351
7.3.2在控制類中使用352
7.3.3通過 HttpContext來獲取實例353
7.4在 ASP.NET Core 中將依賴項注入到視圖中354
7.4.1簡單示例354
7.4.2填充查找數據356
7.5如何替換其他的IoC容器358
7.5.1Autofac的基本使用359
7.5.2用Autofac代替原來的IoC364
7.5.3一個接口對應多個實現的情況369
第8章Razor視圖373
8.1什么是Razor373
8.2Razor保留關鍵字374
8.2.1Razor關鍵字374
8.2.2C# Razor關鍵字374
8.3使用Razor語法編寫表達式375
8.3.1隱式 Razor表達式375
8.3.2顯式 Razor表達式377
8.3.3表達式的編碼378
8.4Razor代碼塊379
8.5Razor邏輯條件控制382
8.5.1if和switch條件語句382
8.5.2循環(huán)語句383
8.5.3復合語句@using385
8.5.4異常處理語句@try、catch、finally386
8.5.5加鎖語句@lock386
8.5.6注釋387
8.6指令387
8.7ASP.NET Core中的 Razor頁面介紹389
8.7.1啟用Razor頁面389
8.7.2Razor頁面介紹390
8.7.3編寫基本窗體391
8.7.4頁面的URL生成405
8.7.5針對一個頁面的多個處理程序406
第9章Web UI框架的選擇412
9.1以JQuery為核心的前端框架413
9.1.1EasyUI413
9.1.2DWZ JUI414
9.1.3LigerUI415
9.2以Bootstrap為核心的前端框架416
9.2.1HUI416
9.2.2H UI416
9.2.3Ace Admin417
9.2.4Metronic418
9.2.5AdminLTE419
9.2.6INSPINIA420
9.3以ExtJS為核心的前端框架421
參考文獻423