请输入您要查询的百科知识:

 

词条 构建高性能可扩展ASP.NET网站设计
释义

基本信息

原书名:Ultra-Fast ASP NET: Build Ultra-Fast and Ultra-Scalable web sites using ASP NET and SQL Server

原出版社: Apress

作者:(美)Richard Kiessig

译者:余昭辉

丛书名: 图灵程序设计丛书

出版社:人民邮电出版社

ISBN:9787115248336

出版日期:2011 年3月

开本:16开

页码:369

版次:1-1

编辑推荐

让ASP NET + SQL Server网站

飞迅速提升网站性能,全面挖掘网站潜力

微软资深技术专家力作,亚马逊全五星评价

内容简介

《构建高性能可扩展asp net网站》针对asp net 网站开发中可能遇到的问题,给出了经过实践检验的具体解决方法。涉及的内容包括:加快显示html 的方法、缓存的最佳方式、如何使用iis、如何处理会话状态、如何配置sql server 以及如何优化基础设施等。

《构建高性能可扩展asp net网站》适用于所有web 开发和运维人员以及对优化网站感兴趣的读者

作译者

Richard Kiessig 有30多年的软件设计和开发经验。他目前是一名独立软件顾问,专注于使用ASP NET和SQL Server设计和构建大型网站。他给MySpace、微软等公司做过咨询。此前他在微软工作了四年,一开始做MSN的架构师并负责开 发工作,后来在微软技术中心(MTC)工作。

目录

《构建高性能可扩展asp net网站》

第1章 原则和方法 1

1 1 性能和可扩展性的差异 2

1 2 为什么需要高性能和高可扩展性 2

1 2 1 优化 3

1 2 2 过程 3

1 2 3 体验 4

1 3 完整的页面处理过程 4

1 4 原则概述 6

1 4 1 性能原则 6

1 4 2 次要技术 7

1 5 本书使用的环境和工具 8

1 5 1 软件工具和版本 8

1 5 2 术语 9

1 5 3 排版约定 9

1 5 4 作者网站 9

1 6 小结 10

第2章 客户端性能 11

2 1 浏览器页面处理 12

2 1 1 网络连接和初始http请求 12

2 1 2 页面解析和新的资源请求 13

2 1 3 页面资源的顺序以及重新排序 14

2 2 浏览器缓存 15

2 3 网络优化 16

2 4 脚本包含文件的处理 18

2 4 1 通过在脚本之前排队资源请求提高并行化 18

2 4 2 减少脚本文件的数量 19

2 4 3 在页面剩余时间里请求对象 21

2 4 4 脚本延迟 22

2 4 5 针对脚本的服务器端方法 22

2 5 少下载 22

2 5 1 减少每个页面中资源的数量 22

2 5 2 降低html、css和javascript的大小 24

2 5 3 最大化压缩 25

2 5 4 图片优化 25

2 5 5 网站图标文件 29

2 5 6 html、css和javascript的一般优化 29

2 6 使用javascript限定页面请求 32

2 6 1 提交按钮 33

2 6 2 链接 33

2 7 使用javascript降低html大小 34

2 7 1 生成重复的html 34

2 7 2 为标签添加重复文本 35

2 8 减少上传 36

2 9 css优化 38

2 10 图片精灵和集群 41

2 11 利用dhtml 43

2 12 使用ajax 43

2 13 使用silverlight 45

2 13 1 创建html控件 46

2 13 2 在javascript中调用silverlight内代码 48

2 13 3 使用silverlight改进性能的其他方式 49

2 14 提高呈现速度 50

2 15 预缓存 51

2 15 1 预缓存图片 51

2 15 2 预缓存css和javascript 52

2 16 使用css实现无表格的布局 53

2 17 优化javascript的性能 56

2 18 小结 57

第3章 缓存 59

3 1 在所有层中缓存 59

3 2 浏览器缓存 60

3 2 1 缓存静态内容 61

3 2 2 缓存动态内容 63

3 3 viewstate 65

3 4 cookie 71

3 4 1 设置会话cookie 71

3 4 2 单个cookie中多个名称/值对 72

3 4 3 cookie属性 72

3 5 silverlight独立存储 80

3 5 1 示例程序:“欢迎回来” 80

3 5 2 部署并更新silverlight应用 84

3 6 代理缓存 85

