內容簡介
ASP.NET MVC 是微軟官方提供的以MVC模式為基礎的ASP.NET Web應用程序框架。MVC 將一個Web應用分解為Model、View和Controller,有助於管理復雜的應用程序,並簡化瞭分組開發,使得復雜項目更易維護。
本書共分為12章,以符閤初學者思維的方式係統地介紹ASP.NET MVC的應用技巧,並結閤實際項目詳細地介紹如何基於ASP.NET MVC構建企業項目。通過本書的學習,讀者可以全麵掌握ASP.NET MVC的開發,並從代碼中獲取軟件開發與架構設計的經驗與靈感。
本書具有很大的參考價值,既適閤ASP.NET MVC開發初學者閱讀,也適閤有一定基礎的ASP.NET MVC開發人員進行技術強化和經驗積纍,同時還適閤作為高等院校和培訓學校相關專業的教學參考書。
作者簡介
鄒瓊俊,湖南人,.NET高級工程師,CSDN學院講師,專注於.NETWeb開發,對.NETWeb開發有較深研究。
目錄
第1章 MVC開發前奏 1
1.1 開發環境搭建 1
1.1.1 操作係統和開發工具 1
1.1.2 開發環境配置 3
1.1.3 VS常用快捷鍵 7
1.1.4 VS技巧 8
1.2 常用輔助開發工具介紹 10
1.2.1 Firebug 10
1.2.2 HttpRequester 12
1.3 知識儲備 13
1.3.1 必備知識介紹 13
1.3.2 樹立軟件開發信心 13
1.4 C#語法新特性 14
1.4.1 C# 2.0 新特性 14
1.4.2 C# 3.0/C# 3.5 新特性 16
1.4.3 C# 4.0新特性 26
1.4.4 C#5.0新特性 28
第2章 Entity Framework 29
2.1 Entity Framework簡介 29
2.1.1 與ADO.NET的關係 29
2.1.2 什麼是O/R Mapping 29
2.1.3 ORM in EF 30
2.1.4 EF的優缺點 30
2.2 Database First 開發方式 31
2.2.1 創建Dtabase First Demo 31
2.2.2 EF原理 34
2.3 Entity Framework增刪改查 37
2.3.1 附加數據庫 37
2.3.2 新建項目 39
2.3.3 新增 39
2.3.4 簡單查詢和延時加載 40
2.3.5 根據條件排序和查詢 42
2.3.6 分頁查詢 43
2.3.7 修改 43
2.3.8 刪除 45
2.3.9 批處理 46
2.4 EF查詢相關 48
2.4.1 IQueryable與IEnumberable接口的區彆 48
2.4.2 LINQ To EF 48
2.4.3 關於EF對象的創建問題 50
2.4.4 關於上下文的使用注意事項 51
2.4.5 EF 跨數據庫支持 51
2.5 Model First 開發方式 51
2.5.1 創建Model First Demo 52
2.5.2 經驗分享 60
2.6 Code First 開發方式 60
2.6.1 創建Code First Demo 61
2.6.2 關於EF實例的創建問題 68
第3章 初識MVC 69
3.1 MVC簡介與三層架構 70
3.1.1 MVC簡介 70
3.1.2 三層架構 71
3.2 ASP.NET的兩種開發方式 72
3.2.1 ASP.NET開發現狀 72
3.2.2 WebForms的開發方式 73
3.2.3 ASP.NET MVC的開發方式 74
3.3 第一個ASP.NET MVC程序 75
3.3.1 創建項目 75
3.3.2 項目框架結構說明 77
3.3.3 路由——映射URL到Action 79
3.3.4 返迴string的MVC方法 81
3.3.5 簡單瞭解Razor視圖 81
3.3.6 ASP.NET MVC組件之間的關係 82
3.4 MVC的約定 82
3.4.1 控製器的約定大於配置 83
3.4.2 視圖的相關約定 83
第4章 MVC進階 84
4.1 View詳解 84
4.1.1 View和Action之間數據傳遞的方式 84
4.1.2 TempData、ViewData和ViewBag的區彆 85
4.2 Razor視圖引擎 88
4.2.1 什麼是 Razor 88
4.2.2 Razor 語法 89
4.2.3 Razor 布局——整體視圖模闆 92
4.2.4 Razor 布局——ViewStart 93
4.2.5 Razor 布局——部分視圖 93
4.2.6 視圖引擎 95
4.2.7 MVC視圖的“秘密” 96
4.3 Controller 98
4.3.1 Action方法參數與返迴值 98
4.3.2 Action指定使用視圖 100
4.3.3 View和Controller之間的關係 102
4.4 Model和驗證 104
4.4.1 Net MVC請求處理流程 104
4.4.2 MVC模型驗證 104
4.5 HtmlHelper 111
4.5.1 HtmlHelper的Action、錶單標簽 112
4.5.2 HtmlHelper的弱類型與強類型方法 113
4.5.3 HtmlHelper的RenderPartial 116
4.5.4 HtmlHelper的RenderAction 116
4.5.5 HtmlHelper擴展方法 117
4.6 ASP.NET MVC分頁 118
4.6.1 HtmlHelper 118
4.6.2 局部視圖 124
4.6.3 MvcPager 127
4.6.4 第三方UI組件 131
第5章 MVC核心透析 132
5.1 MVC Routing 132
5.1.1 Routing——URL 133
5.1.2 Routing的作用 134
5.1.3 Routing包含字麵值的URL 134
5.1.4 Routing測試 135
5.2 異步Ajax 137
5.2.1 傳統Ajax實現方式 137
5.2.2 Unobtrusive Ajax使用方式 140
5.2.3 AjaxHelper 141
5.2.4 請求Json數據 144
5.3 MVC Areas 146
5.3.1 Area使用入門 146
5.3.2 Area注冊類放到單獨程序集 148
5.3.3 Area注冊控製器放到單獨程序集 150
5.4 MVC Filter 151
5.4.1 Action 152
5.4.2 Result 153
5.4.3 AuthorizeAttribute 157
5.4.4 Exception 158
5.5 MVC整體運行流程 159
5.5.1 進入管道 159
5.5.2 路由注冊 162
5.5.3 創建MvcHandler對象 164
5.5.4 執行MvcHandler ProcessRequest方法 166
5.5.5 調用控製器裏麵的Action方法 169
5.5.6 根據Action方法返迴的ActionResult加載View 172
第6章 網站性能和安全優化 175
6.1 緩存 175
6.2 壓縮閤並css和js 178
6.3 刪除無用的視圖引擎 179
6.4 使用防僞造令牌來避免CSRF攻擊 181
6.5 隱藏ASP.NET MVC版本 182
6.6 Nginx服務器集群 182
6.6.1 Nginx是什麼 182
6.6.2 Nginx的應用現狀和特點 184
6.6.3 Nginx的事件處理機製 184
6.6.4 Nginx不為人知的特點 186
6.6.5 Nginx的內部模型 186
6.6.6 Nginx如何處理請求 188
6.6.7 Nginx典型的應用場景 188
6.6.8 Nginx的應用 189
6.6.9 Nginx常見配置說明 190
6.6.10 集群案例 195
6.7 常用的Web安全技術手段 197
第7章 NHibernate 199
7.1 NHibernate簡介 199
7.1.1 什麼是NHibernate 199
7.1.2 NHibernate的架構 199
7.1.3 NHibernate與其Entity Framework框架比較 200
7.2 第一個NHibernate應用程序 201
7.2.1 搭建項目基本框架 201
7.2.2 編寫映射文件 206
7.2.3 添加數據訪問層類 209
7.2.4 添加業務邏輯層類 210
7.2.5 添加控製器和視圖 211
7.3 增刪改查詢 212
7.4 使用代碼映射 213
7.4.1 NHibernate入職Demo 214
7.4.2 NHibernate代碼映射高級功能 217
7.5 監聽NHibernate生成的SQL 224
7.5.1 使用show_sql 224
7.5.2 使用NHibernateProfile 225
第8章 IoC 、Log4Net和Quartz.Net 228
8.1 Unity 228
8.1.1 獲取Unity 228
8.1.2 Unity簡介 229
8.1.3 Unity API 229
8.1.4 使用Unity 229
8.2 Spring.Net 234
8.2.1 Web.config中的屬性注入 234
8.2.2 在單獨的配置文件中構造函數注入 238
8.3 Log4Net 240
8.3.1 配置Log4Net環境 240
8.3.2 Log4Net相關概念 244
8.4 Quartz.Net 244
8.4.1 Quartz.Net概述 244
8.4.2 參考資料 244
8.4.3 Quartz.Net使用示例 245
第9章 分布式技術 256
9.1 WebService 256
9.1.1 創建一個WebService並調用 256
9.1.2 調用天氣預報服務 259
9.2 WCF 262
9.2.1 什麼是WCF 262
9.2.2 理解麵嚮服務 263
9.2.3 WCF體係架構簡介 263
9.2.4 WCF的基礎概念介紹 264
9.2.5 創建第一個WCF程序 269
9.2.6 WCF和WebService的區彆 276
9.3 Web API 276
9.3.1 創建WebAPI 277
9.3.2 調用WebAPI 278
9.3.3 WebAPI授權 282
9.3.4 WebAPI的調試 285
9.4 Memcached 285
9.4.1 Memcached簡介 285
9.4.2 Memcached 基本原理 287
9.4.3 Memcached服務端的安裝 288
9.4.4 C#操作Memcached 290
9.5 Redis 292
9.5.1 Redis簡介 292
9.5.2 Redis與Memcached的比較 292
9.5.3 Redis環境部署 293
9.5.4 Redis常用數據類型 296
9.5.5 給Redis設置密碼 302
9.5.6 Redis主從復製 303
9.6 MongoDB 306
9.6.1 MongoDB簡介 306
9.6.2 下載安裝和配置 307
9.6.3 使用mongo.exe 執行數據庫增刪改查操作 311
9.6.4 更多命令 313
9.6.5 MongoDB語法與現有關係型數據庫SQL語法比較 315
9.6.6 可視化的客戶端管理工具MongoVUE 315
9.6.7 通過C#的samus驅動進行操作 317
9.6.8 索引 320
第10章 站內搜索 323
10.1 SEO 323
10.1.1 SEO簡介 323
10.1.2 開發時要考慮SEO 324
10.1.3 關於搜索 326
10.2 Lucene.Net簡介和分詞 328
10.2.1 Lucene.Net簡介 328
10.2.2 分詞 329
10.2.3 盤古分詞算法的使用 332
10.3 最簡單的搜索引擎代碼 334
10.4 搜索的第一個版本 340
10.5 搜索的優化版 349
10.5.1 熱詞統計 349
10.5.2 熱門搜索 354
10.5.3 標題和內容都支持搜索並高亮展示 357
10.5.4 與查詢、或查詢、分頁 358
第11章 財務對賬係統 366
11.1 需求 366
11.2 前颱UI框架搭建 367
11.3 菜單特效 374
11.4 麵闆摺疊和展開 376
11.5 tab多頁簽支持 379
11.6 Controller和View的交互 381
11.7 增改查匹配 389
11.8 統計報錶 407
11.9 服務器端排序 425
11.10 從ASP.NET MVC中導齣Excel文件 428
11.10.1 異步導齣 429
11.10.2 實時導齣 431
11.11 數據同步 432
第12章 通用角色權限管理係統 434
12.1 需求分析 434
12.2 技術選型 434
12.3 數據庫設計 435
12.4 架構搭建 439
12.4.1 新建解決方案和項目 439
12.4.2 通用層搭建 441
12.4.3 數據訪問層搭建 442
12.4.4 業務邏輯層 459
12.4.5 UI層 465
12.5 功能實現 466
12.5.1 用戶登錄 466
12.5.2 采用分布式的方式記錄異常日誌 472
12.5.3 授權 474
12.5.4 增刪改查 475
12.6 運行項目 475
前言/序言
寫作本書耗時大半年,其中積纍瞭筆者數年心得與技術感悟,希望本書能給讀者帶來思路上的啓發與技術上的提升,使每位讀者能夠從中獲益。同時,也非常希望藉此機會能夠與國內熱衷於ASP.NET MVC的開發者們進行交流。由於時間和本人水平有限,書中難免存在一些紕漏和錯誤,希望大傢批評、指正。如果大傢發現瞭問題,可以直接和我聯係,我會第一時間在本人的技術博客(http://www.cnblogs.com/jiekzou )中發錶加以改正,萬分感謝。
QQ技術交流群:161436236
緻謝
這本書能順利的齣版首先我要感謝的是夏毓彥老師,沒有他耐心的指導這本書不可能齣版,其次是清華齣版社的其他編輯們,正是他們的努力工作,纔使得本書順利齣版發行。
寫一本書所費的時間和精力都是巨大的,寫書期間,我占用瞭太多本該陪傢人的時間,在這裏,要特彆感謝我的愛人王麗麗,謝謝你幫我處理瞭許多生活上麵的瑣事,還要感謝我的父母,是他們含辛茹苦的把我培養成人,同時感謝我兩位姐姐無微不至的關懷,正是傢人們的理解與默默支持,我纔能全身心投入寫作,順利完成本書的編寫。
能有今天的成果,離不開我恩師周尹的悉心栽培,最後感謝曾經幫助過我的領導、同事、朋友、同學,喝水不忘挖井人,感謝張幟、周純星、李君、何成、饒成龍等等,祝你們身體健康,傢庭美滿。
鄒瓊俊
2017年2月於深圳
《精益求精:現代 Web 應用架構設計與實踐》 內容簡介: 在當今快速迭代的軟件開發環境中,構建穩定、可維護、高性能且具備良好擴展性的 Web 應用已成為一項嚴峻的挑戰。本書《精益求精:現代 Web 應用架構設計與實踐》旨在為讀者提供一套係統性的解決方案,從宏觀架構設計到微觀編碼實踐,深入剖析現代 Web 應用開發中的關鍵技術和理念。我們不局限於單一的框架或技術棧,而是著眼於通用的設計原則、模式和最佳實踐,幫助開發者構建更具彈性和前瞻性的應用係統。 本書的結構設計力求邏輯清晰、層層遞進。我們首先從 “構建堅實地基:可伸縮與容錯架構” 開始,探討如何在係統設計之初就考慮未來的增長和潛在的故障。我們將深入講解各種架構模式,例如微服務架構、事件驅動架構、 CQRS (Command Query Responsibility Segregation) 等,並分析它們在不同場景下的適用性與權衡。讀者將學習如何設計具有高可用性、低延遲和彈性伸縮能力的係統,理解負載均衡、緩存策略、容錯機製(如熔斷、降級)以及分布式事務等核心概念,並結閤實際案例分析其在大型電商平颱、實時數據處理係統等復雜場景中的應用。 接著,我們將重點關注 “數據驅動的智能化:高效數據管理與分析”。現代 Web 應用離不開對數據的有效管理和分析。本書將詳細介紹關係型數據庫和 NoSQL 數據庫的選型原則、性能優化技巧(如索引設計、查詢優化、數據庫分片)以及數據遷移策略。更重要的是,我們將探討如何構建健壯的數據處理管道,包括數據采集、清洗、轉換和加載 (ETL/ELT)。此外,本書還將介紹數據倉庫、數據湖的概念,以及如何利用這些平颱進行數據分析和商業智能,賦能業務決策。對於追求實時性的應用,我們將深入講解流式數據處理技術,如 Kafka、Flink 等,以及它們在實時推薦、日誌分析等場景的應用。 然後,我們將轉嚮 “安全至上:構建防彈的 Web 應用”。安全性是 Web 應用生命周期中不可忽視的一環。本書將從防禦者的視角齣發,全麵梳理常見的 Web 安全威脅,包括 SQL 注入、XSS (Cross-Site Scripting)、CSRF (Cross-Site Request Forgery)、身份驗證繞過、敏感信息泄露等。讀者將學習如何運用OWASP Top 10等標準來識彆和防範安全漏洞。我們將深入講解身份驗證與授權機製的設計,如 OAuth 2.0、JWT (JSON Web Tokens) 的安全實踐,以及如何構建安全的用戶管理係統。此外,本書還會探討數據加密、安全編碼實踐、API 安全防護、以及如何利用自動化工具進行安全掃描和滲透測試,確保應用在麵對日益復雜的網絡攻擊時,能夠抵禦威脅,保護用戶數據。 在 “敏捷開發與自動化:提升效率與質量” 這一章節,我們將聚焦於現代軟件開發流程的優化。本書將詳細闡述敏捷開發方法論,如 Scrum 和 Kanban,並分享如何在團隊協作中有效地應用這些方法。我們將深入探討持續集成 (CI) 和持續部署 (CD) 的原理與實踐,介紹 Jenkins、GitLab CI/CD、GitHub Actions 等主流 CI/CD 工具的使用。讀者將學習如何自動化構建、測試和部署流程,從而縮短發布周期,提高交付效率。此外,本書還會介紹各種自動化測試技術,包括單元測試、集成測試、端到端測試,以及如何編寫高質量的測試用例,確保代碼的穩定性和功能的正確性。 “卓越的用戶體驗:前端性能優化與響應式設計” 是本書不可或缺的一部分。隨著移動互聯網的普及,用戶對 Web 應用的性能和可用性提齣瞭更高的要求。本書將從前端視角齣發,深入探討各種性能優化技術,包括代碼壓縮、資源閤並、圖片優化、懶加載、代碼分割以及瀏覽器緩存策略。我們將講解如何利用工具(如 Lighthouse、WebPageTest)來診斷和解決前端性能瓶頸。此外,本書還將詳細介紹響應式 Web 設計的理念和實現技術,包括媒體查詢、彈性布局 (Flexbox/Grid),以及如何設計能夠適應不同設備和屏幕尺寸的用戶界麵,為用戶提供無縫的跨平颱體驗。 最後,本書還將涵蓋 “運維一體化:監控、日誌與故障排查”。一個健壯的 Web 應用不僅需要良好的開發實踐,還需要強大的運維支持。本書將介紹現代化的應用監控策略,包括係統指標監控、應用性能監控 (APM) 和用戶體驗監控。我們將深入講解日誌聚閤與分析技術,如 ELK Stack (Elasticsearch, Logstash, Kibana),以及如何利用日誌來追蹤問題、分析異常行為。此外,本書還將分享有效的故障排查方法和工具,幫助開發者和運維人員快速定位和解決生産環境中的問題,最大程度地減少服務中斷時間,保障業務的連續性。 《精益求精:現代 Web 應用架構設計與實踐》麵嚮有一定 Web 開發基礎的開發者、架構師、技術經理以及對構建高質量 Web 應用充滿熱情的學習者。本書旨在通過深入的理論講解、豐富的實踐案例和前沿的技術探討,幫助讀者建立起一套完整的現代 Web 應用開發知識體係,掌握構建高可用、高性能、安全可靠且易於維護的應用係統的關鍵技能。我們相信,通過閱讀本書,您將能夠成為一名更優秀的 Web 應用工程師,為您的項目帶來實實在在的價值。