wcf分布式开发步步为赢(11)wcf流处理(streaming)机制.docx

wcf分布式开发步步为赢(11)wcf流处理(streaming)机制.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WCF分布式开发步步为赢(11):WCF 流处理(Streaming )机制 所属分类:WCF分布式开发步步为赢,SOA and EAI . WSE3.0框架提供了数据优化传输机制,WSE3.0构建Web服务安全(4):MT0M 消息传输优化和文件 上传、下载 疑问里进行了介绍。 WCF同样也提供了流操作来支持大数据对象的传输和处理优化机制,今 天我们WCF分布式开发步步为赢系列的(4):使用流操作(Streaming Operations )优化传输。本节会 详细介绍流操作的相关概念、编程实现过程,以及实际开发过程中需要主要的一些问题。本节结构:【 1】 流处理的概念【2】流处理的特点【3】示例代码分析【4】总结。最后上传本文的示例代码。 Streaming ,本文翻译为流处理(张逸兄翻译的 Programming WCF Services 一书里把这个机制翻 译为流操作”不存在争议。我选择 流处理”一词的意思,只是想把这个 Streaming 词形象准确化,动名 词,流化处理、流处理,翻译为流操作,初学者会误会认为这个是一个服务操作。因为 Streaming 只是 WCF内建的一个机制。而不是操作。) 我们首先来理解什么是 Streaming 流处理。 【1】Streaming 流处理的概念: 通常情况,客户端和服务端进行交互, 传递消息,都是放到接收端的缓存里, 待接收完毕后再进行处理 无论接收端是客户端还是服务端都是如此。 【1.1】要解决的问题: 当客户端调用服务时,要阻塞客户单进程,直到消息发送完毕,服务端才开始处理数据,然后是返回 处理完毕的结果给客户端,客户端接收完毕,才能解除阻塞。这样带来的问题是当消息传递的时间很短, 相对处理时间可以忽略不计,不会影响系统服务的效率。但是要是消息数据很大,比如是图片或者多媒体 对象。每次传输时间相对较大,这样接收端的等待时间过久,势必每次阻塞都会很长,进程无法继续执行。 因而导致效率低下。 【1.2】Streaming 流处理: Streaming 流处理就是WCF提供的主要针对大量消息数据处理的一种优化机制。 WCF允许接收端通 过通道接受消息的同时,启动对消息数据的处理,这样的过程称为流传输模型。 【2】Streaming 流处理的特点: 显然对于处理大量的消息数据而言,流处理机制改善了系统的吞吐量和响应效率。 【2.1】流处理操作定义: WCF的流处理机制需要使用.NET FrameWork 定义的Stream 类(它是FileStream , NetworkStream, MemoryStrea m的父类)。流处理适用一下场景: [ServiceCo ntract] in terface IMyCo ntract { [Operatio nCon tract] Stream StreamReply1(); [Operatio nCon tract] void StreamReply2( out Stream stream); [Operatio nCon tract] void StreamRequest(Stream stream); [Operatio nCo ntract(ls On eWay = true )] void On eWayStream(Stream stream); } 它可以做为返回数据、参数、输岀参数的类型。当然也可以作为单调服务的操作参数。这里使用的参数 必须是可序列化的,例如 Memorystream而FileStream 不支持序列化因而不能作为参 数或者返回数据的类型。 【2.2】流处理与绑定协议: 流处理机制在特定的绑定协议中才能使用,目前是 BasicHttpBinding , NetTcpBinding ,和 NetNamedPipeBinding支持流处理模型。但是在默认情况下, wcf禁止流处理模式。 流传输模式使用使用 TransferMode 进行配置,TransferMode 为枚举类型,其定义如下: public enum Tran sferMode { // Summary: // The request and resp onse messages are both buffered. Buffered = 0, // // Summary: // The request and resp onse messages are both streamed. Streamed = 1, // // Summary: // The request message is streamed and the resp onse messa ge is buffered. StreamedRequest = 2, // /

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档