ASP.NET本質論

ASP.NET本質論

《asp. net本質論》以asp. net套用中的請求處理過程為主線,對每一步處理所涉及的技術和原理進行了深入的剖析,同時列舉了開發過程中在各處理環節可能會遇到的經典疑難問題進行了分析並給出了解決方案。

作者簡介

ASP.NET本質論 ASP.NET本質論

郝冠軍,資深微軟技術專家和培訓講師。從事軟體開發工作十餘年,精通.NET和ASP. NET開發。他還是部落格園和CSDN等社區的活躍技術專家,經常幫助大家解答各種疑難問題。此外,作為微軟社區精英的領導團隊成員,他還負責微軟社區精英的招募工作。現任思勝.net培訓高級講師!

內容簡介

如果你只是想系統地學習如何簡單地利用asp. net快速地進行開發,《asp. net本質論》也許不是你想要的;如果你不滿足於只是會利用asp. net強大的控制項功能完成一些常規套用的開發,而是想深入探究asp. net的本質和精髓,實現從一個控制項使用人員向系統開發人員的過渡,那么這本書是你不能錯過的,也是你目前的唯一選擇。

第1~4章是 asp. net 的核心部分,細緻地剖析了 asp. net中的請求處理機制、asp. net 中的對象與 http 之間的映射關係、應用程式處理管道的處理過程、處理程式的處理機制,以及多執行緒技術在asp. net中的套用。第5~8章是經典的webform部分,重點講解了控制項的原理與頁面的生成機制,包括流與控制項的關係、控制項與頁面的關係、數據綁定控制項與模板的關係,以及 asp. net 中的各種狀態管理技術。第9章分析了asp. net mvc的處理過程,以及asp .net mvc套用與經典的 asp .net套用之間的關係。第10章討論了 asp. net 與 iis 伺服器之間的關係,並分別針對不同版本的iis分析了其處理過程。第11章對 asp. net 套用中的用戶問題進行了分析,並就各種常見問題給出了解決方案。

目錄

前言

第1章 網站應用程式 /1

1.1 web應用程式的簡單回顧 /2

1.1.1 資源的地址—通用資源標識符 /2

1.1.2 找到主機 /3

1.1.3 http協定 /4

1.2 最簡單的 web 伺服器 /6

1.2.1 網路插座socket /6

1.2.2 基於 tcplistener 的 web 伺服器 /10

1.2.3 基於 httplistener 的 web 伺服器 /11

1.3 進入 asp .net /13

1.3.1 web 應用程式域 /13

1.3.2 不使用gac 和bin 載入web 應用程式域 /14

1.3.3 默默無聞的工作者對象 /16

1.3.4 web 應用程式的運行時 /18

1.4 對象化的http /19

1.4.1 請求參數的對象類型 httprequest /19

1.4.2 處理回應的對象類型 httpresponse /21

1.4.3 輔助的常用工具類 httpserverutility /23

1.4.4 編碼與解碼 /24

.1.4.5 瀏覽器類型 /26

1.5 創建自定義的 asp .net 伺服器 /28

1.5.1 asp .net web 伺服器 /28

1.5.2 監聽程式 /28

1.5.3 部署程式集 /29

1.5.4 各種各樣的cassini /30

1.6 本章小結 /30

第2章 應用程式對象 /31

2.1 請求的處理參數—上下文對象httpcontext /32

2.1.1 常用成員 /32

2.1.2 底層方法 /33

2.2 應用程式對象 httpapplication /33

2.2.1 處理管道 /34

2.2.2 httpapplication 的處理管道 /38

2.2.3 處理過程的簡單介紹 /38

2.2.4 httpcontext狀態管理 /40

2.3 處理 httpapplication 的事件 /40

2.3.1 通過 ihttpmodule 創建 httpapplication 的事件處理程式 /40

2.3.2 註冊 httpmodule /41

