首页>参考读物>计算机科学与技术>软件与程序设计

ASP.NET本质论
作者 : 郝冠军 著
出版日期 : 2011-02-12
ISBN : 978-7-111-33285-5
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 470
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

这不是一本循序渐进讲解ASP.NET如何使用的书,而是一本全面、深入探讨ASP.NET本质的书。本书从剖析网站应用程序的主机入手,依次深入分析了应用程序 HttpApplication、处理请求的7种武器、控件、数据绑定、模板、状态、自定义控件、MVC、异步、缓存、IIS与ASP.NET的底层原理以及它们与上层应用之间的关系。本书使用了大量的示例代码来演示技术之间的关系,针对开发中的典型问题,深入挖掘问题的根源,解决问题涉及的技术和解决方案,从而让读者能理论联系实际。

图书特色

这是一本非常好的ASP.NET学习指南和参考资料,它直指ASP.NET的技术核心,理论知识与开发实例并进,详尽地分析了ASP.NET开发过程中所涉及的重要方面,让读者懂得如何最大限度地利用ASP.NET提供的丰富功能。对于所有ASP.NET开发者来说,这是一本不可或缺的好书。
—— 周银辉 资深微软技术专家\MVP(2008)

收到本书的初稿时,我正好在呼和浩特出差,这本书便成为了我旅途中形影不离的伙伴。本书不仅在广度上包含了ASP.NET相关的重要知识点,而且在深度上更是透彻地分析了各个知识点的原理、要点和难点,总结了大量开发者们很可能会在开发过程中遇到的问题,并给予了很好的解决方案,足见作者具有丰富的开发经验。本书不仅是中初级开发者提升ASP.NET功力不可多得的一本好书,而且也是高级开发者案头必备的参考手册,它收录了大量的开发技巧和最佳实践,可供开发过程中查阅,对于开发稳定而高效的ASP.NET应用极有帮助。
—— 冯瑞涛
微软MSDN中文技术论坛ASP.NET&Ajax和ADO.NET&LINQ版块版主\微软.NET俱乐部活动组织者

会用ASP.NET的程序员很多,但是ASP.NET方面的开发高手着实不多,而在这些高手中,能用深入浅出的语言阐述.NET本质的人更是少之又少了。幸运的是,这本书做到了,它用极为朴实的语言,结合精心设计的案例,将ASP.NET的本质以及开发中的重点和难点娓娓道来,细致入微,是深入学习ASP.NET不可多得的经典之作。
——王晓光 微软金牌讲师\MCT\达内集团技术支持总监

本书是作者在ASP.NET领域多年开发和教学工作经验的结晶。作为一本面向有一定开发经验的ASP.NET开发人员的书籍,本书不但对ASP.NET的内在运行机制进行了深入地阐述,而且对ASP.NET的组件机制进行了入微地分析。这不仅是一本进阶指导书,能帮助ASP.NET开发者进一步了解ASP.NET的精髓和本质;而且这也是一本开发参考手册,本书中有大量实例、解决方案和最佳实践供开发者查阅和参考。
—— 葛涵涛 微软(北京).NET俱乐部负责人\Windows Phone MVP

ASP.NET通过一整套封装了底层处理机制的类库来提供极其高效的开发环境,使得许多开发任务只要通过简单的控件拖曳就可以实现。但是,在这强大功能的背后,ASP.NET 隐藏了高度复杂的实现机制和工作原理,使得开发者不必去关心ASP.NET底层的问题。因为如此,大量的 ASP.NET 程序员,包括许多有经验的开发者,都被简单的拖曳遮蔽了视线,几乎所有的 ASP.NET 图书也都以控件的使用方法作为主要内容,使得很多 ASP.NET 程序员仅浮于技术表面,不能深入理解和掌握 ASP.NET的本质和精髓,只能借助现有的控件来完成任务。对于开发中遇到的难题,不能突破控件的局限进行深入地分析,如同雾里看花,只能束手无策。最后导致软件质量难以保证,开发工期无法控制。
《程序员修炼之道:从小工到专家》中有一句名言:“如果你不能了解生成的代码,那就不要使用代码生成器。”这句话同样适用于ASP.NET的学习,学习ASP.NET也需要从底层的核心原理开始。就像看一场魔术表演,舞台上的表演千变万化,但是基本的原理却万变不离其宗,当我们掌握了这个“宗”,控件的使用也就水到渠成,ASP.NET 的不断升级和演变就不再会是学习的负担,而是不断提供给程序员的神兵利器。

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

图书前言