3 6 1 使用cache-control http头 85

3 6 2 管理相同内容的不同版本 87

3 7 web服务器缓存 87

3 7 1 windows内核缓存 87

3 7 2 iis 7输出缓存 92

3 7 3 asp net输出缓存 93

3 7 4 asp net对象缓存 98

3 8 sql server缓存 103

3 9 分布式缓存 104

3 10 缓存过期时间 105

3 10 1 动态内容 105

3 10 2 静态内容 105

3 11 小结 106

第4章 iis 7 108

4 1 应用程序池和web园 108

4 2 请求处理管道 110

4 3 windows系统资源管理器 111

4 4 常见的http问题 113

4 4 1 http重定向 114

4 4 2 http头 115

4 5 压缩 118

4 5 1 启用压缩 118

4 5 2 设置压缩选项 120

4 5 3 使用web config配置压缩 121

4 5 4 缓存压缩的内容 121

4 5 5 使用编程方式启用压缩 122

4 6 http keep-alive 122

4 7 优化url 122

4 7 1 虚拟目录 123

4 7 2 url重写 123

4 8 管理流量 126

4 8 1 使用robots txt 126

4 8 2 网站地图 127

4 8 3 带宽节流 128

4 9 跟踪失败请求 130

4 10 iis性能调校提示 133

4 11 小结 134

第5章 asp net线程与会话 135

5 1 线程影响可扩展性 135

5 2 asp net页面生命周期 136

5 3 应用程序线程池 137

5 3 1 同步页面 138

5 3 2 异步页面 138

5 3 3 负载测试 140

5 3 4 改进已有的同步页面的可扩展性 142

5 3 5 从单个页面上执行多个异步任务 143

5 3 6 超时处理 144

5 3 7 异步web服务 145

5 3 8 异步文件i/o 148

5 3 9 异步web请求 149

5 4 后台工作线程 151

5 4 1 使用后台线程记录日志 152

5 4 2 任务串行化 157

5 5 锁定指南和使用readerwriterlock 157

5 6 会话状态 158

5 6 1 会话id 159

5 6 2 inproc模式 159

5 6 3 使用stateserver 160

5 6 4 使用sql server 160

5 6 5 有选择的启用会话状态,使用readonly模式 161

5 6 6 可扩展性会话状态支持 162

5 6 7 调校 167

5 6 8 完全自定义会话状态 167

5 6 9 会话序列化 168

5 7 会话状态的其他方案 168

5 8 小结 169

第6章 使用asp net实现和管理优化技术 170

6 1 母版页 170

6 2 用户控件 173

6 2 1 示例 173

6 2 2 注册和使用控件 175

6 2 3 将控件放在dll中 175

6 3 主题 176

6 3 1 静态文件 176

6 3 2 皮肤 176

6 3 3 动态设定主题 176

6 3 4 可以放在主题里的属性 177

6 3 5 示例 178

6 3 6 预缓存主题图片 179

6 4 特定于浏览器的代码 179

6 4 1 使用request browser 181

6 4 2 特定于浏览器属性前缀 182

6 4 3 缓存特定于浏览器的页面 183

6 4 4 控件适配器 184

6 4 5 浏览器提供程序 185

6 4 6 伪装 187

6 5 动态生成javascript和css 187

6 5 1 示例 188

6 5 2 从javascript里访问asp net控件 189

6 6 给静态文件设置多个域名 190

6 7 修改图片大小 191

6 8 小结 193

第7章 管理asp net应用程序策略 194

7 1 自定义httpmodule 194

7 1 1 示例httpmodule的需求 195

7 1 2 init() 方法 195

7 1 3 prerequesthandlerexecute事件处理器 197

7 1 4 beginauthenticaterequest事件处理器 197

7 1 5 endauthenticaterequest事件处理器 199

7 1 6 endrequest事件处理器 200

7 1 7 数据库表和存储过程 201

7 1 8 在web config中注册该httpmodule 202

7 2 自定义httphandler 202

7 2 1 开始请求 203

7 2 2 结束请求 204

7 3 页面基类 205

7 4 页面适配器 206

7 4 1 示例:pagestatepersister 206

7 4 2 pageadapter类 207

7 4 3 注册pageadapter 208

7 5 url重写 208

7 5 1 在httpmodule中重写url 208

7 5 2 修改表单使用重写的url 209

