- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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,
//
/
您可能关注的文档
最近下载
- 智慧水务中智慧水厂建设的探讨(29页 PPT).pptx VIP
- 8《黄山奇石》课件(共28张PPT)(内嵌视频+音频).pptx VIP
- 在线网课学习课堂《高级医学英语(首都医大 )》单元测试考核答案.pdf VIP
- 2025年宁夏回族自治区畜牧业“十五五”发展规划.docx
- 建筑防火通用规范GB55037-2022电气专业解读PPT.pptx VIP
- 发现-研究-反思-改进-总结——行动研究的一般过程.ppt VIP
- 迅达电梯3300电气原理图纸(中文精简版).pdf
- 国企混改合资协议书.docx VIP
- S7-200-SMART-PID-Control专题培训课件.pptx VIP
- 苏 J9501 工程做法-标准图集.docx VIP
文档评论(0)