2.3.3 不使用配置檔案註冊 httpmodule /42

2.3.4 常見的 httpmodule /44

2.3.5 httpmodule的事件 /46

2.3.6 通過 global.asax 創建 httpapplication 的事件處理程式 /46

2.3.7 global.asax 中 httpapplication 事件的自動註冊 /48

2.3.8 特殊的httpapplication 事件處理 /48

2.4 兩個特殊的事件 /51

2.5 大檔案上傳問題 /51

2.5.1 檔案上傳的規範 /51

2.5.2 asp .net 中的檔案上傳 /53

2.5.3 檔案上傳的解決方案 /54

2.5.4 通過httpmodule 接管請求參數 /54

2.5.5 自定義的請求參數對象 /58

2.5.6 讀取上傳數據的接口和實現 /62

2.5.7 讀取上傳數據流 /65

2.5.8 註冊自定義的上傳管理 /76

2.5.9 使用自定義的上傳管理 /77

2.6 各種各樣的檔案上傳 /78

2.6.1 無刷新的上傳: jquery form /78

2.6.2 基於客戶端技術的上傳進度:swfupload /79

2.7 本章小結 /79

第3章 http請求處理程式/80

3.1 處理程式 /81

3.1.1 處理程式與 httpapplication 的關係 /81

3.1.2 處理程式接口 ihttphandler 和 ihttpasynchandler /81

3.1.3 在處理程式中使用會話 /82

3.1.4 處理程式工廠 /83

3.1.5 註冊處理程式 /83

3.1.6 使用處理程式生成驗證碼 /84

3.2 一般處理程式 /86

3.2.1 一般處理程式工廠 /87

3.2.2 使用一般處理程式的場合 /87

3.2.3 使用一般處理程式生成驗證碼圖片 /87

3.2.4 使用一般處理程式生成 json /87

3.3 頁面處理程式 /91

3.3.1 頁面處理程式工廠 /91

3.3.2 創建頁面處理程式 /92

3.3.3 生成的代碼 /93

3.3.4 使用頁面處理程式 /93

3.4 web 服務處理程式 /94

3.4.1 web 服務處理程式工廠 /94

3.4.2 使用 web 服務處理程式 /95

3.4.3 web 服務的常用標籤 /96

3.4.4 派生自 system.web.services.webservice 類的意義 /98

3.5 mvc 處理程式 /98

3.5.1 mvc 的路由接口 iroutehandler /99

3.5.2 自定義的 iroutehandler /100

3.5.3 註冊路由處理程式 /101

3.5.4 獲取控制器的工廠接口 icontrollerfactory /102

3.5.5 mvc 請求的處理過程 /102

3.6 資源處理程式 /103

3.6.1 資源的處理程式配置 /103

3.6.2 定義嵌入的資源 /103

3.6.3 獲取資源的地址 /104

3.6.4 使用嵌入的資源 /104

3.7 禁止的處理程式 /105

3.7.1 配置禁止訪問的資源 /105

3.7.2 禁止訪問 excel /106

3.8 虛擬路徑提供器 /106

3.8.1 定義虛擬路徑提供器 /106

3.8.2 註冊虛擬路徑提供器 /107

3.8.3 壓縮檔案中的網站 /109

3.8.4 sharpziplib /114

3.9 本章小結 /115

第4章 asp .net中的執行緒與異步 /116

4.1 執行緒基礎 /117

4.1.1 執行緒 /117

4.1.2 自定義執行緒 /118

4.1.3 前台執行緒和後台執行緒 /119

4.1.4 工作者執行緒和 i /o 執行緒 /119

4.1.5 執行緒池 /120

4.2 .net 中執行緒處理 /121

4.2.1 執行緒的創建與啟動 /121

4.2.2 執行緒的狀態 /123

4.2.3 執行緒的執行上下文 /124

4.2.4 異步編程模式apm /125