7 6 标签转换 210

7 7 深入理解控件适配器 211

7 8 重定向 212

7 8 1 传统的重定向 212

7 8 2 永久重定向 213

7 8 3 使用server transfer() 213

7 9 尽早刷新响应 214

7 9 1 标记 214

7 9 2 隐藏文件 214

7 9 3 包跟踪 215

7 9 4 块编码 216

7 9 5 小结 217

7 10 过滤空格 218

7 11 避免不必要工作的其他方法 220

7 11 1 检查page ispostback 220

7 11 2 确定页面是否刷新 220

7 11 3 避免在回发之后重定向 220

7 11 4 检查response isclient- connected 221

7 11 5 关闭调试模式 221

7 11 6 批量编译 222

7 12 小结 222

第8章 sql server关系数据库 224

8 1 sql server如何管理内存 224

8 1 1 内存组织 225

8 1 2 读和写 225

8 1 3 性能影响 226

8 2 存储过程 226

8 3 批量命令 228

8 3 1 使用sqldataadapter 228

8 3 2 构建参数化命令串 231

8 4 事务 233

8 5 多结果集 238

8 5 1 使用sqldatareader nextresult() 238

8 5 2 使用sqldataadapter和dataset 239

8 6 数据预缓存 240

8 6 1 方法 240

8 6 2 预缓存基于表单的数据 241

8 6 3 预缓存每次一个页面的数据 241

8 7 数据访问层 242

8 8 查询和结构优化 243

8 9 其他查询优化指导原则 251

8 10 数据分页 251

8 10 1 公用表表达式 251

8 10 2 数据分页的详细示例 252

8 11 对象关系模型 258

8 12 xml列 259

8 12 1 xml架构 260

8 12 2 创建示例表 261

8 12 3 基本xml查询 262

8 12 4 修改xml数据 263

8 12 5 xml索引 263

8 12 6 其他xml查询技巧 264

8 13 数据分区 264

8 13 1 分区函数 265

8 13 2 分区架构 265

8 13 3 生成测试数据 266

8 13 4 添加索引,配置锁升级 268

8 13 5 存档旧数据 269

8 13 6 小结 269

8 14 全文搜索 269

8 14 1 创建全文目录和索引 270

8 14 2 全文查询 271

8 14 3 获得搜索分级的细节 271

8 14 4 全文搜索语法小结 271

8 15 service broker 272

8 15 1 启用和配置service broker 273

8 15 2 发送消息的存储过程 274

8 15 3 使用存储过程接收消息 274

8 15 4 测试示例 275

8 15 5 避免中毒消息 276

8 16 通过service broker发送e-mail 276

8 16 1 创建后台工作线程 277

8 16 2 读取并处理信息 278

8 16 3 排队消息和发送邮件的web窗体 280

8 16 4 结果 282

8 17 数据变化通知 283

8 17 1 查询约束 283

8 17 2 示例:简单的配置系统 284

8 18 resource governor 287

8 18 1 配置 287

8 18 2 测试 290

8 19 横向扩展与纵向扩展 290

8 19 1 纵向扩展 290

8 19 2 横向扩展 291

8 19 3 确定系统瓶颈 292

8 20 高可用性 293

8 21 其他方面的性能提示 294

8 22 小结 295

第9章 sql server analysis services 297

9 1 分析服务概览 297

9 2 mddb示例 299

9 2 1 rdbms结构 299

9 2 2 数据源视图 300

9 2 3 cube 303

9 2 4 时间维度 303

9 2 5 items和users维度 305

9 2 6 计算的成员 306

9 2 7 部署和测试 307

9 3 示例mdx查询 307

9 4 adomd net 313

9 4 1 单个单元格结果示例 313

9 4 2 使用gridview显示多行结果 315

9 5 使用ssis更新cube 316

9 6 预先缓存 319

9 6 1 数据存储选项 319

9 6 2 缓存模式 320

9 7 使用中间数据库 323

9 8 小结 324

第10章 基础和运维 325

10 1 插桩 325

10 2 容量规划 329

10 3 磁盘子系统 330

10 3 1 随机每秒钟i/o次数与顺序每秒钟i/o次数 330

10 3 2 ntfs碎片 331

10 3 3 磁盘分区设计 333

10 3 4 raid选项 334

10 3 5 存储阵列网络 336