本书的起源
  经常有人问起:应该如何学习 ASP.NET 开发?为什么开始的时候感觉很容易,但是,遇到问题的时候却感到无从下手?太多的人开始学习的时候,对 ASP.NET 有着深深的误解,包括我自己。
  很多人选择 ASP.NET 的理由是因为它简单:中文开发环境、简体中文的文档、简单的拖放式开发、类似于 WinForm 的开发体验等。Visual Studio 和 .NET Framework为我们提供了一个极其方便的开发环境,很多人因此进入了 ASP.NET 开发之门,甚至有相当多的 ASP.NET 程序员都没有了解过 HTTP 协议的内容,或者 HTML 的语法,也同样在完成着开发任务。
  这究竟是 ASP.NET 技术的成功,还是失败?
  在 ASP.NET 中,组件技术被用到极致,整个 ASP.NET 就是一个高级组件,内部又可以分为控件组件、状态管理组件、用户管理组件等。组件技术的使用将 ASP.NET 程序员分为两大类:开发组件的程序员和使用组件的程序员。
  开发组件的程序员需要掌握 ASP.NET 的运行机制,熟悉 ASP.NET 处理 HTTP 请求的整个过程,对通过.NET 技术来解决 Web 请求处理的方法有着深刻的理解,这一切对程序员有着很高的要求。而使用组件的程序员只需要使用开发完成的组件,将组件通过工具箱拖放到窗体上,然后,通过属性窗口设置组件的属性,再加上一些机械的处理,就可以快速开发出应用程序。甚至完全不需要知道组件的背后在发生着什么。在许多ASP.NET 技术演示中,好像一次魔术表演,就神奇地完成了开发任务。开发中的这种分工提高了开发的效率。
  那么,我们希望成为哪一种程序员呢?
  成为使用组件的程序员比较容易,成为开发组件的程序员很难。高内聚、低耦合的组件也造成了很陡峭的技术壁垒,需要辛苦地攀登。那么,在这个组件开发的时代,我们还需要学习组件的知识吗?答案是:需要!一定需要!即使我们不开发组件,也不能不理解组件!组件的使用千变万化,但是万变不离其宗。如果你希望成为自由驰骋在 ASP.NET 领域的骑手,那就跟随我进行一次穿越 ASP.NET 的开心之旅吧!
面向的读者
  本书面向的读者是准备深入学习 ASP.NET 的学生和有1~2年 ASP.NET 工作经验,但是希望进一步提高开发技能,深入掌握 ASP.NET 高级编程的程序员。通过系统地学习 ASP.NET 的处理机制,为成为一个高级的 ASP.NET 软件开发人员打下坚实的基础。
特色
  本书不从 C# 讲起,也不讲解控件的属性及使用,没有设计模式的分析,甚至没有任何数据库的内容。所以,不要希望通过本书来学习一个 ASP.NET 的购物网站如何完成。
  在本书中,有 ASP.NET 与 HTTP 关系的详细分析,有事件处理机制在 ASP.NET 中的应用,有多线程程序在 ASP.NET 中的应用与分析,有控件与流的关系,有控件与 HTML 之间关系的详细分析,有各种状态管理机制实现的内幕。总起来说,这里只有 ASP.NET 的内在运行机制的分析。本书对 ASP.NET 的组件机制进行了详细的分析,希望能够帮助你理解 ASP.NET 应用程序为什么这样写的问题。从前,你可能会使用各种控件,可能还掌握各种开发技巧。通过本书你可以创建自己的组件,发现未知的技巧!看了此书之后,希望你说:原来如此!
如何阅读本书
  本书从 HTTP 请求开始,将会带领你穿越整个 ASP.NET 的处理过程,以请求的处理过程为主线,对每一步处理所涉及的技术进行深入的剖析,结合开发中常见的问题,分析问题的原因并给出解决方案。包括最新的 MVC 技术。书中的每一章也独立成篇,你可以根据自己的需要来选择阅读。
  从第1章~第4章是 ASP.NET 的核心部分,重点讨论了 ASP.NET 中对于请求的处理机制,ASP.NET 中对象与 HTTP 之间的映射关系,应用程序处理管道的处理过程,处理程序的处理机制,以及多线程技术在 ASP.NET 中的应用。
  从第5章~第8章是经典的 WebForm 部分,重点讨论了控件的原理与页面的生成机制。详细讨论了流与控件的关系,控件与 HTML 的关系,数据绑定控件与模板的关系,以及 ASP.NET 中各种状态管理技术。
  第9章分析了开发 ASP.NET 程序的另外一种选择 ASP.NET MVC 的处理过程,分析了 ASP.NET MVC 应用程序与经典的 ASP.NET 程序之间的关系,以及 MVC 内部的处理过程。并对关键的处理过程进行了详细的讨论。
  ASP.NET 应用程序不是一个独立的应用程序,需要寄宿于 Web 服务器之上。第10章讨论了 ASP.NET 与 IIS 服务器之间的关系,并针对不同的 IIS 版本分别分析了其处理过程。
  最后一章针对 ASP.NET 应用程序中的用户问题进行了分析,剖析了在 ASP.NET 中处理用户问题的各种方案,对处理不同环节中的用户及其转换关系进行了详细的分析。