4.2.5 基於事件的異步編程模式 epm /128

4.2.6 異步執行緒的狀態與同步問題 /129

4.2.7 處理管道中的異步問題 /133

4.3 執行緒池 /137

4.3.1 執行緒池的工作原理 /137

4.3.2 將工作者執行緒加入執行緒池 /138

4.3.3 將i /o 執行緒加入執行緒池 /138

4.4 httpapplication 中的異步執行緒 /139

4.4.1 asp .net 中的執行緒池設定 /139

4.4.2 異步步驟中的異步點 /141

4.4.3 啟動和完成異步步驟 /142

4.5 異步處理程式 /142

4.5.1 異步處理程式接口 /143

4.5.2 在處理程式中異步調用 web 服務 /143

4.6 異步頁面 /144

4.6.1 頁面異步任務的啟動和完成 /144

4.6.2 異步頁面任務 /145

4.6.3 異步頁面中訪問 web 服務三種方式 /146

4.6.4 實例—查詢 qq 線上狀態 /148

4.7 本章小結 /151

第5章 頁面即對象 /152

5.1 流動的網頁 /153

5.1.1 位元組流 /154

5.1.2 字元編碼 /155

5.1.3 字元流 /156

5.1.4 回應對象中的流 /158

5.1.5 專門輸出 html 的字元流 /158

5.2 控制項—頁面對象的基石 /160

5.2.1 控制項類 /160

5.2.2 render和rendercontrol /161

5.2.3 控制項基類 /161

5.2.4 組合模式 composite /163

5.2.5 id 是一個問題 /165

5.3 形形色色的控制項 /171

5.3.1 html 控制項 /172

5.3.2 web 控制項 /172

5.3.3 webpart 控制項 /174

5.4 控制項實現的常用接口 /175

5.4.1 生成和回發 /175

5.4.2 控制項的任意屬性iattributeaccessor /177

5.4.3 數據的回發ipostbackdatahandler /177

5.4.4 回發伺服器端事件ipostbackeventhandler /178

5.5 頁面 /178

5.5.1 頁面與模板 /179

5.5.2 母版頁 /184

5.5.3 頁面就是一個處理程式 /185

5.5.4 頁面的事件處理管道 /185

5.5.5 處理頁面的事件 /187

5.6 生成的過程 /188

5.6.1 從模板到對象模型—buildprovider /189

5.6.2 從標記到控制項—controlbuilder /191

5.6.3 進入生成階段—controladapter /191

5.6.4 控制項適配器—controladapter /192

5.6.5 web控制項適配器—webcontroladapter /193

5.6.6 頁面適配器—pageadapter /193

5.6.7 使用 adapter 定製表單的action /194

5.7 自定義的 url 重寫 /195

5.7.1 url 重寫的原理 /196

5.7.2 使用 httpmodule 實現url 重寫 /196

5.7.3 在配置檔案中處理重寫映射 /199

5.7.4 無擴展名請求的處理問題 /204

5.8 本章小結 /205

第6章 狀態 /206

6.1 基本狀態管理 /207

6.1.1 隱藏域 /207

6.1.2 cookie /209

6.1.3 url /213

6.2 視圖狀態viewstate /215

6.2.1 序列化和反序列化 /215

6.2.2 控制序列化 /217

6.2.3 base64 /218

6.2.4 視圖狀態屬性與 istatemanager 接口 /219

6.2.5 保存和恢復的時間點 /221

6.2.6 視圖狀態的序列化器 /223

6.2.7 使用視圖狀態實現路徑導航 /224

6.3 控制項狀態 controlstate /228

6.4 應用程式狀態 application /229

6.5 會話狀態 session /229

6.5.1 伺服器端的 session /230

6.5.2 客戶端的 sessionid /231

6.5.3 session 保存的位置 /233

6.5.4 session 的過期問題 /237

6.5.5 壓縮 session 數據 /238