10 3 6 控制器缓存 337

10 3 7 固态磁盘 337

10 4 网络设计 338

10 4 1 巨型帧 338

10 4 2 链接集成 339

10 5 防火墙和路由器 340

10 5 1 windows防火墙和防病毒软件 341

10 5 2 使用路由器作为硬件防火墙的替代方案 341

10 6 负载均衡器 341

10 7 dns 342

10 8 临时环境 343

10 9 部署 343

10 9 1 数据层升级 344

10 9 2 提高部署速度 344

10 9 3 页面编译 345

10 9 4 预热缓存 345

10 10 服务器监控 346

10 11 小结 347

第11章 综合起来 348

11 1 从何处入手 348

11 2 开发过程 349

11 2 1 组织 350

11 2 2 项目阶段和里程碑 350

11 2 3 编码 351

11 2 4 测试 351

11 2 5 bug跟踪 351

11 2 6 用户反馈 352

11 2 7 高性能的技巧 352

11 3 league 354

11 4 工具 355

11 5 架构 356

11 6 备忘录 357

11 6 1 原则和方法(第1章) 357

11 6 2 客户端性能(第2章) 357

11 6 3 缓存(第3章) 359

11 6 4 iis 7(第4章) 360

11 6 5 asp net线程和会话(第5章) 361

11 6 6 使用asp net实现并管理优化技术(第6章) 361

11 6 7 管理asp net应用策略(第7章) 362

11 6 8 sql server关系数据库(第8章) 363

11 6 9 sql server分析服务(第9章) 364

11 6 10 基础设施和运维(第10章) 364

11 7 小结 365

词汇表 367

译者序

长期以来,在 NET Web开发领域一直缺少一本用来讲解性能优化的书籍,大多数 NET Web开发书籍都将大量笔墨倾注在控件使用、控件开发以及数据源操作上。当性能出现问题时,有的 NET Web开发人员要么束手无策,因为这些控件对于他们来说就像一个黑盒;要么去求助其他平台的Web性能优化书籍,但这些书籍往往没有针对 NET的特殊处理,优化效果也大打折扣。

现在, NET Web开发人员终于迎来了这么一本属于我们自己的Web性能优化手册。这本亚马逊五星级图书,本着压榨每一个字节的态度从Web前端优化、缓存、服务器到数据库后端各个方面给 NET Web性能优化提供端到端的指导。书中包含许多真实的代码,大部分都可以在自己的项目中直接使用,有些优化只需要花费少量的时间,就可以收到立竿见影的回报。

本书分为11章,第1章是原则和方法,给全书定下了一个基调:我们要压榨Web开发中每个字节。第2章讨论客户端性能,包括网络连接、CSS以及JavaScript等资源的优化。第3章是本书的重头戏——缓存,缓存在Web性能中可谓是一哥,这章按照缓存离用户的远近顺序做了全面的介绍。做ASP NET肯定离不开IIS,第4章以IIS 7为例,对IIS调优进行了讲解,原来IIS不是配一下网站就万事大吉了。第5章介绍了线程与会话,对于构建可扩展的Web架构尤为重要。第6章从ASP NET特有的特性来讲解其对优化的作用,比如母版页,比如针对特定浏览器生成输出等。第7章介绍了HttpHandler和HttpModule等方面的内容,对于习惯拖控件构建Web页面的开发人员,这一章会让你看到ASP NET的另一个世界。第8章、第9章介绍了SQL Server的优化,从缓存、索引等方面做了详细的介绍,第8章也是本书篇幅最大的一章。第10章从运维的角度来讨论优化。第11章是集成,将前10章所有的东西结合在一起使用。

本书的翻译和编辑工作差不多贯穿了2010年整整一年,其中因为工作变动对交付进度造成很大的影响,在这里要特别感谢图灵公司的编辑的体谅和支持。感谢好友王雄对部分章节的审阅。

最后,要感谢我的女友照云,非常感谢你这几个月的陪伴,对我因赶进度对你的冷落毫无怨言,甚至还自告奋勇帮忙审稿。

前言

我在微软的工作经历给我的人生带来了意想不到的巨大转变。到微软之前,我所在的公司都是微软的竞争对手,时不时会听到反微软的言论和宣传。但是,当我听说 NET后,我就知道应该了解更多,而最好的方式就是到它的发源地去学习。

