《ASP.NET本质论》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:郝冠军著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2011
  • ISBN:9787111332855
  • 页数:457 页
图书介绍:这不是一本循序渐进讲解ASP.NET如何使用的书,而是一本全面、深入探讨ASP.NET本质的书。本书从剖析网站应用程序的主机入手,依次深入分析了应用程序 HttpApplication、处理请求的7种武器、控件、数据绑定、模板、状态、自定义控件、MVC、异步、缓存、IIS与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工作者线程和IO线程 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将IO线程加入线程池 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