《ASP.NET MVC 5 網站開發之美》是2015年清華大學出版社出版的圖書,作者是demo、小朱、陳傳興等。
基本介紹
- 書名:ASP.NET MVC 5 網站開發之美
- 作者:demo、小朱、陳傳興、王育民、陳仕傑
- ISBN:9787302413387
- 定價:128元
- 出版時間:2015.09.01
- 印次:1-1
- 印刷日期:2015.09.02
內容簡介,目錄,
內容簡介
ASP.NET?MVC是微軟Web開發平台中最重要的一塊拼圖,其架構特性更適合用來開發大型的Web應用程式,且ASP.NETMVC的開發方式也越來越受到重視,因此學習MVC已是刻不容緩。
本書以ASP.NETMVC5為主,涉及MVC5.2RTM、WebAPI2.2RTM及VisualStudio2013Update2等最新內容,套用範圍可涵蓋MVC2~5。全書從快速學會Model的概念入手,講述LINQ以及EntityFramework開發技術;深度認識Controller以及如何靈活運用、使用Routing技術,讓網站在搜尋引擎中擁有高排名;View+Bootstrap套用開發;豐富實用的網站安全性技術;詳解WebAPI、ASP.NETIdentity技術;完整的CMS範例分析;充分運用MVC的技術與特性;搶先預覽ASP.NETvNext及MVC6等;是一本內容豐富且紮實的教材與技術參考書。
本書作者在ASP.NETMVC開發上均有豐富的實戰經驗,通過本書可以讓讀者快速進入ASP.NETMVC的開發領域,掌握實用的網站開發技術;對於需要學習MVC套用開發的初學者或是己經具備WebForms開發經驗的軟體工程師來說,都是難得的經典之作。
目錄
第1章 MVC概述 1
1.1 MVC架構概述 1
1.1.1 MVC是什麼 1
1.1.2 關注點分離 2
1.1.3 約定優於配置 2
1.1.4 MVC的優點與特長 2
1.1.5 MVC的成長趨勢 3
1.2 ASP.NET MVC概述 4
1.2.1 與傳統ASP.NET Web Forms的差異 4
1.2.2 Model的責任 5
1.2.3 View的範圍 6
1.2.4 Controller要做哪些事 7
1.3 ASP.NET MVC 5開發環境 8
1.3.1 One ASP.NET 8
1.3.2 Visual Studio 2013 Web Templates 9
1.3.3 Scaffold(基架) 12
1.3.4 Visual Studio 2013新增功能介紹 12
1.4 NuGet的使用 20
1.4.1 安裝程式包 20
1.4.2 還原程式包 22
1.4.3 更新程式包 26
1.4.4 程式包管理器控制台(Package Manager Console) 26
1.5 IIS Express 29
1.5.1 如何在Visual Studio中使用IIS Express 30
1.5.2 如何使用命令行啟用 IIS Express 31
1.5.3 讓IIS Express 也支持外部連線 34
1.5.4 整理過多的網站信息 35
1.6 ASP.NET Web Forms轉換至MVC開發 36
1.6.1從WebForms轉到MVC後開發概念的改變 36
1.6.2數據源的改變 36
1.7創建第一個MVC網際網路應用程式 41
1.7.1創建MVC項目 41
1.7.2創建資料庫(使用LocalDB) 45
1.7.3創建MVC中的Model 48
1.7.4創建MVC中的View與Controller 52
1.7.5更新為最新MVC版本 55
1.7.6MVC的生命周期 56
1.8結術語 58
參考資料 58
第2章與數據的對話:Model與ADO.NET 60
2.1Model的概念 60
2.1.1Model的類型 61
2.1.2Model的設計 61
2.2ADO.NET 63
2.2.1面向連線的操作 63
2.2.2面向無連線的操作 64
2.3泛型概念 65
2.3.1泛型基礎 65
2.3.2設計泛型類 66
2.4Model的實現 70
2.4.1Model的設計 70
2.4.2Model數據讀寫的設計 71
2.5SQLInjection 82
2.6結術語 83
第3章LINQ:驅動數據的查詢功能 84
3.1LINQ概念 84
3.1.1LINQvs.循環處理 85
3.1.2LINQ的類型 88
3.2LINQ的基礎 89
3.2.1擴展方法 89
3.2.2匿名類型與對象初始化器 91
3.2.3類型推論 93
3.2.4yield指令與延遲查詢 94
3.2.5FluentInterface 96
3.3Lambda表達式 97
3.3.1Lambda表達式的由來 97
3.3.2Lambda表達式的格式 98
3.3.3通用委派與Lambda表達式 100
3.4LINQ語句 100
3.5LINQ函式 101
3.5.1查詢結果過濾:Where() 102
3.5.2選取數據:Select()、SelectMany() 102
3.5.3群組數據:GroupBy()、ToLookup() 105
3.5.4聯接數據:Join()與GroupJoin() 108
3.5.5數據排序:OrderBy()與ThenBy() 109
3.5.6獲取集合 112
3.5.7劃分並獲取集合 113
3.5.8集合的運算 114
3.5.9訪問元素 116
3.5.10聚合與匯總 118
3.6遠程查詢:IQueryable<T>與IEnumerable<T> 120
3.7Expression 121
3.8LINQ與ADO.NET:DataSet/DataTable的使用 124
3.9結術語 126
第4章EF 127
4.1ORM概念 127
4.2EF概述 129
4.3EF架構 133
4.3.1數據模型映射 133
4.3.2EntitySQLService 135
4.3.3ObjectServices 135
4.3.4LINQtoEntities 137
4.4DatabaseFirst 138
4.5ModelFirst 143
4.6CodeFirst 150
4.6.1生成模型——空白CodeFirst的做法 150
4.6.2生成模型——由資料庫生成 155
4.6.3CodeFirstModelingAPIs 156
4.6.4實現關聯性 159
4.6.5實現繼承 163
4.6.6存儲過程和函式映射 170
4.7通過DbContext訪問EF數據模型 172
4.7.1DbSet<T> 172
4.7.2以對象為主的查詢 173
4.7.3以SQL為主的查詢 174
4.7.4數據的變動 176
4.7.5驗證 177
4.7.6更新的考慮 179
4.8更新資料庫:DatabaseMigration 180
4.8.1資料庫初始化器 180
4.8.2資料庫遷移-自動遷移 181
4.8.3資料庫遷移-手動遷移 186
4.8.4資料庫遷移-程式遷移 188
4.9結術語 189
參考文獻 189
第5章路由(Routing) 190
5.1URLRewriting與Route基本概念 190
5.2URLRouting基本套用 191
5.3加入自定義的URLRouting 193
5.4URLRouting如何對比 194
5.5為URLRouting加上限制條件 195
5.6URLRouting高級套用 197
5.6.1如何從程式建立一組網址 198
5.6.2直接獲取RouteData內的值 198
5.7如何調試網站 199
5.7.1使用RouteDebugger2.0 199
5.7.2使用CobisiRoutingAssistant 200
5.8Area 201
5.8.1創建第一個Area 202
5.8.2使用Area會遇到的問題 204
5.8.3根據功能模組區分的Area 206
5.9結術語 207
第6章控制器(Controller) 208
6.1了解Controller角色 209
6.1.1了解Controller工作流程 210
6.1.2ASP.NETMVC5驗證系統 216
6.1.3創建Model層 219
6.1.4基架系統 222
6.2Controller與View的數據傳遞 227
6.2.1ViewData屬性 227
6.2.2ViewBag屬性 229
6.2.3ViewData、ViewBag傳遞Model 231
6.2.4ViewData.Model屬性 234
6.2.5TempData屬性 236
6.2.6多Model與多對象傳遞 241
6.3ModelBinding 251
6.3.1Request對象 251
6.3.2RouteData 251
6.3.3簡單ModelBinding 252
6.3.4複雜的ModelBinding 256
6.3.5JSONModelBinding 259
6.3.6ModelBinder擴展 260
6.4Metadata與數據驗證 263
6.4.1部分類 263
6.4.2驗證屬性 265
6.4.3ModelState 285
6.5ActionResult 297
6.5.1EmptyResult 300
6.5.2ContentResult 300
6.5.3JavaScriptResult 303
6.5.4JsonResult 304
6.5.5HttpStatusCodeResult 309
6.5.6RedirectResult與RedirectToRouteResult 310
6.5.7FileResult 317
6.5.8ViewResult 329
6.5.9VideoResult 335
6.6ActionFilters 338
6.6.1AuthenticationFilter 340
6.6.2AuthorizationFilter 347
6.6.3ActionFilter 354
6.6.4ResultFilter 356
6.6.5ExceptionFilter 360
6.6.6ActionFilters接口與擴展 363
6.6.7Filteroverrides 368
6.7其他Controller技巧 371
6.7.1ActionName屬性 371
6.7.2NoAction屬性 371
6.7.3支援多國語系 372
6.8結術語 375
第7章異步程式設計 376
7.1異步基架生成器 376
7.2進程與執行緒 380
7.2.1進程 380
7.2.2執行緒 381
7.2.3多執行緒的啟動 385
7.3同步與異步程式設計 386
7.3.1同步程式設計 387
7.3.2異步程式設計 387
7.4Task類 388
7.4.1接續工作 389
7.4.2Task.Delay 390
7.4.3Parallel類 391
7.5async與await關鍵字 392
7.5.1C#4.0與C#5.0異步差異 394
7.5.2同步方法讀取網路資源 396
7.5.3異步方法讀取網路資源 398
7.5.4異步方法執行流程 400
7.6異步與執行緒池 401
7.6.1如何選擇同步或異步操作 405
7.6.2執行多個並行操作 405
7.6.3使用cancellationToken 406
7.6.4多執行緒與異步 408
7.7結術語 409
第8章View:搖曳生姿的美人 410
8.1View概述 410
8.2View在項目中的位置 411
8.2.1Views目錄 412
8.2.2Views下的Shared目錄 413
8.2.3Views下的常規目錄 413
8.3View的類型 414
8.3.1View常規視圖 414
8.3.2PartialView部分視圖 416
8.3.3Layout主版頁面 417
8.3.4Template 420
8.4View獲得數據的方法 423
8.4.1Model 424
8.4.2ViewData及ViewBag 424
8.4.3TempData 425
8.5ViewEngine概述 425
8.5.1WebFormViewEngine 425
8.5.2RazorViewEngine 426
8.5.3ViewEngine的執行細節 426
8.5.4ViewEngine的擴展性 426
8.5.5RazorViewEngine對於View檔案的搜尋方式 427
8.6Razor語法 428
8.6.1Razor語法概述 429
8.6.2程式代碼區塊 432
8.6.3編譯指示詞 433
8.6.4排版與輔助功能 434
8.6.5全站可用的RazorHelper 438
8.6.6ASP.NETMVC4/Razorv2.0增強部分 440
8.7Helpers 443
8.7.1UrlHelper 443
8.7.2HtmlHelper 445
8.7.3AjaxHelper 465
8.7.4擴展Helper 469
8.8View開發技術的高級功能 474
8.8.1前端最佳化:JavaScript/CSS的合併與最佳化 474
8.8.2ViewEngine檔案搜尋最佳化 478
8.8.3Layout嵌套 481
8.9結術語 483
第9章Bootstrap 484
9.1Bootstrap導覽 485
9.1.1BasicTemplate 486
9.1.2GridSystem 486
9.1.3Component 492
9.1.4Bootstrap的JavaScript程式庫 492
9.2定製化Bootstrap 494
9.3ASP.NETMVC與Bootstrap合壁 496
9.3.1Component:Label、Badge、Alert、Progress 496
9.3.2表單域的集成 499
9.4結術語 502
第10章診斷及日誌處理 503
10.1預處理器 503
10.1.1基本規則 503
10.1.2預處理器 504
10.2Trace與Debug類 506
10.2.1Assert方法 507
10.2.2Listeners集合 508
10.3艾爾瑪(ELMAH) 509
10.3.1艾爾瑪的作用 510
10.3.2使用ELMAH.MVC 514
10.3.3XMLOut和DatabaseIn 516
10.3.4網站自動報錯功能 518
10.3.5ELMAH變形金剛 520
10.3.6ElmahR=ELMAH+SignalR 522
10.3.7ELMAH.io 523
10.4NLog-Advanced.NETLogging 524
10.4.1調用N日誌(NLog) 524
10.4.2NLog實戰 529
10.5ELMAH與NLog合體術 540
10.5.1LogReportingDashboard 540
10.5.2ELMAH.MVC+NLog 540
10.6結術語 541
第11章網站安全之道 542
11.1知己知彼 542
11.1.1XSS的防範 542
11.1.2如何有效防範XSS 544
11.1.3防止跨網站偽造請求 545
11.1.4參考資料 548
11.2加密與解密 549
11.2.1加密部落格 549
11.2.2窗體驗證原則 552
11.2.3ASP.NET加密技術 553
11.2.4哈希密碼 556
11.2.5Crypto類 557
11.2.6加密web.config 557
11.2.7登錄監控 560
11.3結術語 560
第12章身份驗證與授權 561
12.1使用Session做身份驗證 562
12.2使用Cookie做身份驗證 564
12.3使用FormsAuthentication做身份驗證 568
12.4全新的ASP.NETIDentity2.0 570
12.4.1ASP.NETIDentity2.0 572
12.4.2自定義驗證邏輯 576
12.4.3電子郵件驗證 578
12.4.4雙因素認證 584
12.4.5將用戶加入角色 584
12.4.6集成OAuth 587
12.5擴展會員欄位 594
12.6結術語 598
第13章ASP.NETWebAPI2概述 599
13.1WebService 600
13.1.1WebService架構 601
13.1.2XMLWebService 602
13.1.3WCF 604
13.1.4WCFREST 604
13.1.5小結 605
13.2ASP.NETWebAPI2 605
13.2.1IISExpress指令模式 607
13.2.2WebAPI路由 608
13.2.3REST 609
13.2.4HTTP動詞+URI 616
13.2.5小結 616
13.3Model與WebAPI2基架 617
13.4EF循環引用 619
13.5JSON 621
13.5.1XML與JSON 622
13.5.2了解JSON格式 623
13.5.3使用JSON數據 624
13.5.4JSON-LD 626
13.6POSTMAN 628
13.7結術語 630
第14章自動測試完整攻略 631
14.1測試概念簡介 631
14.1.1測試的目的 631
14.1.2測試的種類 632
14.1.3加入測試的時間點 633
14.1.4測試的效益 634
14.1.5小結 635
14.2測試程式設計技巧與工具的介紹 635
14.2.1單元測試 636
14.2.2Web自動測試 654
14.2.3行為驅動開發(Behavior-DrivenDevelopment,BDD) 662
14.3實戰演練——以重構計算運費為例 668
14.3.1範例說明 669
14.3.2建立測試案例(Feature與Scenarios) 672
14.3.3使用SeleniumIDE來錄製測試案例腳本 673
14.3.4編寫Selenium的測試程式(完成Steps.cs) 674
14.3.5幫程式代碼說話 677
14.3.6提取方法 679
14.3.7職責分離 680
14.3.8針對各貨運商類加入單元測試 682
14.3.9依賴接口與工廠方法 683
14.3.10小結 685
14.4總結 685
第15章網站部署 687
15.1ASP.NETMVCRTM的進化史 687
15.2部署到IIS 688
15.2.1Web部署工具 688
15.2.2將ASP.NETMVC4應用程式部署到IIS5.1中 691
15.3部署到MicrosoftAzure雲環境 692
15.3.1部署到MicrosoftAzureWebsite 692
15.3.2部署到MicrosoftAzureCloudService 697
15.4結術語 699
第16章CMS範例實戰 700
16.1新建項目 700
16.2創建數據 701
16.3建立區域 706
16.4使用MetaData 708
16.5使用NuGet 709
16.6建立會員機制 716
16.7分頁套用 716
16.8結術語 719
附錄AASP.NETMVC5.1與ASP.NETMVC5.2 720
附錄BASP.NETMVC6預覽 725