6.6 httpcontext 狀態 /238

6.7 cache /238

6.7.1 快取的原理 /238

6.7.2 .net 中的快取管理實現 /239

6.7.3 基於檔案的快取依賴 /241

6.7.4 基於sql的快取依賴 /242

6.7.5 組合的快取依賴 /244

6.7.6 刪除所有的快取項目 /246

6.7.7 web 伺服器端的頁面快取 /247

6.7.8 頁面局部快取 /249

6.7.9 自定義的輸出快取提供器 /253

6.8 memcached /254

6.8.1 下載和安裝 memcached /255

6.8.2 在 asp .net 中訪問 memcached /256

6.9 統計當前線上用戶 /258

6.9.1 module 的處理 /258

6.9.2 註冊 module /261

6.9.3 module 的配置參數 /262

6.9.4 module 的事件處理 /263

6.10 本章小結 /263

第7章 模板和數據綁定 /264

7.1 頁面與綁定 /265

7.1.1 嵌入式代碼塊和表達式 /265

7.1.2 綁定表達式 /267

7.1.3 目標target /269

7.1.4 容器container /269

7.1.5 觸發綁定事件的方法 databind /270

7.2 控制項內的模板 /271

7.2.1 基於模板的控制項 /271

7.2.2 控制項模板中的 container /272

7.2.3 databinder /272

7.2.4 page 中的 eval /273

7.2.5 在屬性中使用綁定表達式 /273

7.3 repeater控制項 /273

7.3.1 數據的來源 datasource /273

7.3.2 repeater 的基石—repeateritem /274

7.3.3 綁定的過程 /275

7.3.4 綁定中的事件 /276

7.3.5 綁定的結果:controls 集合和 items 集合 /276

7.3.6 回發中的 itemcommand 事件 /277

7.4 高級數據控制項 /279

7.4.1 唯一支持分欄的控制項-datalist /279

7.4.2 gridview /283

7.4.3 listview 和 datapager /289

7.5 數據源控制項 /291

7.5.1 反射 /292

7.5.2 兩種數據源 /293

7.5.3 對象數據源 /297

7.5.4 業務對象的標籤 /298

7.5.5 頁面控制項與數據源控制項之間的關係 /300

7.5.6 數據源控制項相關的事件點 /303

7.5.7 基於數據源控制項的分頁 /304

7.6 本章小結 /305

第 8 章 自定義控制項 /306

8.1 自定義控制項的繼承體系 /307

8.2 自定義控制項涉及的相關類型 /307

8.3 自定義的帶有上傳進度的按鈕 /308

8.3.1 控制項的工作原理 /308

8.3.2 選擇控制項的基類 /309

8.3.3 自定義的數據類型 /309

8.3.4 狀態的持久化 /310

8.3.5 控制項的屬性 /312

8.3.6 屬性轉換問題—typeconverter /313

8.3.7 編輯屬性數據 uitypeeditor /320

8.3.8 保存在 aspx 中 /326

8.3.9 設計器中的顯示效果 /329

8.3.10 工具列中控制項的圖示 /330

8.3.11 腳本嵌入和使用 /330

8.3.12 控制項的呈現 /332

8.3.13 使用自定義控制項 /334

8.4 petshop 中的自定義控制項 /335

8.4.1 基類 /335

8.4.2 表格 /335

8.4.3 處理當前頁碼參數 /336

8.4.4 datasource 屬性 /336

8.4.5 事件 /337

8.4.6 生成 /338

8.5 本章小結 /342

第 9 章 mvc /343

9.1 asp .net mvc 是表現層的mvc /344

9.2 在 httpapplication 中的asp .net mvc /344

9.2.1 創建 routetable /345

9.2.2 urlroutingmodule事件處理 /347

9.3 從url進入mvc之門 /348

9.3.1 有意義的 url /349

9.3.2 在 iis 6.0 和 iis 7 中的配置 /349