致谢
  首先要感谢的是机械工业出版社华章分社的杨福川编辑,没有他的鼓励和帮助,就不会有这本书的诞生。
  特别要感谢博客园的帮助和支持,作为专业的 .NET 技术网站,博客园这个灿若繁星的技术宝库为我提供了成长的土壤,本书中的许多问题和案例来源于博客园。
  感谢众多的朋友们在我完成本书的过程中给予我的支持和鼓励,你们的帮助是我完成本书的强大动力。
本书的支持
  很荣幸出版社给了我这样一个机会与大家分享这些知识。但是由于作者本人水平所限,虽然进行了多次修改,仍然很难尽如人意,已近完稿,心中更加忐忑不安,只是希望能够给大家在学习 ASP.NET 的过程中带来一些帮助。如果大家在读完某些章节之后,对以前希望了解又无从查询的问题感觉豁然开朗,我就聊以自慰了。
  书中的示例都有相应的源码,可以在我的博客下载,也可以在机工新阅读网站(www.cmpreading.com)上下载。
联系作者
电子邮件:haoguanjun@gmail.com
博客:http: / /haogj.cnblogs.com
对本书的任何问题请通过电子邮件联系,我会尽快处理和答复,并在博客上发布与更新。

作者
2011年1月

上架指导

计算机\程序设计

封底文字

这是一本非常好的ASP.NET学习指南和参考资料,它直击ASP.NET的技术核心,理论知识与开发实例并进,详尽地分析了ASP.NET开发过程中所涉及的方方面面,让读者懂得如何最大限度地利用ASP.NET提供的丰富功能。对于所有ASP.NET开发者来说,这是一本不可或缺的好书。
——周银辉 资深微软技术专家\MVP(2008)
收到本书的初稿时,我正好在呼和浩特出差,这本书便成为了我旅途中形影不离的伙伴。本书不仅在广度上包含了ASP.NET相关的重要知识点,而且在深度上更是透彻地分析了各个知识点的原理、要点和难点,总结了大量开发者们很可能会在开发过程中遇到的问题,并给予了最佳的解决方案,足见作者教学和开发经验的丰富。本书不仅是中初级开发者提升ASP.NET功力不可多得的一本好书,而且也是高级开发者案头必备的参考手册,它收录了大量的开发技巧和最佳实践,可供开发过程中查阅,对于开发稳定而高效的ASP.NET应用极有帮助。
—— 冯瑞涛 微软MSDN中文技术论坛ASP.NET&Ajax和ADO.NET&Linq版块版主\微软.NET俱乐部活动组织者
会用ASP.NET的程序员很多,但是ASP.NET方面的开发高手着实不多,而在这些高手中,能用深入浅出的语言阐述.NET本质的人更是少之又少了。幸运的是,这本书做到了,它用极为朴实的语言,结合精心设计的案例,将ASP.NET的本质以及开发中的重点和难点娓娓道来,细致入微,是深入学习ASP.NET不可多得的经典之作。
——王晓光 微软金牌讲师\MCT\达内集团技术支持总监
本书是作者在ASP.NET领域多年开发和教学工作经验的结晶。作为一本面向有一定开发经验的ASP.NET开发人员的书籍,本书不但对ASP.NET的内在运行机制进行了深入地阐述,而且对ASP.NET的组件机制进行了入微地分析。这不仅是一本进阶指导书,能帮助ASP.NET开发者进一步了解ASP.NET的精髓和本质;而且这也是一本开发参考手册,本书中有大量实例、解决方案和最佳实践供开发者查阅和参考。
——葛涵涛 微软(北京).NET俱乐部负责人\Windows Phone MVP

作者简介

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

图书目录

前  言
第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

教学资源推荐
作者: 杨树林 胡洁萍 编著
作者: 郑阿奇 彭作民
作者: 郭志强 邱李华 曹青 等编著
参考读物推荐
作者: 黄永祥 编著
作者: (美)Vlada Matena Beth Stearns