在进入微软公司深入了解这些技术之后,我被眼前的一切震撼了。 NET Framework、C#语言、ASP NET以及SQL Server都非常先进,都有非常漂亮的技术架构。在使用Java(无疑也是非常优雅的语言)数年后,我可以使用一个集成良好的平台,将(几乎)所有东西无缝地集成在一起工作,确实令人精神振奋,干劲倍增。从技术层面上讲,我很认同平台开发人员的决策和权衡,而且最终的系统也能相当大地提高开发人员的效率。微软的工程团队也人才济济,极具创新意识,而给我这个曾经圈外人带来的最大惊奇是,他们打心眼儿里想要解决客户的问题。

我对技术的热衷让我成了直面客户的人——担任位于硅谷的微软技术中心的解决方案架构师。直面深层次的客户问题是另一项令人大开眼界的经历。首先,我可以在许多人或公司那里体会到微软技术产生的积极影响。其次,我还能感受到有些人面对很差劲的结果时的强烈挫败感。这本书,在某种程度上就是为减少挫败感而写的。

我的观点是ASP NET和SQL Server很有潜力。但是,这些技术的关键点还未被很多开发人员认识到。我曾经与许多想要挖掘这种潜力,但却苦于不得其门的开发人员和经理交谈过。可是,认识到该技术全部的潜力必须投入更多努力;其中的特性丰富多彩,但要完全领略其风采必须有正确的视角。本书的一个目的就是赶走遮住技术美景的层层迷雾,让你亲眼目睹ASP NET和SQL Server的美丽。

写这本书的另一个原因是我常被一些很慢的网站所折磨,希望本书介绍的内容能帮你改变这个现状。在Web的世界里一切皆有可能,未来的Web一定会超过现在的水平——但良好的性能是实现它们的基础。到那时谁也不会再遇到缓慢的网站。

我现在使用的是高于3 Mb/s的DSL连接到Internet,我的台式机4个CPU内核都工作在3GHz,与过去几年相比是出奇得快。即使这样的连网速度和处理能力,加载许多网站仍然要花很长时间,有时甚至加载一个页面都要好几分钟,而此时我的本地网络和CPU几乎是空闲的。作为软件专业人员,我们应该关注这种问题,因为出现这种问题实在太丢人了。我不仅要自己做得更好,更想让我的职业为人称道。为此,我们开发的网站就不仅要快,还要超快!

读者对象

本书的前两章和最后两章提供的信息几乎对所有Web开发人员都有用,且与使用的底层技术无关。中间7章是为使用ASP NET和SQL Server设计、构建或维护网站的中高级的架构师和开发人员写的。刚刚从Java或PHP转到 NET的有经验的Web开发人员也会从本书找到很多有价值的信息。

《构建高性能可扩展ASP NET网站》也非常适合那些不是开发人员,但对优化网站技术感兴趣的读者。尤其是对参与网站运维、测试或管理的相关人员,这本书给出了许多开发团队应该重视的原则和问题,并提供了示例帮助理解。

联系作者

可以通过rick@12titans net联系到我,也欢迎访问我的网站

我非常想听到你关于高性能方法的经验。

提高性能和可扩展性的技术会随着底层技术的变迁不断地发展。我非常想听到你发现很有效,但本书却没有涉及的技术。

欢迎指出正文或代码示例中的错误,也欢迎各种改进本书的建议。

致谢

我要感谢Apress优秀的团队:Ewan Buckingham早期给了我大力支持和鼓励;Matthew Moodie对全书的结构和流程提供了帮助;Simon Taylor负责了技术审校,还复查了代码示例;Anita Castro负责项目管理,Kim Wimpsett和Tiffany Taylor帮我润色了本书的文字。

我还要感谢Phil de Joux的反馈意见。

媒体评论

“作者写作本书的目标之一就是揭开技术迷雾,欣赏ASP NET和SQL Server的天作之合,并挖掘它们的全部潜力,他真的做到了这一点。”

——亚马逊读者评论

“我用ASP NET很多年了,我知道如何使用AJAX构建健壮的Web,如何使用角色控制等,但就是不知道如何用ASP NET把网站变得速度更快。这本书弥补了我这方面知识的空白。”

——Frank Stepanski,ASP NET、AJAX程序员

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/7 23:34:35