作品简介

如果你只是想系统地学习如何简单地利用ASP.NET快速地进行开发,《ASP.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 应用中的用户问题进行了分析,并就各种常见问题给出了解决方案。

郝冠军,资深微软技术专家和培训讲师。从事软件开发工作十余年,精通.NET和ASP.NET开发。他还是博客园和CSDN等社区的活跃技术专家,经常帮助大家解答各种疑难问题。此外,作为微软社区精英的领导团队成员,他还负责微软社区精英的招募工作。

作品目录

  • 前言
  • 本书的起源
  • 面向的读者
  • 特色
  • 如何阅读本书
  • 致谢
  • 本书的支持
  • 联系作者
  • 第1章 网站应用程序
  • 1.1 Web应用程序的简单回顾
  • 1.1.1 资源的地址——通用资源标识符
  • 1.1.2 找到主机
  • 1.1.3 HTTP协议
  • 1.2 最简单的Web服务器
  • 1.2.1 网络插座Socket
  • 1.2.2 基于TcpListener的Web服务器
  • 1.2.3 基于HttpListener的Web服务器
  • 1.3 进入ASP.NET
  • 1.3.1 Web应用程序域
  • 1.3.2 不使用GAC和bin加载Web应用程序域
  • 1.3.3 默默无闻的工作者对象
  • 1.3.4 Web应用程序的运行时
  • 1.4 对象化的HTTP
  • 1.4.1 请求参数的对象类型HttpRequest
  • 1.4.2 处理回应的对象类型HttpResponse
  • 1.4.3 辅助的常用工具类HttpServerUtility
  • 1.4.4 编码与解码
  • 1.4.5 浏览器类型
  • 1.5 创建自定义的ASP.NET服务器
  • 1.5.1 ASP.NET Web服务器
  • 1.5.2 监听程序
  • 1.5.3 部署程序集
  • 1.5.4 各种各样的Cassini
  • 1.6 本章小结
  • 第2章 应用程序对象
  • 2.1 请求的处理参数——上下文对象HttpContext
  • 2.1.1 常用成员
  • 2.1.2 底层方法
  • 2.2 应用程序对象HttpApplication
  • 2.2.1 处理管道
  • 2.2.2 HttpApplication的处理管道
  • 2.2.3 处理过程的简单介绍
  • 2.2.4 HttpContext状态管理
  • 2.3 处理HttpApplication的事件
  • 2.3.1 通过IHttpModule创建HttpApplication的事件处理程序
  • 2.3.2 注册HttpModule
  • 2.3.3 不使用配置文件注册HttpModule
  • 2.3.4 常见的HttpModule
  • 2.3.5 HttpModule的事件
  • 2.3.6 通过global.asax创建HttpApplication的事件处理程序
  • 2.3.7 global.asax中HttpApplication事件的自动注册
  • 2.3.8 特殊的HttpApplication事件处理
  • 2.4 两个特殊的事件
  • 2.5 大文件上传问题
  • 2.5.1 文件上传的规范
  • 2.5.2 ASP.NET中的文件上传
  • 2.5.3 文件上传的解决方案
  • 2.5.4 通过HttpModule接管请求参数
  • 2.5.5 自定义的请求参数对象
  • 2.5.6 读取上传数据的接口和实现
  • 2.5.7 读取上传数据流
  • 2.5.8 注册自定义的上传管理
  • 2.5.9 使用自定义的上传管理
  • 2.6 各种各样的文件上传
  • 2.6.1 无刷新的上传:jQuery form
  • 2.6.2 基于客户端技术的上传进度:SWFUpload
  • 2.7 本章小结
  • 第3章 HTTP请求处理程序
  • 3.1 处理程序
  • 3.1.1 处理程序与HttpApplication的关系
  • 3.1.2 处理程序接口IHttpHandler和IHttpAsyncHandler
  • 3.1.3 在处理程序中使用会话
  • 3.1.4 处理程序工厂
  • 3.1.5 注册处理程序
  • 3.1.6 使用处理程序生成验证码
  • 3.2 一般处理程序
  • 3.2.1 一般处理程序工厂
  • 3.2.2 使用一般处理程序的场合
  • 3.2.3 使用一般处理程序生成验证码图片
  • 3.2.4 使用一般处理程序生成JSON
  • 3.3 页面处理程序
  • 3.3.1 页面处理程序工厂
  • 3.3.2 创建页面处理程序
  • 3.3.3 生成的代码
  • 3.3.4 使用页面处理程序
  • 3.4 Web服务处理程序
  • 3.4.1 Web服务处理程序工厂
  • 3.4.2 使用Web服务处理程序
  • 3.4.3 Web服务的常用标签
  • 3.4.4 派生自System.Web.Services.WebService类的意义
  • 3.5 MVC处理程序
  • 3.5.1 MVC的路由接口IRouteHandler
  • 3.5.2 自定义的IRouteHandler
  • 3.5.3 注册路由处理程序
  • 3.5.4 获取控制器的工厂接口IControllerFactory
  • 3.5.5 MVC请求的处理过程
  • 3.6 资源处理程序
  • 3.6.1 资源的处理程序配置
  • 3.6.2 定义嵌入的资源
  • 3.6.3 获取资源的地址
  • 3.6.4 使用嵌入的资源
  • 3.7 禁止的处理程序
  • 3.7.1 配置禁止访问的资源
  • 3.7.2 禁止访问Excel
  • 3.8 虚拟路径提供器
  • 3.8.1 定义虚拟路径提供器
  • 3.8.2 注册虚拟路径提供器
  • 3.8.3 压缩文件中的网站
  • 3.8.4 SharpZipLib
  • 3.9 本章小结
  • 第4章 ASP.NET中的线程与异步
  • 4.1 线程基础
  • 4.1.1 线程
  • 4.1.2 自定义线程
  • 4.1.3 前台线程和后台线程
  • 4.1.4 工作者线程和I/O线程
  • 4.1.5 线程池
  • 4.2 .NET中线程处理
  • 4.2.1 线程的创建与启动
  • 4.2.2 线程的状态
  • 4.2.3 线程的执行上下文
  • 4.2.4 异步编程模式APM
  • 4.2.5 基于事件的异步编程模式EPM
  • 4.2.6 异步线程的状态与同步问题
  • 4.2.7 处理管道中的异步问题
  • 4.3 线程池
  • 4.3.1 线程池的工作原理
  • 4.3.2 将工作者线程加入线程池
  • 4.3.3 将I/O线程加入线程池
  • 4.4 HttpApplication中的异步线程
  • 4.4.1 ASP.NET中的线程池设置
  • 4.4.2 异步步骤中的异步点
  • 4.4.3 启动和完成异步步骤
  • 4.5 异步处理程序
  • 4.5.1 异步处理程序接口
  • 4.5.2 在处理程序中异步调用Web服务
  • 4.6 异步页面
  • 4.6.1 页面异步任务的启动和完成
  • 4.6.2 异步页面任务
  • 4.6.3 异步页面中访问Web服务三种方式
  • 4.6.4 实例——查询QQ在线状态
  • 4.7 本章小结
  • 第5章 页面即对象
  • 5.1 流动的网页
  • 5.1.1 字节流
  • 5.1.2 字符编码
  • 5.1.3 字符流
  • 5.1.4 回应对象中的流
  • 5.1.5 专门输出HTML的字符流
  • 5.2 控件——页面对象的基石
  • 5.2.1 控件类
  • 5.2.2 Render和RenderControl
  • 5.2.3 控件基类
  • 5.2.4 组合模式Composite
  • 5.2.5 ID是一个问题
  • 5.3 形形色色的控件
  • 5.3.1 HTML控件
  • 5.3.2 Web控件
  • 5.3.3 WebPart控件
  • 5.4 控件实现的常用接口
  • 5.4.1 生成和回发
  • 5.4.2 控件的任意属性IAttributeAccessor
  • 5.4.3 数据的回发IPostBackDataHandler
  • 5.4.4 回发服务器端事件IPostBackEventHandler
  • 5.5 页面
  • 5.5.1 页面与模板
  • 5.5.2 母版页
  • 5.5.3 页面就是一个处理程序
  • 5.5.4 页面的事件处理管道
  • 5.5.5 处理页面的事件
  • 5.6 生成的过程
  • 5.6.1 从模板到对象模型——BuildProvider
  • 5.6.2 从标记到控件——ControlBuilder
  • 5.6.3 进入生成阶段——ControlAdapter
  • 5.6.4 控件适配器——ControlAdapter
  • 5.6.5 Web控件适配器——WebControlAdapter
  • 5.6.6 页面适配器——PageAdapter
  • 5.6.7 使用Adapter定制表单的action
  • 5.7 自定义的URL重写
  • 5.7.1 URL重写的原理
  • 5.7.2 使用HttpModule实现URL重写
  • 5.7.3 在配置文件中处理重写映射
  • 5.7.4 无扩展名请求的处理问题
  • 5.8 本章小结
  • 第6章 状态
  • 6.1 基本状态管理
  • 6.1.1 隐藏域
  • 6.1.2 Cookie
  • 6.1.3 URL
  • 6.2 视图状态ViewState
  • 6.2.1 序列化和反序列化
  • 6.2.2 控制序列化
  • 6.2.3 Base64
  • 6.2.4 视图状态属性与IStateManager接口
  • 6.2.5 保存和恢复的时间点
  • 6.2.6 视图状态的序列化器
  • 6.2.7 使用视图状态实现路径导航
  • 6.3 控件状态ControlState
  • 6.4 应用程序状态Application
  • 6.5 会话状态Session
  • 6.5.1 服务器端的Session
  • 6.5.2 客户端的SessionID
  • 6.5.3 Session保存的位置
  • 6.5.4 Session的过期问题
  • 6.5.5 压缩Session数据
  • 6.6 HttpContext状态
  • 6.7 Cache
  • 6.7.1 缓存的原理
  • 6.7.2 .NET中的缓存管理实现
  • 6.7.3 基于文件的缓存依赖
  • 6.7.4 基于SQL的缓存依赖
  • 6.7.5 组合的缓存依赖
  • 6.7.6 删除所有的缓存项目
  • 6.7.7 Web服务器端的页面缓存
  • 6.7.8 页面局部缓存
  • 6.7.9 自定义的输出缓存提供器
  • 6.8 Memcached
  • 6.8.1 下载和安装Memcached
  • 6.8.2 在ASP.NET中访问Memcached
  • 6.9 统计当前在线用户
  • 6.9.1 Module的处理
  • 6.9.2 注册Module
  • 6.9.3 Module的配置参数
  • 6.9.4 Module的事件处理
  • 6.10 本章小结
  • 第7章 模板和数据绑定
  • 7.1 页面与绑定
  • 7.1.1 嵌入式代码块和表达式
  • 7.1.2 绑定表达式
  • 7.1.3 目标Target
  • 7.1.4 容器Container
  • 7.1.5 触发绑定事件的方法DataBind
  • 7.2 控件内的模板
  • 7.2.1 基于模板的控件
  • 7.2.2 控件模板中的Container
  • 7.2.3 DataBinder
  • 7.2.4 Page中的Eval
  • 7.2.5 在属性中使用绑定表达式
  • 7.3 Repeater控件
  • 7.3.1 数据的来源DataSource
  • 7.3.2 Repeater的基石——RepeaterItem
  • 7.3.3 绑定的过程
  • 7.3.4 绑定中的事件
  • 7.3.5 绑定的结果:Controls集合和Items集合
  • 7.3.6 回发中的ItemCommand事件
  • 7.4 高级数据控件
  • 7.4.1 唯一支持分栏的控件——DataList
  • 7.4.2 GridView
  • 7.4.3 ListView和DataPager
  • 7.5 数据源控件
  • 7.5.1 反射
  • 7.5.2 两种数据源
  • 7.5.3 对象数据源
  • 7.5.4 业务对象的标签
  • 7.5.5 页面控件与数据源控件之间的关系
  • 7.5.6 数据源控件相关的事件点
  • 7.5.7 基于数据源控件的分页
  • 7.6 本章小结
  • 第8章 自定义控件
  • 8.1 自定义控件的继承体系
  • 8.2 自定义控件涉及的相关类型
  • 8.3 自定义的带有上传进度的按钮
  • 8.3.1 控件的工作原理
  • 8.3.2 选择控件的基类
  • 8.3.3 自定义的数据类型
  • 8.3.4 状态的持久化
  • 8.3.5 控件的属性
  • 8.3.6 属性转换问题——TypeConverter
  • 8.3.7 编辑属性数据UITypeEditor
  • 8.3.8 保存在ASPX中
  • 8.3.9 设计器中的显示效果
  • 8.3.10 工具栏中控件的图标
  • 8.3.11 脚本嵌入和使用
  • 8.3.12 控件的呈现
  • 8.3.13 使用自定义控件
  • 8.4 PetShop中的自定义控件
  • 8.4.1 基类
  • 8.4.2 表格
  • 8.4.3 处理当前页码参数
  • 8.4.4 DataSource属性
  • 8.4.5 事件
  • 8.4.6 生成
  • 8.5 本章小结
  • 第9章 MVC
  • 9.1 ASP.NET MVC是表现层的MVC
  • 9.2 在HttpApplication中的ASP.NET MVC
  • 9.2.1 创建RouteTable
  • 9.2.2 UrlRoutingModule事件处理
  • 9.3 从URL进入MVC之门
  • 9.3.1 有意义的URL
  • 9.3.2 在IIS 6.0和IIS 7中的配置
  • 9.3.3 从URL到Route
  • 9.3.4 约束
  • 9.3.5 Routing
  • 9.3.6 RequestContext的前世今生
  • 9.3.7 在ASP.NET MVC中防盗链
  • 9.4 控制器
  • 9.4.1 控制器工厂
  • 9.4.2 使用自定义的控制器工厂
  • 9.4.3 为Controller类传递构造函数的参数
  • 9.4.4 Controller的继承关系
  • 9.4.5 Controller中的状态管理
  • 9.4.6 基于过滤器的扩展
  • 9.4.7 选择Action
  • 9.5 模型
  • 9.5.1 绑定Model
  • 9.5.2 简单参数和复杂参数
  • 9.5.3 模型对象的元数据
  • 9.5.4 Model的验证
  • 9.5.5 自定义Model的验证
  • 9.6 执行Action
  • 9.6.1 各种ActionResult
  • 9.6.2 向视图传递数据
  • 9.7 视图
  • 9.7.1 视图引擎
  • 9.7.2 经典视图——ViewPage
  • 9.7.3 视图引擎——Razor
  • 9.8 本章小结
  • 第10章 IIS与ASP.NET
  • 10.1 网站
  • 10.1.1 绑定
  • 10.1.2 网站应用程序
  • 10.1.3 虚拟目录
  • 10.2 通过ISAPI扩展IIS
  • 10.2.1 ISAPI扩展
  • 10.2.2 ISAPI过滤器
  • 10.2.3 CLR是一个COM组件
  • 10.2.4 ASP.NET中的ISAPI扩展和过滤器
  • 10.2.5 ISAPI Rewrite
  • 10.3 IIS与ASP.NET
  • 10.3.1 IIS5与ASP.NET
  • 10.3.2 IIS6与ASP.NET
  • 10.3.3 IIS7与ASP.NET
  • 10.4 创建网站的两种方法
  • 10.5 ASP.NET中的加密与解密
  • 10.5.1 machineKey
  • 10.5.2 加密服务
  • 10.5.3 配置节的加密和解密
  • 10.6 本章小结
  • 第11章 ASP.NET中的用户
  • 11.1 从IIS开始
  • 11.1.1 匿名用户方式
  • 11.1.2 基本身份验证
  • 11.1.3 摘要式身份验证
  • 11.1.4 集成Windows身份验证
  • 11.1.5 .NET Passport身份验证
  • 11.2 ASP.NET中的用户信息
  • 11.2.1 基于Windows验证的用户
  • 11.2.2 基于Forms验证的用户
  • 11.2.3 基于Passport验证的用户
  • 11.2.4 在IIS7中使用表单验证
  • 11.3 .NET中的用户
  • 11.3.1 用户的标识IIdentity
  • 11.3.2 用户IPrincipal
  • 11.4 网站中的用户
  • 11.5 成员管理
  • 11.5.1 用户的基本信息
  • 11.5.2 成员管理的约定
  • 11.5.3 基于SQLServer的成员管理实现
  • 11.5.4 自定义的成员管理实现
  • 11.5.5 辅助工具类Membership
  • 11.6 用户的扩展信息——个性化数据
  • 11.6.1 个性化数据的约定
  • 11.6.2 个性化数据的属性
  • 11.6.3 实现自定义的个性化数据管理
  • 11.6.4 匿名的个性化数据
  • 11.6.5 合并匿名用户的个性化数据
  • 11.6.6 基于SQL Server的个性化数据管理
  • 11.6.7 管理个性化数据
  • 11.7 执行程序的用户
  • 11.7.1 执行网站程序的Windows用户
  • 11.7.2 用户模拟的作用
  • 11.7.3 数据库连接串中的用户
  • 11.8 本章小结
  • 附录 自定义配置参数
展开全部