《項目中的·NET》是2012年電子工業出版社出版的圖書,作者是李天平。本書主要介紹了技術基礎總結、系統架構設計思想及項目實戰解析。
基本介紹
- 作者:李天平
- ISBN:9787121176708
- 頁數:756
- 定價:108.00元
- 出版社:電子工業出版社
- 出版時間:2012-8
- 裝幀:平裝
內容介紹
作者介紹
作品目錄
第1篇 技術基礎總結
第1章 .NET,你真的知道了嗎 3
1.1 搞清自己是乾什麼的 4
1.2 .NET的幾個特性 7
1.3 萬丈高樓平地起:面試者必會 9
1.3.1 C#介紹 10
1.3.2 命名空間 10
1.3.3 C#語法格式要點 10
1.3.4 變數 12
1.3.5 類型推斷 12
1.3.6 變數的作用域 13
1.3.7 常量 16
1.3.8 流程控制 16
1.3.9 字元串常見操作 21
1.3.10 幾個常用的數學函式 26
1.4 .NET的面向對象之門 27
1.4.1 繼承——“子承父業” 27
1.4.2 委託——“任務書” 35
1.4.3 反射——“解剖” 42
1.5 .NET開發幾把小刀 45
1.5.1 using之多變身 45
1.5.2 @符號的妙用 47
1.5.3 預處理指令,有你更輕鬆 48
1.6 Visual Studio.NET 2010 實戰 50
1.6.1 如何創建ASP.NET項目 51
1.6.2 如何創建Windows項目 53
1.6.3 Visual Studio.NET 2008/2010操作與使用技巧 54
1.6.4 常見開發調試技巧 58
1.6.5 錯誤異常處理方法 63
本章常見技術面試題 69
常見面試技巧之面試前的準備 69
本章小結 70
第2章 細節決定成敗 71
2.1 equals()和運算符==的區別 72
2.2 const和readonly的區別 74
2.3 private、protected、public和internal的區別 78
2.4 sealed、new、virtual、abstract與override 79
2.5 abstract class與interface 83
2.6 公共變數與屬性的區別 85
2.7 參數修飾符params、out和ref的區別 87
2.8 值類型和引用類型的區別 91
2.9 結構與類的區別 94
2.10 Dispose()和Close()、Finalize()的區別 97
2.11 string和StringBuilder的區別 98
2.12 Debug版本和Release版本的區別 99
本章常見技術面試題 102
常見面試技巧之細節決定成敗 102
本章小結 103
第3章 ASP.NET開發大雜燴 105
3.1 頁面生命周期 106
3.1.1 獨立頁面生命周期事件順序 106
3.1.2 具有Master頁的生命周期事件順序 108
3.1.3 ASP.NET生命周期詳解 110
3.2 頁面狀態管理 112
3.2.1 Cookie 113
3.2.2 HtmlInputHidden隱藏域 115
3.2.3 ViewState 115
3.2.4 查詢字元串Request 116
3.2.5 Application對象 117
3.2.6 Session對象 117
3.2.7 示例項目:線上用戶
列表統計 120
3.3 伺服器和客戶端數據互動 123
3.3.1 頁面數據綁定全攻略 123
3.3.2 Bind和Eval的區別 132
3.4 ASP.NET編程中的技巧 134
3.4.1 頁面之間傳值的7種方法 134
3.4.2 get與post方法的區別 137
3.4.3 ASP.NET伺服器控制項和HTML控制項的區別 138
3.4.4 Server.Transfer和Response.Redirect的區別 140
3.4.5 刷新頁面的方法匯總 141
3.4.6 頁面事件控制 142
3.4.7 在URL中傳遞中文的解決方案 144
3.4.8 增強用戶體驗的一些技巧 145
3.4.9 XHTML與HTML的區別 148
3.5 打造自己的頁面基類PageBase 153
本章常見技術面試題 156
常見面試技巧之如何做好自我介紹 156
本章小結 157
第4章 Windows窗體編程你也行 159
4.1 創建簡單的WinForm項目 160
4.2 創建MDI窗體套用 162
4.3 獲取應用程式路徑信息 166
4.4 回車跳轉控制項焦點 167
4.5 窗體間傳遞複雜數據 168
4.5.1 構造傳遞 168
4.5.2 公有欄位傳遞 169
4.5.3 委託與事件傳遞 171
4.6 實現個性化窗體界面 172
4.7 無標題窗體拖動的兩種方法 175
4.8 讓程式只啟動一次——單實例運行 176
4.9 實現系統托盤和熱鍵呼出 177
4.10 進程與多執行緒的區別 181
4.11 創建多執行緒應用程式 182
4.12 WinForm開發常見問題 185
4.12.1 如何設定運行時窗體的起始位置 186
4.12.2 如何使一個窗體在其他窗體的上面 186
4.12.3 實現窗體漸顯效果 186
4.12.4 設定視窗背景為漸變色 187
4.12.5 模態視窗和非模態視窗 187
4.12.6 禁止視窗右上角的關閉 操作 188
4.12.7 調用執行外部的程式 188
本章常見技術面試題 189
常見面試技巧之經典問題巧回答 189
本章小結 190
第5章 資料庫開發 191
5.1 ADO.NET與抽水的故事 192
5.1.1 ADO.NET的定義 192
5.1.2 趣味理解ADO.NET對象模型 194
5.1.3 進水籠頭——建立Connection 196
5.1.4 抽水機——Command 198
5.1.5 輸水管——DataAdapter 201
5.1.6 輸水管——DataReader 202
5.1.7 隨用隨關,釋放資源 204
5.1.8 水庫管理——DataSet 204
5.1.9 水池子——DataTable 206
5.2 資料庫操作類的封裝詳解 209
5.2.1 執行命令方法的封裝 209
5.2.2 查詢數據方法的封裝 212
5.2.3 數據統計方法的封裝 213
5.2.4 實現SqlParameter方式 214
5.2.5 實現多資料庫的訪問 215
5.3 常用的經典SQL語句 216
5.4 事務處理 218
5.4.1 SQL和存儲過程級別的事務 219
5.4.2 ADO.NET級別的事務 221
5.4.3 ASP.NET頁面級別的事務 222
5.4.4 企業級服務COM+事務 224
5.4.5 System.Transactions 事務處理 228
5.5 Oracle開發常見問題 232
5.5.1 Oracle和SQL Server的常用函式對比 232
5.5.2 Oracle和SQL Server的語句區別 236
5.5.3 ASP.NET連線Oracle失敗的解決方法 237
本章常見技術面試題 238
常見面試技巧之經典問題巧回答 238
本章小結 239
第6章 關於XML 241
6.1 XML概述 242
6.1.1 XML和HTML有什麼區別 242
6.1.2 XML的優勢 242
6.2 文檔結構與基本語法 243
6.3 XML操作 245
6.3.1 XmlDocument創建XML文檔 245
6.3.2 XmlTextWriter創建XML文檔 246
6.3.3 XmlDocument讀取XML文檔 248
6.3.4 XmlTextReader讀取XML文檔 249
6.3.5 在HTML中顯示XML中的數據 250
6.3.6 JavaScript獲取XML內容 251
6.3.7 項目案例:通用自定義XML配置類 254
6.4 ADO.NET與XML 258
6.4.1 讀XML文檔到DataSet 258
6.4.2 DataSet轉為XML文檔 259
6.5 項目案例1:實現網站的RSS套用 259
6.6 項目案例2:線上實現RSS閱讀器 262
本章常見技術面試題 267
常見面試技巧之經典問題巧回答 267
本章小結 268
第7章 Web Service開發詳解 269
7.1 Web Service基本概念 270
7.2 Web Service的套用場景 270
7.3 創建簡單的Web Service項目套用 272
7.4 Web Service屬性介紹 274
7.5 ASP.NET如何調用Web Service 278
7.6 JavaScript如何調用Web Service 280
7.6.1 通過webbehavior.htc調用Web Service 280
7.6.2 通過Microsoft.XMLDOM調用Web Service 282
7.6.3 XMLHTTP POST調用Web Service 284
7.6.4 SOAP調用Web Service 285
7.7 WinForm如何調用Web Service 286
7.7.1 .NET的WinForm調用Web Service 286
7.7.2 手動傳送HTTP請求調用Web Service 287
7.8 實現異步調用Web Service 289
7.9 如何保證Web Service的安全 290
7.9.1 通過SoapHeader增強Web Service的安全性 291
7.9.2 採用SSL實現加密傳輸 294
7.9.3 訪問IP限制 306
7.10 Web Service開發中需要注意的問題 307
本章常見技術面試題 311
常見面試技巧之經典問題巧回答 311
本章小結 312
第8章 用戶體驗的殺手鐧——AJAX 313
8.1 AJAX概述 314
8.1.1 什麼是AJAX 314
8.1.2 AJAX技術的核心 315
8.1.3 AJAX的工作原理 316
8.1.4 AJAX的優點 316
8.1.5 AJAX的局限性 317
8.1.6 AJAX適用場景 318
8.1.7 AJAX不適用的場景 319
8.1.8 XMLHttpRequest開發實例 319
8.2 微軟VS.NET的AJAX開發 323
8.2.1 安裝ASP.NET 2.0 AJAX Extensions 323
8.2.2 創建ASP.NET AJAX應用程式 324
8.2.3 ScriptManager控制項使用技巧 325
8.2.4 UpdatePanel控制項使用技巧 326
8.2.5 AsyncPostBackTrigger實現外部控制項引發局部刷新 328
8.2.6 AJAX錯誤處理 331
8.2.7 告訴用戶你正在做什麼——UpdateProgress控制項 332
8.2.8 ASP.NET AjaxControlToolkit簡介 335
8.3 使用第三方組件 AJAX.dll 開發 337
8.4 使用第三方組件AJAXPro的開發 341
8.5 使用第三方組件MagicAJAX的開發 341
8.6 AJAX開發原則 342
本章常見技術面試題 343
常見面試技巧之經典問題巧回答 343
本章小結 344
第9章 系統與檔案操作 345
9.1 獲取系統信息 346
9.1.1 用SystemInformation 類獲取系統信息 346
9.1.2 用Environment 類獲取系統信息 347
9.1.3 通過WMI獲取系統信息 348
9.1.4 用RegistryKey 類讀取系統信息 351
9.1.5 用API函式獲取系統信息 353
9.1.6 獲取系統服務信息 355
9.2 檔案操作 357
9.2.1 通過StreamWriter類實現寫檔案 358
9.2.2 通過File類創建檔案 358
9.2.3 通過FileStream類創建檔案 359
9.2.4 通過FileInfo類創建檔案 359
9.2.5 追加文本 360
9.2.6 讀取文本檔案 360
9.2.7 讀寫二進制檔案 362
9.2.8 檔案複製、移動和刪除 363
9.3 資料夾目錄操作 364
9.4 讀寫INI檔案 365
9.5 讀寫註冊表 368
本章常見技術面試題 370
常見面試技巧之經典問題巧回答 370
本章小結 371
第10章 網路套用開發 373
10.1 Socket基本編程 374
10.1.1 Socket基本知識 374
10.1.2 Socket服務端開發步驟 376
10.1.3 Socket客戶端開發步驟 378
10.2 異步Socket通信——實現MSN機器人 380
10.2.1 機器人服務端 380
10.2.2 客戶端實現步驟 384
10.3 基於TCP協定的客戶端和服務端 387
10.3.1 TcpListener 實現網路服務端 387
10.3.2 TcpClient實現網路客戶端 388
本章常見技術面試題 390
常見面試技巧之經典問題巧回答 390
本章小結 391
第11章 Windows Service開發 393
11.1 什麼是Windows服務 394
11.2 創建Windows服務 394
11.3 Windows服務開發常見問題 398
11.4 安裝/卸載Windows服務 399
11.4.1 安裝Windows服務 399
11.4.2 卸載Windows服務 400
11.4.3 Windows服務應用程式體系結構 400
11.5 調試Windows服務 403
11.5.1 日誌調試法 404
11.5.2 附加進程斷點調試法 404
本章常見技術面試題 405
職場智慧之初入江湖 405
本章小結 407
第12章 新技術初探 409
12.1 WPF 411
12.1.1 WPF簡介 411
12.1.2 WPF何以令人佩服 411
12.1.3 XAML概述 412
12.1.4 WPF開發環境配置 413
12.1.5 項目示例:開發一個簡單的WPF應用程式 414
12.2 WCF 416
12.2.1 SOA是什麼 417
12.2.2 WCF是什麼 417
12.2.3 WCF的優勢是什麼 418
12.2.4 WCF開發環境 421
12.2.5 項目示例:訂票服務WCF開發步驟 421
12.3 LINQ 430
12.3.1 LINQ的架構 430
12.3.2 傳統的查詢 431
12.3.3 LINQ查詢實例 433
12.3.4 LINQ查詢語法 438
本章常見技術面試題 439
職場智慧之學習方法 439
本章小結 440
第2篇 系統架構設計思想
第13章 面向對象思想 443
13.1 為什麼要面向對象 444
13.2 什麼是面向對象 446
13.3 面向對象的特點 448
13.3.1 封裝 448
13.3.2 繼承 449
13.3.3 多態 450
13.4 面向對象設計和開發實例 456
13.4.1 用傳統的過程化設計實現播放器功能 456
13.4.2 基於面向對象設計實現播放器功能 457
13.4.3 面向對象封裝、繼承、多態的套用 458
13.4.4 設計模式、條件外置及反射技術的套用 461
13.5 面向對象分析(OOA)的方法 464
13.6 面向對象設計的原則 468
13.6.1 優先使用(對象)組合,而非(類)繼承 468
13.6.2 針對接口編程,而非(接口的)實現 470
13.6.3 開放-封閉法則(OCP) 472
13.6.4 Liskov替換法則(LSP) 474
13.6.5 單一職責原則(SRP) 475
13.6.6 依賴倒置原則(DIP) 476
13.6.7 接口分離原則(ISP) 478
13.6.8 面向對象設計時需要注意的問題 479
本章常見技術面試題 480
本章小結 481
第14章 三層架構項目開發 483
14.1 什麼是三層架構 484
14.1.1 常用的三層架構設計 484
14.1.2 趣味理解:三層架構與養豬 486
14.2 為什麼要用三層架構 487
14.3 三層架構項目開發示例 490
14.3.1 資料庫設計 490
14.3.2 創建整體解決方案 491
14.3.3 業務實體Model的實現 492
14.3.4 數據訪問層的實現 494
14.3.5 業務邏輯層的實現 498
14.3.6 表示層的實現 499
14.4 實現基於工廠模式的三層架構 501
14.4.1 擴展新增數據訪問層 502
14.4.2 IDAL抽象接口的實現 503
14.4.3 創建DAL對象的封裝 507
14.4.4 實現抽象工廠模式 508
14.4.5 工廠模式的三層架構圖 511
本章常見技術面試題 512
職場智慧之程式設計師的職業規劃 512
本章小結 513
第15章 大型網站的性能最佳化與安全 515
15.1 高效C#編碼最佳化 516
15.2 頁面(HTML)最佳化的方法 523
15.3 ASP.NET開發性能最佳化 529
15.3.1 儘量使用靜態HTML頁面 530
15.3.2 避免不必要的回送操作 530
15.3.3 儘量在客戶端進行用戶輸入驗證 531
15.3.4 關閉不必要的Session狀態 531
15.3.5 優先使用HTML控制項,而非伺服器控制項 531
15.3.6 不必要時關閉ViewState 532
15.3.7 禁用調試模式 532
15.4 系統快取管理 533
15.4.1 快取概述 533
15.4.2 傳統快取方式 534
15.4.3 頁面輸出快取 534
15.4.4 頁面輸出快取API 537
15.4.5 頁面局部快取 539
15.4.6 應用程式數據快取 543
15.4.7 檔案快取依賴 545
15.4.8 資料庫快取依賴 546
15.4.9 Memcached——分散式快取系統 550
15.4.10 Cacheman——.NET架構下的分散式快取項目 551
15.5 資料庫訪問性能最佳化 552
15.5.1 選擇合適的.NET數據供應器 552
15.5.2 及時關閉資料庫連線 552
15.5.3 跟蹤監視SQL Server當前連結池狀態 553
15.5.4 善用資料庫的存儲過程 556
15.5.5 SqlDataReader和Dataset的選擇 556
15.5.6 ExecuteNonQuery和ExecuteScalar的選擇 557
15.5.7 數據的綁定DataBinder 557
15.5.8 使用DataReader的注意事項 557
15.5.9 Command對象的使用 558
15.5.10 反覆執行SQL語句用Prepare() 558
15.5.11 分頁的數據訪問 559
15.5.12 SQL命令的最佳化 559
15.5.13 tempdb的使用技巧 561
15.5.14 使用視圖代替跨庫操作 561
15.5.15 儘量避免大事務操作和游標的使用 561
15.5.16 為表建立適當的索引 562
15.6 網站安全防護 562
15.6.1 什麼是SQL注入式攻擊 562
15.6.2 如何防範SQL注入式攻擊 563
15.6.3 實現頁面驗證碼 564
15.6.4 實現檔案防盜鏈 568
15.6.5 採用HTTPS進行訪問 572
15.7 IIS最佳化 573
15.7.1 如何監測IIS伺服器並發數 573
15.7.2 採用Gzip壓縮頁面最佳化 574
15.7.3 網站應用程式池配置 576
15.8 網站架構最佳化策略 581
本章常見技術面試題 584
職場智慧之獨善其身 584
本章小結 587
第16章 系統設計的原則和技巧 589
16.1 系統設計的原則 590
16.1.1 最適合的才是最好的 590
16.1.2 以不變應萬變 591
16.1.3 可擴展性 591
16.1.4 可復用性 592
16.2 系統設計的常用方法 592
16.3 敏捷軟體開發12條原則 596
16.4 系統架構師成長之路 599
本章常見技術面試題 603
職場智慧之職場政治 603
本章小結 604
第3篇 項目實戰解析
第17章 許可權角色管理項目解析 607
17.1 許可權角色管理概述 608
17.2 項目概述 611
17.3 資料庫設計 612
17.3.1 資料庫實體關係模型 612
17.3.2 表結構設計 613
17.4 數據訪問層 615
17.4.1 類設計 615
17.4.2 代碼實現 616
17.5 業務邏輯層 617
17.5.1 類設計 617
17.5.2 擴展.NET Framework用戶處理機制 620
17.6 接口調用與Web管理實現 625
17.6.1 Web.config配置 626
17.6.2 用戶身份和許可權驗證 626
17.6.3 用戶驗證接口方式1:許可權驗證用戶控制項 627
17.6.4 用戶驗證接口方式2:頁面基類 629
17.6.5 用戶和角色許可權的後台管理 632
職場智慧之如何提升自己在公司的價值 639
本章小結 640
第18章 單點登錄系統的設計與實現 641
18.1 項目概述 642
18.1.1 名詞定義 642
18.1.2 項目需求描述 642
18.2 業務流程設計 643
18.2.1 用戶認證流程 643
18.2.2 安全驗證流程 644
18.3 功能與接口設計 645
18.3.1 接口互動設計 645
18.3.2 套用系統接口 646
18.3.3 認證伺服器功能和接口 646
18.4 資料庫設計 646
18.4.1 資料庫實體關係模型 647
18.4.2 表結構設計 647
18.5 實現認證伺服器 648
18.5.1 SSO解決方案 649
18.5.2 系統管理後台 650
18.5.3 用戶通行證管理中心 651
18.5.4 認證伺服器接口開發 658
18.6 套用系統接入接口開發 661
18.6.1 用戶身份認證 661
18.6.2 接收狀態同步 662
18.6.3 用戶註銷 664
18.6.4 更新認證伺服器狀態 664
18.7 接口封裝及調用 665
職場智慧之晉升之道 667
本章小結 670
第19章 常用.NET開發工具介紹 671
19.1 源碼版本管理:
Visual SourceSafe 2005 672
19.1.1 安裝和配置VSS 2005服務端 672
19.1.2 安裝和配置VSS客戶端 676
19.1.3 將項目加入VSS版本控制 677
19.1.4 客戶端連線VSS 伺服器獲取原始碼 679
19.1.5 設定VSS支持通過Internet訪問 681
19.1.6 版本控制的幾個概念 685
19.1.7 VSS項目許可權管理 687
19.1.8 VSS數據備份 689
19.1.9 VSS 2005的使用規範 691
19.2 單元測試工具:NUnit 692
19.2.1 NUnit簡介 692
19.2.2 手把手教你在.NET中套用NUnit 692
19.3 日誌工具——Log4net 698
19.3.1 Log4net簡介 698
19.3.2 使用步驟 701
19.3.3 單獨配置檔案的使用 702
19.4 代碼規範檢查工具:Microsoft Source Analysis for C# 705
19.5 生成文檔注釋工具:GhostDoc 707
19.6 反編譯工具:Reflector for .NET 714
19.7 動軟代碼生成器 715
19.8 幫助文檔生成工具:Sandcastle 718
19.8.1 Sandcastle介紹 719
19.8.2 生成方式 720
19.8.3 具體生成步驟 721
本章小結 729
附錄A 軟體編碼規範 731
A.1 概述 732
A.1.1 規範基本原則 732
A.1.2 術語定義 732
A.1.3 檔案命名組織 732
A.2 代碼外觀 733
A.2.1 列寬 733
A.2.2 換行 733
A.2.3 縮進 733
A.2.4 空行 733
A.2.5 空格 734
A.2.6 括弧——() 734
A.2.7 花括弧——{} 735
A.3 程式注釋 735
A.3.1 注釋概述 735
A.3.2 文檔型注釋 736
A.3.3 類注釋 737
A.3.4 單行注釋 737
A.3.5 注釋標籤 737
A.4 聲明 739
A.4.1 每行聲明數 739
A.4.2 初始化 739
A.4.3 位置 740
A.4.4 類和接口的聲明 740
A.4.5 欄位的聲明 740
A.5 命名規範 741
A.5.1 命名概述 741
A.5.2 大小寫規則 742
A.5.3 縮寫 742
A.5.4 命名空間 743
A.5.5 類 743
A.5.6 接口 744
A.5.7 屬性(Attribute) 744
A.5.8 枚舉(Enum) 744
A.5.9 參數 745
A.5.10 方法 745
A.5.11 屬性(Property) 745
A.5.12 事件 747
A.5.13 常量(const) 748
A.5.14 欄位 748
A.5.15 靜態欄位 749
A.5.16 集合 749
A.5.17 措詞 749
A.6 語句 750
A.6.1 每行一條語句 750
A.6.2 複合語句 750
A.6.3 return語句 751
A.6.4 if、if-else、if else-if語句 751
A.6.5 for、foreach 語句 752
A.6.6 while語句 752
A.6.7 do-while語句 752
A.6.8 switch-case語句 752
A.6.9 try-catch語句 753
A.6.10 using塊語句 753
A.6.11 goto語句 754
A.7 其他 754
A.7.1 表達式 754
A.7.2 類型轉換 754
A.8 匈牙利命名法 754
A.9 控制項命名規則 755
A.9.1 一般命名方法 755
A.9.2 主要控制項名簡寫對照表 755