Windows Azure实战
2013-11-1
机械工业出版社
白海石
本书应该是当下Windows Azure领域最具权威性、完整性和实用性,同时也是最与时俱进(结合最新技术)的书籍之一,由微软官方资深云计算专家撰写,英文版版权将输出到海外。内容全面而深入,完整覆盖了Windows Azure的所有关键技术和理论,详细介绍了微软云计算的开发流程,深入讲解了云服务的架构(重点讲解了可用性、可靠性和高性能设计)、云与设备的整合、云服务系统的整合,同时还分享了云计算项目管理和开发团队管理方面的经验。除此之外,本书精心策划了68个针对特定实际应用场景的真实案例,详细呈现了案例的设计思路和完整实现步骤。
全书共17章,分为四大部分:第一部分(第1~7章)讲解了云计算的基础概念和技术,包含云计算的本质、Windows Azure功能概览、Windows Azure开发环境搭建、云端网站创建、基础云服务、高端云服务、数据存储、虚拟机和虚拟网络等内容;第二部分(第8~12章)讲解了云计算的解决方案,包含云解决方案的系统架构、高可用性设计、高可靠性设计、高性能设计、基于声明的体系结构等内容;第三部分(第13~14章)讲解了云与设备的知识,包含移动云服务、物联网等相关的内容;第四部分(第15~17章)讲解了系统的整合与云计算项目的管理。附录中搜集了大量实用资料,包括云技术术语的中英文对照表(附录A)、常见英文缩写的翻译(附录B),以及很多国外比较流行但国内还相对比较新的实用和开源技术的简介(附录C)。
白海石
毕业于加州大学旧金山分校,微软资深技术专家和传教士,有超过25年的开发经验,精通Windows Azure技术,擅长.NET平台上的各种开发技术(C#、.NET、ASP.NET、ASP.NET MVC等),对软件架构也有非常深入的研究,经验丰富。此外,他还是一位经验丰富的技术作家,曾发表和撰写过许多与计算机相关的论文和著作。
目 录
Preface
序
前言
第一部分 基础篇
第1章 云计算概览 2
1.1 云计算历史 2
1.2 云计算的本质 4
1.2.1 弹性 5
1.2.2 可用性 7
1.2.3 缩放性 8
1.3 Windows Azure概览 9
1.3.1 设施即服务 10
1.3.2 平台即服务 11
1.3.3 软件即服务 12
1.3.4 成本计算 14
1.4 准备Windows Azure的开发
环境 14
1.4.1 订阅Windows Azure 15
1.4.2 安装软件开发工具包 15
1.5 熟悉Windows Azure管理门户 15
1.5.1 登录 16
1.5.2 界面结构 16
1.6 本章小结 18
第2章 创建云端网站 19
2.1 Windows Azure WebSites 19
2.2 网站的发布与更新 24
2.3 与源代码管理系统的整合 32
2.4 网站的缩放 36
2.4.1 垂直缩放 36
2.4.2 水平缩放 38
2.4.3 自动缩放 39
2.5 移植现有的ASP.NET网站 39
2.6 使用网站模板 40
2.7 网站设置 44
2.8 网站的诊断和监视 48
2.8.1 网站诊断 48
2.8.2 网站监视 50
2.8.3 自定义域名 53
2.9 本章小结 54
第3章 云服务入门 55
3.1 Windows Azure Cloud Service 55
3.2 角色和云服务 59
3.2.1 角色 60
3.2.2 云服务 60
3.3 云服务部署的基本步骤 61
3.4 云服务的部署和更新 67
3.4.1 增量更新(按更新域
更新) 67
3.4.2 同时更新 67
3.4.3 多个部署环境 68
3.5 实例和负载平衡 73
3.5.1 实例 73
3.5.2 负载平衡 73
3.6 配置文件和定义文件 76
3.6.1 云服务定义文件 76
3.6.2 云服务配置文件 77
3.7 本章小结 80
第4章 高级云服务 81
4.1 端点类型 81
4.1.1 输入端点 81
4.1.2 内部端点 82
4.1.3 实例输入端点 82
4.2 辅助角色 86
4.3 角色间通信 92
4.4 角色的生命周期 96
4.4.1 角色在虚拟机上部署和运行的过程 97
4.4.2 角色实例的状态 97
4.5 启动任务 98
4.5.1 定义启动任务 98
4.5.2 启动任务的属性 99
4.6 诊断与调试 104
4.6.1 本机开发与调试 104
4.6.2 Windows Azure诊断 105
4.6.3 IntelliTrace 111
4.6.4 监视云服务 117
4.7 开发者社区 120
4.8 本章小结 121
第5章 数据存储——关系型数据库 122
5.1 Windows Azure数据存储方案 122
5.2 SQL Database概览 123
5.3 管理与优化SQL Database 136
5.3.1 SQL Server Management Studio 136
5.3.2 Microsoft SQL Server Data Tools 138
5.3.3 动态管理视图 139
5.3.4 查询优化 140
5.4 数据的同步和复制 142
5.4.1 数据层应用程序 143
5.4.2 数据同步 147
5.5 使用MySQL数据库 152
5.5.1 Windows Azure商店 152
5.5.2 查看MySQL连接信息 153
5.5.3 自己搭建MySQL环境 154
5.6 本章小结 154
第6章 数据存储——非结构化数据 155
6.1 使用本地存储 155
6.2 Windows Azure存储服务概览 158
6.2.1 Windows Azure存储账户 159
6.2.2 创建Windows Azure存储账户 160
6.2.3 存储账户的密钥 160
6.3 使用BLOB存储 161
6.3.1 BLOB存储概览 161
6.3.2 块BLOB和页BLOB 177
6.3.3 ETag和快照 178
6.3.4 REST风格调用 178
6.3.5 分享访问签名和库访问策略 179
6.3.6 BLOB的更新、复制和租约 180
6.3.7 错误处理 181
6.4 使用表存储 181
6.4.1 表存储概览 181
6.4.2 优化数据分区 181
6.4.3 查询表数据 192
6.4.4 批处理 193
6.4.5 动态表实体 194
6.4.6 分享访问签名 194
6.5 使用队列存储 194
6.5.1 队列储概览 194
6.5.2 在代码中使用队列服务 195
6.6 监视存储账户 196
6.6.1 配置监视存储服务 197
6.6.2 监视服务的收费 198
6.7 本章小结 198
第7章 虚拟机和虚拟网络 199
7.1 Windows Azure IaaS 199
7.2 映像和虚拟磁盘 206
7.3 虚拟机的通信 212
7.3.1 虚拟机的端点 212
7.3.2 同一个云服务下的
虚拟机 214
7.4 虚拟网络 218
7.4.1 虚拟网络简介 218
7.4.2 点到站点虚拟网络 220
7.4.3 站点到站点虚拟网络 225
7.5 本章小结 226
第二部分 架构篇
第8章 云解决方案系统架构 228
8.1 服务器/客户端 228
8.1.1 服务器/客户端架构的特点 228
8.1.2 云平台上的服务器/客户端架构 230
8.1.3 多租户系统设计 231
8.1.4 服务器/客户端系统到云平台的移植 233
8.1.5 在Windows Azure上实现服务器/客户端系统 234
8.1.6 移动客户端 234
8.2 服务器/浏览器 235
8.2.1 服务器/浏览器架构的特点 235
8.2.2 云平台上的服务器/浏览器架构 236
8.2.3 将服务器/浏览器系统移植到云平台的难点 244
8.2.4 在Windows Azure上实施服务器/浏览器系统 246
8.3 n层体系 247
8.3.1 n层体系的特点 248
8.3.2 n层体系、MVC和MVVM 249
8.3.3 Windows Azure服务总线队列服务简介 252
8.3.4 在Windows Azure上实现n层体系结构 255
8.4 分布式系统 264
8.4.1 基于消息的连接 264
8.4.2 中继连接 268
8.5 本章小结 274
第9章 高可用性设计 275
9.1 高可用性设计的策略 275
9.1.1 冗余 275
9.1.2 负载平衡 276
9.1.3 容错转移 276
9.2 负载平衡与健康检测器 281
9.3 竞争消费者模式 283
9.3.1 松散耦合 283
9.3.2 动态负载平衡 283
9.3.3 动态缩放 284
9.3.4 容错转移 284
9.4 本章小结 287
第10章 高可靠性设计 288
10.1 可靠性、可维护性与可用性 288
10.1.1 可用性 288
10.1.2 可靠性 288
10.1.3 可维护性 289
10.1.4 相互关系 289
10.2 错误类型 289
10.2.1 运营中的错误 290
10.2.2 系统状态错误 290
10.2.3 系统设计与实施错误 290
10.3 瞬时错误 291
10.4 可靠性设计 294
10.4.1 单一失效点 294
10.4.2 可靠性编程原则 296
10.5 本章小结 298
第11章 高性能设计 299
11.1 Windows Azure缓存服务 299
11.1.1 缓存服务简介 299
11.1.2 缓存的部署方式 300
11.1.3 缓存功能介绍 303
11.1.4 并发模式 305
11.1.5 本地缓存 305
11.1.6 会话状态 306
11.2 Windows Azure CDN服务 310
11.3 异步操作和并发操作 313
11.4 本章小结 314
第12章 基于声明的体系架构 315
12.1 基于声明的验证和授权 316
12.1.1 基本流程 317
12.1.2 身份验证协议与WIF 318
12.1.3 身份验证代理 318
12.2 Windows Azure AD基础 320
12.2.1 管理Windows Azure租户和用户 321
12.2.2 Graph API 332
12.3 Windows Azure AD新增功能 337
12.4 本章小结 338
第三部分 设备篇
第13章 移动服务 340
13.1 移动服务概览 340
13.2 消息推送 348
13.3 计划程序与API 354
13.4 本章小结 356
第14章 物联网 357
14.1 物联网概览 357
14.1.1 射频识别 358
14.1.2 人工智能设备 358
14.1.3 可穿戴设备 358
14.1.4 无线传感器网络 359
14.2 设备与云服务 359
14.2.1 设备对云的意义 359
14.2.2 云对设备的意义 360
14.3 物联网的挑战 361
14.4 .NET Micro Framework 362
14.4.1 .NET Micro Framework概览 362
14.4.2 .NET Gadgeteer简介 364
14.4.3 设备的整合案例 368
14.5 本章小结 373
第四部分 企业篇
第15章 基于消息整合 376
15.1 系统整合 376
15.1.1 通过数据整合 376
15.1.2 共享业务功能 377
15.1.3 企业服务总线 377
15.2 基于消息的系统整合模式 378
15.2.1 基于内容的消息路由(Content-based Routing) 379
15.2.2 优先级队列 382
15.2.3 请求/响应 382
15.2.4 死信队列 385
15.2.5 事件驱动的消费者 388
15.3 高级消息队列协议 390
15.3.1 AMQP简介 390
15.3.2 业界对AMQP的支持 391
15.4 基于消息集成的优势 397
15.5 本章小结 398
第16章 源代码和项目管理 399
16.1 创建TFS账户 399
16.2 使用TFS管理源代码 400
16.3 创建和使用单元测试 405
16.4 本章小结 410
第17章 脚本和自动化 411
17.1 Windows Azure PowerShell命令集 411
17.1.1 准备Windows Azure PowerShell命令集环境 411
17.1.2 管理虚拟机 412
17.1.3 管理云服务 415
17.1.4 管理网站 416
17.1.5 其他管理命令 417
17.2 Windows Azure 命令行工具 417
17.2.1 安装命令行工具 417
17.2.2 使用命令行工具 418
17.3 Windows Azure管理应用程序接口 418
17.4 本章小结 421
结语 云之禅 422
附录A 云计算术语中英文对照表 424
附录B 英文缩写对照表 429
附录C 扩展概念 432
参考文献 442
实例目录
实例1:您好,Windows Azure网站! 19
实例2:使用WebMatrix更新网站 25
实例3:使用FTP发布和更新PHP
网站 28
实例4:使用Git发布和更新网站 32
实例5:创建基于Drupal的网站 40
实例6:网站应用设置实例——描绘用
户输入函数的图像 44
实例7:您好,Windows Azure云服务! 55
实例8:部署云服务 62
实例9:通过管理门户部署云服务与VIP交换 69
实例10:云服务的水平缩放 74
实例11:配置网站服务的HTTPS
端点 82
实例12:使用UDP端口的辅助角色 87
实例13:使用Web前端和后台服务 93
实例14:启动任务——将图片转化成文本网页 99
实例15:配置Windows Azure诊断 106
实例16:使用IntelliTrace求最大公约数 112
实例17:使用SQL Database创建在线订单系统 125
实例18:使用SSMSE创建订单视图 136
实例19:使用动态管理视图(DMV) 139
实例20:使用SQL Database管理界面 141
实例21:使用.bacpac和.dacpac 143
实例22:SQL Server和SQL Database的数据同步 147
实例23:本地存储——数据文件生成服务 155
实例24:通过Visual Studio管理BLOB服务 162
实例25:BLOB服务——在线照片管理 164
实例26:通过Visual Studio 管理表服务 182
实例27:使用表服务——猜动物游戏 183
实例28:通过Visual Studio 管理队列服务 195
实例28:您好,Windows虚拟机! 199
实例29:您好,Linux虚拟机! 204
实例30:使用数据磁盘 206
实例31:创建和使用虚拟机映像 210
实例32:在Linux虚拟机上配置和运行Node.js 212
实例33:同一云服务内虚拟机的通信 214
实例34:虚拟机间负载平衡 215
实例35:创建Windows Azure虚拟
网络 218
实例36:创建点到站点虚拟网络——本地与云端的文件共享 221
实例37:多网站与租户限流 236
实例38:ASP.NET Web API和MVVM 249
实例39:管理服务总线命名空间和消息队列 253
实例40:使用服务总线队列服务实现异步通信——翻译服务 256
实例41:服务总线的主题/订阅——简单的聊天程序 264
实例42:中继服务——WCF Mastermind游戏 269
实例43:交通管理服务——跨地域容错转移 276
实例44:竞争消费者模式演示 284
实例45:使用瞬时错误处理应用
程序库 292
实例46:使用缓存服务 300
实例47:使用外部会话状态提供者 307
实例48:使用CDN发布存储账户中的内容 311
实例49:使用Windows Azure AD验证用户身份 323
实例50:使用Graph API 332
实例51:使用移动服务支持Windows商店应用 341
实例52:移动服务后台编程 344
实例53:推送到Windows设备 349
实例54:计划程序 354
实例55:API 355
实例56:您好,嵌入式设备! 362
实例57:简易摄像机 365
实例58:入侵者报警系统 368
实例59:基于内容的消息路由 380
实例60:请求/响应模式 383
实例61:死信队列 386
实例62:事件驱动消费者 388
实例63:通过AMQP实现系统整合 392
实例64:使用TFS管理源代码 401
实例65:创建和使用单元测试 406
实例66:封闭签入 408
实例67:用Windows Azure PowerShell管理虚拟机 413
实例68:使用Windows Azure管理应用程序接口 419