項目中的·NET

內容介紹

《項目中的.NET》既考慮到實際開發中經常遇到的困惑和難題,也分析了解決問題的思路和方法,更總結出項目開發中不可或缺的技術點及思想。讀者可以在欣賞一個個有趣例子的過程中,不知不覺具備開發真正的商業項目的能力。《項目中的.NET》實用性、思想性、趣味性於一體,內容共分為技術基礎總結、系統架構設計思想及項目實戰解析三部分。隨書所附光碟收錄了大量實例代碼及一些商業系統,供讀者參考學習。

作者介紹

李天平
動軟卓越(北京)科技有限公司 創始人,資深網際網路公司技術專家,51Aspx高級技術顧問,具有10年以上軟體及網際網路產品開發經驗,8年以上的項目管理和團隊管理經驗。曾任紅孩子集團高級開發經理,螞蟻互動技術總監,豪傑(超級解霸)公司研發經理等職務。從事過多年的需求分析、產品策劃和架構設計工作,具有豐富的系統研發經驗及項目管理和團隊領導經驗。同時也是國內著名開源軟體“動軟代碼生成器”的作者,該軟體獲得國家著作權局的《軟體著作權》認證,下載量已經超過70萬,著有本書前身《亮劍.NET:.NET深入體驗與實戰精要》一書。

作品目錄

