千家信息网

WCF Stream操作限制实例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"WCF Stream操作限制实例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"WCF Stream操作限制实例分析"吧!WCF
千家信息网最后更新 2026年10月31日WCF Stream操作限制实例分析

这篇文章主要讲解了"WCF Stream操作限制实例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"WCF Stream操作限制实例分析"吧!

WCF支持对Stream对象的操作,尤其对于传递size过大的消息而言,如要考虑传递消息的效率,WCF推荐通过Stream进行操作。然而,WCF对于Stream操作规定了一些限制,在我们编写相关程序时,需要特别注意:

1、绑定的限制

如果需要使用Stream操作,可以使用的绑定只能是BasicHttpBinding,NetTcpBinding以及 NetNamedPipeBinding。此外,在使用WCF Stream操作时,不能使用Reliable Messaging。如果考虑到消息安全,则此方式是不可取的。

2、对Stream对象的限制

要作为服务操作所传递的消息对象,这样的对象必须是可序列化的。遗憾的是,FileStream类的定义却是不支持序列化的,我们能够使用的Stream对象,包括Stream,MemoryStream等。使用Stream类对象是大多数WCF Stream操作的***。一个有趣的现象是FileStream与Stream类型的转换。例如在服务契约的操作中,有如下的实现:

public Stream TransferDocument(Document document)  {  FileStream stream = new FileStream  (document.LocalPath, FileMode.Open, FileAccess.Read);  return stream;  }

注意,操作TransferDocument()的返回类型为Stream,而方法的实现中,返回的对象则为FileStream类型。由于Stream类是FileStream类的父类,这样的实现没有问题。

然而,在客户端调用该操作时,却不能将操作的返回值赋给FileStream类型的对象,如下所示:

FileStream stream = m_service.TransferDocument(doc);

此时获得的Stream对象则为null。因而,我们只能这样调用操作:

Stream stream = m_service.TransferDocument(doc);

但是,还有一个奇怪的问题是WCF并不支持Stream对象Length属性的序列化,也就是说,在客户端我们不能使用服务操作返回的Stream对象的Length属性。诸如stream.Length的调用会抛出异常。

感谢各位的阅读,以上就是"WCF Stream操作限制实例分析"的内容了,经过本文的学习后,相信大家对WCF Stream操作限制实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

对象 限制 实例 实例分析 分析 消息 类型 序列 问题 学习 支持 服务 内容 客户 客户端 属性 有趣 安全 遗憾 也就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 南京欣网互联网络科技有限公司 上海睿民互联网科技有限公司 深圳九邦互联网科技有限公司 圆梦互联网科技 智能科技公司是互联网公司吗 上海互联网科技有限公司 凡科互联网科技 中国科技互联网公司收入 互联网软件和科技 昭通互联网科技选哪家 智腾互联网科技有限公司 厦门千工互联网科技有限公司 互联网科技产业特征 西安小鹰速贷互联网科技有限公司 互联网在线教育科技创业 互联网公司高科技产品 云南省自由互联网科技有限公司 互联网科技创新创业项目 河南商务圈互联网科技有限公司 互联网金融科技 青岛互联网科技公司 安徽鑫晟辉互联网科技 致聘互联网科技 上海万想互联网科技 上海电发互联网科技有限公司 黑科技 体验场景 互联网大会 浙南科技城互联网大厦招聘 广州三三互联网科技有限公司 众联互联网络科技
0