9.3.3 從url到route /350

9.3.4 約束 /354

9.3.5 routing /356

9.3.6 requestcontext 的前世今生 /357

9.3.7 在 asp .net mvc 中防盜鏈 /358

9.4 控制器 /361

9.4.1 控制器工廠 /361

9.4.2 使用自定義的控制器工廠 /362

9.4.3 為 controller 類傳遞構造函式的參數 /362

9.4.4 controller 的繼承關係 /364

9.4.5 controller 中的狀態管理 /365

9.4.6 基於過濾器的擴展 /368

9.4.7 選擇 action /372

9.5 模型 /373

9.5.1 綁定 model /374

9.5.2 簡單參數和複雜參數 /374

9.5.3 模型對象的元數據 /375

9.5.4 model 的驗證 /377

9.5.5 自定義model 的驗證 /379

9.6 執行 action /380

9.6.1 各種actionresult /380

9.6.2 向視圖傳遞數據 /381

9.7 視圖 /382

9.7.1 視圖引擎 /382

9.7.2 經典視圖—viewpage /383

9.7.3 視圖引擎—razor /384

9.8 本章小結 /384

第10 章 iis 與 asp .net /385

10.1 網站 /386

10.1.1 綁定 /386

10.1.2 網站應用程式 /388

10.1.3 虛擬目錄 /389

10.2 通過 isapi 擴展 iis /390

10.2.1 isapi 擴展 /391

10.2.2 isapi 過濾器 /392

10.2.3 clr 是一個 com 組件 /394

10.2.4 asp .net 中的isapi 擴展和過濾器 /396

10.2.5 isapi rewrite /396

10.3 iis 與 asp .net /397

10.3.1 iis5 與 asp .net /397

10.3.2 iis6 與 asp .net /398

10.3.3 iis7 與 asp .net /399

10.4 創建網站的兩種方法 /403

10.5 asp .net中的加密與解密 /405

10.5.1 machinekey /405

10.5.2 加密服務 /407

10.5.3 配置節的加密和解密 /408

10.6 本章小結 /410

第11 章 asp .net中的用戶 /411

11.1 從iis開始 /412

11.1.1 匿名用戶方式 /413

11.1.2 基本身份驗證 /413

11.1.3 摘要式身份驗證 /414

11.1.4 集成 windows 身份驗證 /415

11.1.5 .net passport 身份驗證 /416

11.2 asp .net中的用戶信息 /416

11.2.1 基於 windows 驗證的用戶 /416

11.2.2 基於 forms 驗證的用戶 /417

11.2.3 基於 passport 驗證的用戶 /420

11.2.4 在 iis7 中使用表單驗證 /420

11.3 .net 中的用戶 /421

11.3.1 用戶的標識 iidentity /421

11.3.2 用戶 iprincipal /422

11.4 網站中的用戶 /423

11.5 成員管理 /423

11.5.1 用戶的基本信息 /424

11.5.2 成員管理的約定 /425

11.5.3 基於 sqlserver 的成員管理實現 /426

11.5.4 自定義的成員管理實現 /427

11.5.5 輔助工具類 membership /432

11.6 用戶的擴展信息—個性化數據 /433

11.6.1 個性化數據的約定 /433

11.6.2 個性化數據的屬性 /434

11.6.3 實現自定義的個性化數據管理 /436

11.6.4 匿名的個性化數據 /439

11.6.5 合併匿名用戶的個性化數據 /441

11.6.6 基於 sql server 的個性化數據管理 /442

11.6.7 管理個性化數據 /444

11.7 執行程式的用戶 /444

11.7.1 執行網站程式的 windows 用戶 /445

11.7.2 用戶模擬的作用 /446

11.7.3 資料庫連線串中的用戶 /447

11.8 本章小結 /449

附錄 自定義配置參數 /450

相關詞條

相關搜尋

熱門詞條

聯絡我們