- 3
- 0
- 约1.15万字
- 约 9页
- 2017-03-30 发布于湖北
- 举报
当有大量的数据要传输时,WCF的流模式是比较好的选择,因为流模式不是全部加载到内存后传输而是一边读取一边传输消息,所以流模式改善了系统的吞吐量和响应效率。 需要注意的是当启用了流模式,以下WCF功能无法使用: (1) 无法执行消息正文的数字签名; (2) 不支持Session; (3) 不支持可靠会话。WCF中定义的Binding中支持流模式的只有: BasicHttpBinding, NetTcpBinding, NetNamingPipeBinding, WebHttpBinding。流和会话?在流与基于会话的绑定一起调用时可能会产生意外行为。可通过单一通道(数据报通道)执行所有流调用,该通道不支持会话,即使将正在使用的绑定配置为使用会话也是如此。如果多个客户端通过基于会话的绑定对同一服务对象进行流调用,并且 ConcurrencyMode = Single,同时 InstanceContextMode = PerSession,则所用调用都必须经过数据报通道,因此一次只处理一个调用。一个或多个客户端因此可能会超时。通过将该服务对象的 InstanceContextMode 设置为 PerCall 或将 ConcurrencyMode 设置为 Multiple 可以解决。?流模式契约示例?启用流模式时,要求操作契约只能以单个的Stream对象为输入输出参数,你可以按照以下示例定义契约:?
[c-sharp]?view plain?copy
1. [OperationContract]???
2. Stream?GetStream(string?data);???
3. [OperationContract]???
4. bool?UploadStream(Stream?stream);???
5. [OperationContract]???
6. Stream?EchoStream(Stream?stream);???
注意:上面的UploadStream, EchoStream中添加第二个参数会导致流模式无效,因此如果想使用流传送更多信息,可以通过消息头携带信息,而消息正文是流内容。?
[c-sharp]?view plain?copy
1. [MessageContract]??
2. public?class?FileUploadData???
3. {??
4. ????[MessageHeader]??
5. ????public?string?FileName?{?get;?set;?}??
6. ????[MessageHeader]??
7. ????public?int?FileSize?{?get;?set;?}??
8. ????[MessageHeader]??
9. ????public?string?FileUniqueID?{?get;?set;?}??
10. ????[MessageBodyMember]??
11. ????public?Stream?FileData?{?get;?set;?}??
12. }??
流模式实现文件上传大数据传输的过程是比较耗时的,所以应该考虑异步调用,提高系统的响应。这里可以通过客户端生成代理时,指定生成异步操作。???流模式最常用的场景就是文件的上传和下载了,一般上传下载的过程比较长,比较好的客户体验是实时的把进度告诉客户端。我一开始考虑用Duplex在写流的过程中,即时通知客户端。而上面的Binding方式中只有NetTcpBinding支持Duplex,但实验后发现一旦使用Duplex,流模式就失效了。所以后来只好采用客户端轮询的方式来获取当前的进度,如下图:???服务契约(IUpLoadService.cs)
[c-sharp]?view plain?copy
1. using?System;??
2. using?System.Collections.Generic;??
3. using?System.Linq;??
4. using?System.Runtime.Serialization;??
5. using?System.ServiceModel;??
6. using?System.Text;??
7. using?System.IO;??
8. namespace?WcfUploadServiceLib??
9. {??
10. ????[ServiceContract]??
11. ????public?interface?IUpLoadService??
12. ????{???
13. ????????[OperationContract(IsOneWay?=?true)]??
14. ???
您可能关注的文档
- 中层干部如何把握员工流失率综述.ppt
- 中山大学附属第一医院病历书写基本规范实施细则综述.doc
- 中安国际自贸区产业园综述.pptx
- 中小学数学衔接课的重要性综述.ppt
- 中层领导的十二项技能训练综述.ppt
- WCDMA室内覆盖工程方案设计流程及规范分解.doc
- wcdma无线网络优化方法概述分解.doc
- 智能环境监控系统分解.ppt
- 中山大学高级财务管理本科课程最新考研必备综述.ppt
- WCDMA综述报告分解.doc
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 人教版小学六年级数学册期末检测试卷共八套.doc VIP
- 《新时代汉语口语:中级·下》PPT第15课 读万卷书,行万里路.pptx VIP
- 《新时代汉语口语:中级·下》PPT第5课 如今的四合院.pptx VIP
- 村支书考录公务员笔试试卷(含答案).docx VIP
- 《新时代汉语口语:中级·下》PPT第13课 孩子的零花钱怎么给(新).pptx VIP
- 《新时代汉语口语:中级·下》PPT第11课 我的“选择困难症又犯了(新).pptx VIP
- 铝灰渣资源化利用污染控制技术规范.pdf VIP
- 《新时代汉语口语:中级·下》PPT第14课 我想搬出去住(新).pptx VIP
- 《新时代汉语口语:中级·下》PPT第7课 网购与生活 .pptx VIP
- 2023年江苏省专转本考试计算机真题附答案解析.docx VIP
原创力文档

文档评论(0)