《WCF全面解析(套装上下册)》由蒋金楠所著,是作者多年潜心研究WCF技术的心血之作,也是这些年来从事WCF开发的经验总结。书如其名,此书涵盖了WCF几乎所有的知识点,并对其底层框架进行了“庖丁解牛”式的剖析,力求将WCF的整个运行机制完整而清晰地呈现在读者面前。 《WCF全面解析(套装上下册)》上册的前四章在对WCF进行总体介绍的基础上,对构成终结点的三要素(地址、绑定和契约)进行了系统说明;随后的两章则着重剖析序列化和消息编码在WCF中的实现;第7、8章讲述了在服务寄宿和操作调用过程中,WCF的服务端和客户端框架分别为我们做了什么;第9、10章将介绍的重点落在实例化、会话和REST服务上面;在最后一章中采用WCF构建了一个具体的电子商务网站VM,它将指导你如何将理论应用于实践。
《WCF全面解析(套装上下册)》的下册主要涉及一些所谓的“高级”话题,主要包括如何在分布式环境中处理异常(第1章);元数据的导入与导出、发布与获取如何实现(第2章);如何利用WCF对事务的支持将分布式事务引入服务(第3章);如何利用并发与限流机制提高服务的吞吐量和可用性(第4章);如何利用可靠会话机制确保消息的“使命必达”(第5章);如何利用队列服务提供离线通信的支持(第6章);第7、8章主要涉及安全的相关内容,包括传输安全、授权与审核;第9章全景展示WCF服务端和客户端的运行时框架,以及在此基础上的所有扩展可能;最后一章为你带来WCF4.0几个独立的新特性。
《wcf全面解析:全2册》
上册
第1章 wcf简介(wcf overview) 1
1.1 soa的基本概念和设计思想 2
1.2 wcf是对现有分布式通信技术的整合 3
1.3 构建一个简单的wcf应用 6
第2章 地址(address) 18
2.1 统一资源标识(uri) 19
2.1.1 http/https 19
2.1.2 net.tcp 20
2.1.3 net.pipe 20
2.1.4 net.msmq 21
2.2 endpointaddress 21
2.2.1 服务端终结点地址 22
2.2.2 客户端终结点地址 29
2.2.3 地址报头 32
2.3 端口共享 41
2.3.1 端口共享意义何在 43
2.3.2 http/https端口共享 43
2.3.3 tcp端口共享 44
.2.4 逻辑地址与物理地址 47
2.4.1 服务的角色 47
2.4.2 监听地址与监听模式 48
2.4.3 clientviabehavior行为 52
2.4.4 实例演示:通过tcptrace进行消息的路由(s205,s206) 54
2.5 请求监听与消息分发 60
2.5.1 连接请求的监听 61
2.5.2 消息分发 62
第3章 绑定(binding) 65
3.1 绑定模型 66
3.1.1 信道与信道栈 66
3.1.2 实例演示:直接通过绑定进行消息通信(s301) 68
3.1.3 wcf的绑定模型 71
3.2 信道与信道栈 72
3.2.1 communicationobject 72
3.2.2 defaultcommunicationtimeouts 74
3.2.3 ichannel和channelbase 75
3.2.4 消息交换模式 76
3.2.5 信道形状 77
3.2.6 会话信道 81
3.2.7 实例演示:自定义信道(s302) 83
3.3 信道监听器 87
3.3.1 ichannellistener与channellistenerbase 87
3.3.2 信道栈的创建/使用模式 88
3.3.3 实例演示:自定义信道监听器(s302) 88
3.4 信道工厂 91
3.4.1 ichannelfactory与channelfactorybase 91
3.4.2 实例演示:自定义信道工厂(s302) 92
3.5 绑定元素 93
3.5.1 构成绑定的元素 94
3.5.2 实例演示:自定义绑定元素(s302) 95
3.6 绑定 96
3.6.1 绑定是绑定元素的有序集合 97
3.6.2 实例演示:创建自定义绑定(s302,s303) 99
3.6.3 系统绑定 105
3.6.4 自定义绑定 109
3.6.5 绑定配置 110
第4章 契约(contract) 114
4.1 多角度认识契约 115
4.1.1 抽象、接口与服务契约 115
4.1.2 元数据与服务契约 116
4.1.3 wsdl、xsd与服务契约 116
4.1.4 消息交换与服务契约 117
4.2 定义服务契约 117
4.2.1 servicecontractattribute 117
4.2.2 operationcontractattribute 122
4.2.3 服务契约的继承 128
4.3 契约描述 132
4.3.1 contractdescription 132
4.3.2 operationdescription 133
4.3.3 messagedescription 134
4.4 消息交换模式与服务操作 139
4.4.1 请求-回复模式 139
4.4.2 单向模式 143
4.4.3 双工模式 144
4.4.4 实例演示:通过双工通信实现回调 145
4.5 多线程与异步操作 153
4.5.1 异步服务调用 154
4.5.2 异步服务实现 157
4.6 操作的选择与执行 160
4.6.1 dispatchoperation与clientoperation 160
4.6.2 操作的选择 162
4.6.3 操作的执行 163
第5章 序列化(serialization) 165
5.1 xmlserializer 166
5.1.1 xmlserializer默认的序列化规则 166
5.1.2 通过定制xmlserializer控制xml结构 169
5.1.3 通过定制数据类型控制xml结构 170
5.2 数据契约 171
5.2.1 数据契约的本质 172
5.2.2 datacontractattribute与datamemberattribute 172
5.3 datacontractserializer 174
5.3.1 datacontractserializer的序列化规则 176
5.3.2 如何限定序列化对象的数量 178
5.3.3 如何保持对象现有的引用结构 181
5.4 已知类型 184
5.4.1 未知类型导致序列化失败 184
5.4.2 datacontractserializer的已知类型集合 186
5.4.3 基于接口的序列化 187
5.4.4 knowntypeattribute 188
5.4.5 serviceknowntypeattribute 190
5.5 泛型数据契约与集合数据契约 191
5.5.1 泛型数据契约 191
5.5.2 数据契约集合 195
5.5.3 集合数据契约 199
5.5.4 字典数据契约 203
5.6 等效数据契约 208
5.6.1 数据契约的等效性 208
5.6.2 数据成员的添加 209
5.6.3 数据成员的删除 212
5.6.4 数据契约代理 215
5.7 序列化在wcf框架中的实现 219
5.7.1 消息格式化器 219
5.7.2 采用datacontractserializer还是xmlserializer 221
5.7.3 实例演示:通过自定义消息格式化器压缩消息(s521) 223
第6章 消息(message) 231
6.1 soap与ws-addressing 232
6.1.1 soap 232
6.1.2 ws-addressing 232
6.2 消息 234
6.2.1 消息版本 235
6.2.2 如何创建消息 237
6.2.3 消息的基本操作 244
6.3 消息报头与消息属性 249
6.3.1 messageheaderinfo 249
6.3.2 messageheader 250
6.3.3 messageheader[t] 251
6.3.4 messageheaders 252
6.3.5 消息属性 255
6.3.6 实例演示:通过消息报头和消息属性实现上下文信息的传播(s612) 259
6.4 消息契约 261
6.4.1 messagecontractattribute 262
6.4.2 messageheaderattribute 265
6.4.3 messagebodymemberattribute 265
6.4.4 消息契约与操作 266
6.5 xml编码 268
6.5.1 xmldictionary 268
6.5.2 xmldictionarywriter 270
6.5.3 xmldictionaryreader 278
6.6 消息编码 279
6.6.1 消息编码器 279
6.6.2 消息编码器工厂 280
6.6.3 消息编码绑定元素 281
6.6.4 消息编码与绑定 282
6.6.5 消息编码的实现 285
6.6.6 实例演示:通过自定义消息编码器实现消息压缩(s620) 286
第7章 服务寄宿(hosting) 294
7.1 服务描述 295
7.1.1 servicedescription 295
7.1.2 wcf的四大行为 297
7.2 servicehost 301
7.2.1 服务描述的创建(s701) 301
7.2.2 运行时框架体系的构建 308
7.2.3 服务的批量寄宿(s702) 312
7.2.4 自定义servicehost(s703) 316
7.3 iis与asp.net架构设计 317
7.3.1 iis 5.x与asp.net 318
7.3.2 iis 6.0与asp.net 319
7.3.3 iis 7.0与asp.net 320
7.3.4 asp.net管道 324
7.4 iis寄宿 328
7.4.1 .svc文件 328
7.4.2 实例演示:如何使用自定义servicehost(s704) 330
7.4.3 asp.net并行模式 331
7.4.4 asp.net兼容模式 337
7.4.5 非http协议寄宿 341
7.5 windows服务寄宿(s708) 343
第8章 客户端(client) 350
8.1 一个精简版的wcf框架 351
8.1.1 从透明代理和真实代理说起 351
8.1.2 服务代理的真实代理是什么 352
8.1.3 服务调用的大致流程 353
8.1.4 实例演示:创建一个wcf框架模拟程序(s801) 354
8.2 channelfactory[tchannel] 365
8.2.1 终结点是channelfactory[tchannel]的核心 366
8.2.2 一个特殊的信道工厂 366
8.2.3 channelfactory[tchannel]的开启 367
8.3 服务代理 369
8.3.1 服务代理的创建 369
8.3.2 四个重要的接口 370
8.3.3 服务调用 374
8.4 clientbase[tchannel] 376
8.4.1 clientbase[tchannel]与channelfactory[tchannel] 376
8.4.2 channelfactory[tchannel]缓存机制 378
8.5 服务代理的关闭与中止 380
8.5.1 没有关闭服务代理会带来怎样的后果 380
8.5.2 数据报信道与会话信道 382
8.5.3 服务代理、channelfactory[tchannel]和clientbase[tchannel]的关闭 383
8.5.4 服务代理的中止 385
8.5.5 通过realproxy实现服务代理的自动关闭和中止(s810) 389
8.5.6 通过委托实现服务代理的自动关闭和中止(s811) 391
第9章 实例化与会话(instancing and session) 395
9.1 实例上下文与实例上下文模式 396
9.1.1 实例上下文 396
9.1.2 实例上下文模式 397
9.1.3 实例服务行为 398
9.1.4 实例上下文提供者与实例提供者 399
9.1.5 实例上下文提供机制 400
9.2 单调模式 402
9.2.1 实例演示:单调模式下实例的创建与回收(s901) 402
9.2.2 单调模式实例上下文提供机制 403
9.2.3 实例演示:通过自定义实例上下文提供者实现单调模式(s902) 404
9.2.4 单调模式与可伸缩性 406
9.3 单例模式 407
9.3.1 已知单例和隐式单例 407
9.3.2 实例演示:单例模式下实例的创建与回收(s903) 408
9.3.3 单例模式实例上下文提供机制 409
9.3.4 实例演示:通过自定义实例上下文提供者实现单例模式(s904) 410
9.3.5 单例模式下的并发与同步 412
9.4 会话 413
9.4.1 客户端识别机制 414
9.4.2 会话契约 414
9.4.3 会话绑定 419
9.5 会话模式 421
9.5.1 实例演示:会话模式下实例的创建与回收(s910) 421
9.5.2 会话模式实例上下文提供机制 422
9.5.3 实例演示:通过自定义提供者实现会话模式(s911) 424
9.5.4 会话实例上下文模式与可伸缩性 426
9.6 会话模式、绑定与实例上下文模式 427
9.6.1 单调服务决定于单调实例上下文模式 427
9.6.2 单例服务决定于单例实例上下文模式 429
9.6.3 会话服务决定于会话信道(栈)和会话实例上下文模式 430
第10章 rest服务(rest service) 433
10.1 web、rest和wcf rest 434
10.1.1 web如此简单 434
10.1.2 rest是什么 435
10.1.3 wcf rest 438
10.2 web http编程模型 445
10.2.1 webhttpbinding 445
10.2.2 webgetattribute与webinvokeattribute 449
10.2.3 webhttpbehavior 454
10.2.4 webservicehost与webservicehostfactory 459
10.2.5 weboperationcontext 461
10.2.6 webfaultexception与webfaultexception[t] 463
10.3 uri模板 465
10.3.1 uri模板简介 465
10.3.2 uritemplate 467
10.3.3 uritemplatetable 468
10.3.4 webhttpdispatchoperationselector 469
10.4 消息格式化 473
10.4.1 客户端消息格式化 473
10.4.2 服务端消息格式化 485
10.5 输出缓存与条件获取/更新 487
10.5.1 输出缓存 488
10.5.2 条件获取 492
10.5.3 条件更新 496
第11章 wcf实例研究(wcf in practice) 500
11.1 vm简介 501
11.1.1 基本功能 501
11.1.2 物理部署 504
11.1.3 模块划分 504
11.1.4 层次设计 506
11.1.5 ioc的应用 508
11.1.6 aop的应用 513
11.1.7 身份认证 515
11.1.8 异常处理 520
11.2 模块设计 523
11.2.1 数据库设计 524
11.2.2 products模块 526
11.2.3 orders模块 536
11.2.4 infrastructure模块 540
11.3 asp.net mvc项目 544
11.3.1 ioc集成 545
11.3.2 异常处理 546
11.3.3 accountcontroller 547
11.3.4 productscontroller 549
11.3.5 orderscontroller 551
附录a 实例列表 557
下册
第1章 异常处理(exception handling) 1
1.1 wcf基本异常处理模式 2
1.1.1 当异常从服务端抛出 2
1.1.2 异常细节的传播 5
1.1.3 自定义异常信息 8
1.2 错误消息与faultexception异常 19
1.2.1 从soap fault说起 19
1.2.2 唯一可被传播的异常:faultexception 22
1.2.3 faultexception异常和错误消息之间的转换 26
1.3 wcf异常处理体系剖析 34
1.3.1 faultformatter 35
1.3.2 servicedebugbehavior如何实现对异常细节传播 39
1.4 wcf异常处理扩展 42
1.4.1 处理器(errorhandler) 42
1.4.2 实例演示:通过wcf扩展实现与entlib的集成(s105) 43
第2章 元数据(metadata) 55
2.1 wcf元数据架构体系简介 56
2.1.1 ws-mex 56
2.1.2 metadatasection与metadataset 70
2.1.3 wcf元数据架构模型 73
2.2 元数据的导出 74
2.2.1 metadataexporter和wsdlexporter 74
2.2.2 wsdl导出扩展和策略导出扩展 79
2.3 元数据的发布 81
2.3.1 元数据发布的实现者:servicemetadatabehavior 81
2.3.2 mex 终结点有何不同 83
2.3.3 servicemetadatabehavior是如何实现元数据发布的 85
2.4 元数据的获取和导入 97
2.4.1 自己动手实现元数据的获取 97
2.4.2 metadaimporter与元数据导入 102
第3章 事务(transaction) 108
3.1 wcf需要怎样的事务控制 109
3.1.1 什么是事务 109
3.1.2 事务的显式控制 110
3.1.3 分布式事务应用场景 113
3.2 windows下的事务处理模型 114
3.2.1 事务模型中的三种角色 115
3.2.2 分布式事务是如何实现的 118
3.2.3 system.transactions事务 121
3.3 事务处理协议:oletx和ws-at 135
3.3.1 ws-coordination 136
3.3.2 ws-at 140
3.4 wcf事务编程 142
3.4.1 通过服务契约决定事务流转的策略 142
3.4.2 通过绑定实施事务的流转 144
3.4.3 通过服务(操作)行为控制事务 153
3.4.4 实例演示:创建事务型服务(s301) 156
3.5 wcf事务实现原理 166
3.5.1 transactionflowattribute行为 166
3.5.2 事务绑定 166
3.5.3 事务的自动登记(enlistment) 173
3.5.4 oletx提升(oletx upgrade)机制 174
第4章 并发与限流(concurrency and throttling) 176
4.1 并发与实例上下文模式 177
4.1.1 同一个服务实例上下文同时处理多个服务调用请求 177
4.1.2 并发中的同步 180
4.1.3 并发与实例上下文模式 182
4.2 同步上下文与线程亲和性 196
4.2.1 倘若去除servicebehaviorattribute的usesynchronizationcontext属性 196
4.2.2 什么是同步上下文(synchronizationcontext) 197
4.2.3 wcf中的同步上下文与线程亲和性 199
4.3 流量限制(throttling) 203
4.3.1 如何进行限流控制 203
4.3.2 wcf限流控制是如何实现的 206
第5章 可靠会话(reliable sessions) 210
5.1 可靠消息传输 211
5.1.1 从tcp对报文段的可靠交付机制说起 211
5.1.2 ws-rm简介 213
5.2 编写可靠会话服务 220
5.2.1 实例演示:通过wcf服务传输图片(s501) 220
5.2.2 可靠会话绑定 234
5.3 可靠会话的实现原理 241
5.3.1 从信道层看可靠会话的实现 241
5.3.2 从传输协议的局限性和消息交换模式看可靠会话的实现 251
5.3.3 可靠会话最佳实践 254
第6章 队列服务(queued service) 257
6.1 msmq简介 258
6.1.1 msmq能解决什么问题 258
6.1.2 msmq的安装 259
6.1.3 消息队列 261
6.1.4 msmq编程 263
6.2 从队列服务的终结点谈起 274
6.2.1 地址 274
6.2.2 绑定 276
6.2.3 契约 278
6.3 事务控制 279
6.3.1 msmq事务模型 279
6.3.2 客户端事务 280
6.3.3 服务端事务 282
6.3.4 事务性批量接收 283
6.4 会话 288
6.4.1 客户端会话 288
6.4.2 服务端会话 292
6.5 错误处理 296
6.5.1 接收重试 296
6.5.2 接收错误处理 300
6.5.3 死信消息处理 301
6.5.4 日志(journaling)与跟踪(tracing) 303
第7章 传输安全(transfer security) 305
7.1 传输安全简介 306
7.1.1 分布式应用中的传输安全隐患 306
7.1.2 非对称加密(asymmetric cryptography) 307
7.1.3 transport与message安全模式 312
7.2 认证 318
7.2.1 认证与凭证(user credential) 318
7.2.2 绑定、安全模式与客户端凭证类型 323
7.2.3 服务认证 335
7.2.4 客户端认证 351
7.2.5 servicecredentials v.s. clientcredentials 362
7.3 消息保护(message protection) 366
7.3.1 消息的保护级别 366
7.3.2 签名与加密的实现 374
7.3.3 安全会话(secure sessions) 380
第8章 授权与审核(authorization and auditing) 386
8.1 身份(identity)与安全主体(principal) 387
8.1.1 身份 387
8.1.2 安全主体 391
8.2 windows用户组授权 397
8.2.1 windows用户组授权与认证的关系 397
8.2.2 windows用户组授权编程 398
8.2.3 实例演示:基于windows用户组的声明式授权(s801) 399
8.2.4 身份模拟(impersonation) 402
8.3 asp.net roles授权 409
8.3.1 asp.net roles提供程序 409
8.3.2 asp.net roles授权与认证的无关性 410
8.3.3 asp.net roles授权编程 411
8.3.4 实例演示:不同认证方式下的asp.ent roles授权 413
8.3.5 实例演示:通过wcf扩展实现授权(s805) 418
8.4 自定义授权方式 423
8.4.1 通过自定义authorizationpolicy和serviceauthorizationmanager创建安全主体 423
8.4.2 claim和claimset 426
8.4.3 自定义授权实现原理剖析 427
8.4.4 实例演示:通过自定义authorizationpolicy和serviceauthorizationmanager实现授权(s806) 428
8.5 安全审核(security auditing) 434
8.5.1 servicesecurityauditbehavior服务行为 434
8.5.2 安全审核的实现 435
8.5.3 实例演示:如何实施安全审核 436
第9章 扩展(extension) 442
9.1 服务端架构体系的构建 443
9.1.1 再谈服务描述(service description) 443
9.1.2 终结点分发器选择机制 446
9.1.3 信道分发器(channeldispatcher) 448
9.1.4 终结点分发器(endpointdispatcher) 452
9.1.5 分发运行时(dispatchruntime) 453
9.1.6 分发操作(dispatchoperation) 460
9.2 客户端架构体系的构建 465
9.2.1 创建channelfactory[tchannel] 465
9.2.2 客户端运行时(clientruntime) 467
9.2.3 客户端操作(clientoperation) 470
9.2.4 服务代理与服务调用 471
9.3 通过定义四种行为对wcf的扩展 474
9.3.1 wcf四种类型的行为 474
9.3.2 行为方法的执行 476
9.3.3 实例演示:通过扩展确保语言文化一致性(s901) 477
9.4 servicehost对wcf的扩展 488
9.4.1 自定义servicehost的本质:对服务描述进行定制 488
9.4.2 自定义servicehost的创建者:servicehostfactory 491
9.4.3 实例演示:通过扩展实现基于ioc的服务实例的创建(s903,s904) 493
第10章 wcf 4.0新特性(new features in wcf 4.0) 503
10.1 简化开发体验 504
10.1.1 默认终结点 504
10.1.2 默认绑定配置 509
10.1.3 默认行为配置 510
10.1.4 标准终结点 513
10.1.5 无.svc文件服务激活 514
10.2 路由服务(routing service) 516
10.2.1 路由服务就是一个wcf服务 516
10.2.2 基于消息内容的路由策略 520
10.2.3 实例演示:如何使用路由服务(s1001) 527
10.2.4 其他路由特性 532
10.3 服务发现(service discovery) 534
10.3.1 ws-discovery 534
10.3.2 可被发现的服务(discoverable service) 537
10.3.3 目标服务的探测和解析 544
10.3.4 实例演示:如何利用服务发现机制实现服务的“动态”调用(s1002) 550
10.3.5 dynamicendpoint 553
10.3.6 服务上/下线通知 555
10.3.7 发现代理(discovery proxy) 563
附录a 实例列表 571
参考文献 573
本书是一本内容丰富、取材新颖的计算机图形学著作,并在其前一版的基础上进行了全面扩充,增加了许多新的内容,覆盖了近年来计算
《不头疼的故事作文课(典藏版):怪小孩》内容简介:《不头疼的故事作文课》系列是根据作者的一些亲身经历的故事为基础,改编成为
《敦煌的光彩:常书鸿、池田大作对谈录》内容简介:本书是首任敦煌研究院院长、被誉为“敦煌守护神”的常书鸿先生与日本著名思想家
《这才是我想要的语文书:诗歌分册》内容简介:本分册分为时间与季节、风景与景色、亲爱的动物们、花树与果实、火车与旅行、梦想与
《React Cookbook中文版:87个案例带你精通React框架》内容简介:React可以帮助你便捷地创建和处理应用程序,但要掌握如何将各部分
《水样的春愁:郁达夫精读》内容简介:本书是郁达夫散文和小说的代表作合集,收录了他的名作《故都的秋》《北平的四季》《沉沦》《
《人的局限性:约翰生作品集》内容简介:本书为英国著名作家、批评家塞缪尔·约翰生的作品集,以牛津《约翰生重要作品选》、哈佛《
《创新思维与科技创新》内容简介:科技创新包括知识创新、技术创新和管理创新,是当代大学生必须学习和掌握的创新、创业的基础且重
本书为日本公认的最好的Ruby入门教程。松本行弘亲自审校并作序推荐。本书支持最新的Ruby2.0,也附带讲解了可运行于1.9版本的代码
本书提出了一个框架,用于分析程序设计语言的语法、操作和语义性质,该框架基于称为类型化λ演算的数学系统。λ演算的主要特色是
《LinuxUnix设计思想/图灵程序设计丛书》内容简介:将Linux的开发方式与Unix的原理有效地结合起来,总结出Linux与Unix软件开发中
《社群营销与运营实战手册》内容简介:社群经济的崛起极大地改变了现有的商业模式,微商、“网红”、社交电商等新兴模式使社群的地
《民事诉讼程序研究》共分为诉讼程式;扩散利益、分散利益和集体利益的保护;程式样式;当事人与法官;对判決的救济;程式改革。
C语言程序设计 内容简介 《C语言程序设计(第4版)》以程序设计为主线,以编程应用为驱动,理论联系实际,通过丰富的实例分析详细地介绍了C程序设计的思想及方法。全...
Google地图、Flickr、YouTube、Amazon等众多开放平台的涌现,使我们能够方便地将海量的外部Web数据灵活有序地结合起来,创建出各
《Python高效开发实战》内容简介:也许你听说过全栈工程师,他们善于设计系统架构,精通数据库建模、通用网络协议、后端并发处理、
《3D打印:从全面了解到亲手制作》一书不仅向读者全面介绍3D打印这一新兴技术,同时通过详细的引导,帮助零基础的爱好者们组装一
MaggieMacnab,世界著名设计师、教育家和作家,1981年创立了MacnabDesign公司,开始从事平面设计相关的工作,1983年因为Logo设计
《中国合作经济评论 (2017年第1期/总第1期)》内容简介:本书是以合作社为主要研究对象的国际化、学术性专题集刊,设有以下栏目:
InternationalcellistSaraSelkirkisapprehensiveaboutthecharityconcertinBathsfamous...