
| 是作者蒋金楠多年潜心研究wcf技术的心血之作 本书书涵盖了wcf几乎所有的知识点,并对其底层框架进行了“庖丁解牛”式的剖析 不仅适合尚未接触过wcf,希望尽快入门并进行深入研究的开发人员使用,同样也适合对wcf有一定了解的开发设计人员和架构师阅读。 |
| 蒋金楠(网名Artech)现就职于某知名软件公司担任高级软件顾问。连续5届微软MVP(最有价值专家),同时也是少数的双料MVP(Solutions Architecture + Connected System)之一。国内较早接触WCF的人之一,2007年2月起在个人博客(http://www.cnblogs.com/artech)上发表了超过200篇深入介绍WCF的文章,成为目前国内WCF在线资料的主要来源。 .. << 查看详细 |
| 《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/https19 2.1.2 net.tcp20 2.1.3 net.pipe20 2.1.4 net.msmq21 2.2 endpointaddress21 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 communicationobject72 3.2.2 defaultcommunicationtimeouts74 3.2.3 ichannel和channelbase75 3.2.4 消息交换模式76 3.2.5 信道形状77 3.2.6 会话信道81 3.2.7 实例演示:自定义信道(s302)83 3.3 信道监听器87 3.3.1 ichannellistener与channellistenerbase87 3.3.2 信道栈的创建/使用模式88 3.3.3 实例演示:自定义信道监听器(s302)88 3.4 信道工厂91 3.4.1 ichannelfactory与channelfactorybase91 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 servicecontractattribute117 4.2.2 operationcontractattribute122 4.2.3 服务契约的继承128 4.3 契约描述132 4.3.1 contractdescription132 4.3.2 operationdescription133 4.3.3 messagedescription134 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与clientoperation160 4.6.2 操作的选择162 4.6.3 操作的执行163 第5章 序列化(serialization)165 5.1 xmlserializer166 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与datamemberattribute172 5.3 datacontractserializer174 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 knowntypeattribute188 5.4.5 serviceknowntypeattribute190 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还是xmlserializer221 5.7.3 实例演示:通过自定义消息格式化器压缩消息(s521)223 第6章 消息(message)231 6.1 soap与ws-addressing232 6.1.1 soap232 6.1.2 ws-addressing232 6.2 消息234 6.2.1 消息版本235 6.2.2 如何创建消息237 6.2.3 消息的基本操作244 6.3 消息报头与消息属性249 6.3.1 messageheaderinfo249 6.3.2 messageheader250 6.3.3 messageheader[t]251 6.3.4 messageheaders252 6.3.5 消息属性255 6.3.6 实例演示:通过消息报头和消息属性实现上下文信息的传播(s612)259 6.4 消息契约261 6.4.1 messagecontractattribute262 6.4.2 messageheaderattribute265 6.4.3 messagebodymemberattribute265 6.4.4 消息契约与操作266 6.5 xml编码268 6.5.1 xmldictionary268 6.5.2 xmldictionarywriter270 6.5.3 xmldictionaryreader278 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 servicedescription295 7.1.2 wcf的四大行为297 7.2 servicehost301 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.net318 7.3.2 iis 6.0与asp.net319 7.3.3 iis 7.0与asp.net320 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 rest434 10.1.1 web如此简单434 10.1.2 rest是什么435 10.1.3 wcf rest438 10.2 web http编程模型445 10.2.1 webhttpbinding445 10.2.2 webgetattribute与webinvokeattribute449 10.2.3 webhttpbehavior454 10.2.4 webservicehost与webservicehostfactory459 10.2.5 weboperationcontext461 10.2.6 webfaultexception与webfaultexception[t]463 10.3 uri模板465 10.3.1 uri模板简介465 10.3.2 uritemplate467 10.3.3 uritemplatetable468 10.3.4 webhttpdispatchoperationselector469 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 accountcontroller547 11.3.4 productscontroller549 11.3.5 orderscontroller551 附录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 唯一可被传播的异常:faultexception22 1.2.3 faultexception异常和错误消息之间的转换26 1.3 wcf异常处理体系剖析34 1.3.1 faultformatter35 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-mex56 2.1.2 metadatasection与metadataset70 2.1.3 wcf元数据架构模型73 2.2 元数据的导出74 2.2.1 metadataexporter和wsdlexporter74 2.2.2 wsdl导出扩展和策略导出扩展79 2.3 元数据的发布81 2.3.1 元数据发布的实现者:servicemetadatabehavior81 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-at135 3.3.1 ws-coordination136 3.3.2 ws-at140 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. clientcredentials362 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和claimset426 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的创建者:servicehostfactory491 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-discovery534 10.3.2 可被发现的服务(discoverable service)537 10.3.3 目标服务的探测和解析544 10.3.4 实例演示:如何利用服务发现机制实现服务的“动态”调用(s1002)550 10.3.5 dynamicendpoint553 10.3.6 服务上/下线通知555 10.3.7 发现代理(discovery proxy)563 附录a 实例列表571 参考文献573 |
商品评论(0条)