目錄
第1篇技術基礎總結
第1章.NET,你真的知道了嗎 3
1.1搞清自己是乾什麼的 4
1.2.NET的幾個特性 7
1.3萬丈高樓平地起:面試者必會 9
1.3.1C#介紹 10
1.3.2命名空間 10
1.3.3C#語法格式要點 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.1using之多變身 45
1.5.2@符號的妙用 47
1.5.3預處理指令,有你更輕鬆 48
1.6Visual Studio.NET 2010 實戰 50
1.6.1如何創建ASP.NET項目 51
1.6.2如何創建Windows項目 53
1.6.3Visual Studio.NET 2008/2010操作與使用技巧 54
1.6.4常見開發調試技巧 58
1.6.5錯誤異常處理方法 63
本章常見技術面試題 69
常見面試技巧之面試前的準備 69
本章小結 70
第2章細節決定成敗 71
2.1equals()和運算符==的區別 72
2.2const和readonly的區別 74
2.3private、protected、public和internal的區別 78
2.4sealed、new、virtual、abstract與override 79
2.5abstract class與interface 83
2.6公共變數與屬性的區別 85
2.7參數修飾符params、out和ref的區別 87
2.8值類型和引用類型的區別 91
2.9結構與類的區別 94
2.10Dispose()和Close()、Finalize()的區別 97
2.11string和StringBuilder的區別 98
2.12Debug版本和Release版本的區別 99
本章常見技術面試題 102
常見面試技巧之細節決定成敗 102
本章小結 103
第3章ASP.NET開發大雜燴 105
3.1頁面生命周期 106
3.1.1獨立頁面生命周期事件順序 106
3.1.2具有Master頁的生命周期事件順序 108
3.1.3ASP.NET生命周期詳解 110
3.2頁面狀態管理 112
3.2.1Cookie 113
3.2.2HtmlInputHidden隱藏域 115
3.2.3ViewState 115
3.2.4查詢字元串Request 116
3.2.5Application對象 117
3.2.6Session對象 117
3.2.7示例項目:線上用戶
列表統計 120
3.3伺服器和客戶端數據互動 123
3.3.1頁面數據綁定全攻略 123
3.3.2Bind和Eval的區別 132
3.4ASP.NET編程中的技巧 134
3.4.1頁面之間傳值的7種方法 134
3.4.2get與post方法的區別 137
3.4.3ASP.NET伺服器控制項和HTML控制項的區別 138
3.4.4Server.Transfer和Response.Redirect的區別 140
3.4.5刷新頁面的方法匯總 141
3.4.6頁面事件控制 142
3.4.7在URL中傳遞中文的解決方案 144
3.4.8增強用戶體驗的一些技巧 145
3.4.9XHTML與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.12WinForm開發常見問題 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.1ADO.NET與抽水的故事 192
5.1.1ADO.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.1SQL和存儲過程級別的事務 219
5.4.2ADO.NET級別的事務 221
5.4.3ASP.NET頁面級別的事務 222
5.4.4企業級服務COM+事務 224
5.4.5System.Transactions 事務處理 228
5.5Oracle開發常見問題 232
5.5.1Oracle和SQL Server的常用函式對比 232
5.5.2Oracle和SQL Server的語句區別 236
5.5.3ASP.NET連線Oracle失敗的解決方法 237
本章常見技術面試題 238
常見面試技巧之經典問題巧回答 238
本章小結 239
第6章關於XML 241
6.1XML概述 242
6.1.1XML和HTML有什麼區別 242
6.1.2XML的優勢 242
6.2文檔結構與基本語法 243
6.3XML操作 245
6.3.1XmlDocument創建XML文檔 245
6.3.2XmlTextWriter創建XML文檔 246
6.3.3XmlDocument讀取XML文檔 248
6.3.4XmlTextReader讀取XML文檔 249
6.3.5在HTML中顯示XML中的數據 250
6.3.6JavaScript獲取XML內容 251
6.3.7項目案例:通用自定義XML配置類 254
6.4ADO.NET與XML 258
6.4.1讀XML文檔到DataSet 258
6.4.2DataSet轉為XML文檔 259
6.5項目案例1:實現網站的RSS套用 259
6.6項目案例2:線上實現RSS閱讀器 262
本章常見技術面試題 267
常見面試技巧之經典問題巧回答 267
本章小結 268
第7章Web Service開發詳解 269
7.1Web Service基本概念 270
7.2Web Service的套用場景 270
7.3創建簡單的Web Service項目套用 272
7.4Web Service屬性介紹 274
7.5ASP.NET如何調用Web Service 278
7.6JavaScript如何調用Web Service 280
7.6.1通過webbehavior.htc調用Web Service 280
7.6.2通過Microsoft.XMLDOM調用Web Service 282
7.6.3XMLHTTP POST調用Web Service 284
7.6.4SOAP調用Web Service 285
7.7WinForm如何調用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.10Web Service開發中需要注意的問題 307
本章常見技術面試題 311
常見面試技巧之經典問題巧回答 311
本章小結 312
第8章用戶體驗的殺手鐧——AJAX 313
8.1AJAX概述 314
8.1.1什麼是AJAX 314
8.1.2AJAX技術的核心 315
8.1.3AJAX的工作原理 316
8.1.4AJAX的優點 316
8.1.5AJAX的局限性 317
8.1.6AJAX適用場景 318
8.1.7AJAX不適用的場景 319
8.1.8XMLHttpRequest開發實例 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.3ScriptManager控制項使用技巧 325
8.2.4UpdatePanel控制項使用技巧 326
8.2.5AsyncPostBackTrigger實現外部控制項引發局部刷新 328
8.2.6AJAX錯誤處理 331
8.2.7告訴用戶你正在做什麼——UpdateProgress控制項 332
8.2.8ASP.NET AjaxControlToolkit簡介 335
8.3使用第三方組件 AJAX.dll 開發 337
8.4使用第三方組件AJAXPro的開發 341
8.5使用第三方組件MagicAJAX的開發 341
8.6AJAX開發原則 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.1Socket基本編程 374
10.1.1Socket基本知識 374
10.1.2Socket服務端開發步驟 376
10.1.3Socket客戶端開發步驟 378
10.2異步Socket通信——實現MSN機器人 380
10.2.1機器人服務端 380
10.2.2客戶端實現步驟 384
10.3基於TCP協定的客戶端和服務端 387
10.3.1TcpListener 實現網路服務端 387
10.3.2TcpClient實現網路客戶端 388
本章常見技術面試題 390
常見面試技巧之經典問題巧回答 390
本章小結 391
第11章Windows Service開發 393
11.1什麼是Windows服務 394
11.2創建Windows服務 394
11.3Windows服務開發常見問題 398
11.4安裝/卸載Windows服務 399
11.4.1安裝Windows服務 399
11.4.2卸載Windows服務 400
11.4.3Windows服務應用程式體系結構 400
11.5調試Windows服務 403
11.5.1日誌調試法 404
11.5.2附加進程斷點調試法 404
本章常見技術面試題 405
職場智慧之初入江湖 405
本章小結 407
第12章新技術初探 409
12.1WPF 411
12.1.1WPF簡介 411
12.1.2WPF何以令人佩服 411
12.1.3XAML概述 412
12.1.4WPF開發環境配置 413
12.1.5項目示例:開發一個簡單的WPF應用程式 414
12.2WCF 416
12.2.1SOA是什麼 417
12.2.2WCF是什麼 417
12.2.3WCF的優勢是什麼 418
12.2.4WCF開發環境 421
12.2.5項目示例:訂票服務WCF開發步驟 421
12.3LINQ 430
12.3.1LINQ的架構 430
12.3.2傳統的查詢 431
12.3.3LINQ查詢實例 433
12.3.4LINQ查詢語法 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.4Liskov替換法則(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.2IDAL抽象接口的實現 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.3ASP.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.9Memcached——分散式快取系統 550
15.4.10Cacheman——.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.5SqlDataReader和Dataset的選擇 556
15.5.6ExecuteNonQuery和ExecuteScalar的選擇 557
15.5.7數據的綁定DataBinder 557
15.5.8使用DataReader的注意事項 557
15.5.9Command對象的使用 558
15.5.10反覆執行SQL語句用Prepare() 558
15.5.11分頁的數據訪問 559
15.5.12SQL命令的最佳化 559
15.5.13tempdb的使用技巧 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.7IIS最佳化 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.1Web.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.1SSO解決方案 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.7VSS項目許可權管理 687
19.1.8VSS數據備份 689
19.1.9VSS 2005的使用規範 691
19.2單元測試工具:NUnit 692
19.2.1NUnit簡介 692
19.2.2手把手教你在.NET中套用NUnit 692
19.3日誌工具——Log4net 698
19.3.1Log4net簡介 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.1Sandcastle介紹 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.3return語句 751
A.6.4if、if-else、if else-if語句 751
A.6.5for、foreach 語句 752
A.6.6while語句 752
A.6.7do-while語句 752
A.6.8switch-case語句 752
A.6.9try-catch語句 753
A.6.10using塊語句 753
A.6.11goto語句 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

熱門詞條

聯絡我們