`
sty2008boy
  • 浏览: 302446 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

正确设置实现WCF传输大数据

阅读更多
WCF可以帮助我们用来传输数据。但是有没有人遇到过需要大容量数据传输的需求呢?只要进行正确的设置就可以实现WCF传输大数据。

在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于数据过大超出限定导致的。

问题是我实际发送的数据是刚刚从WCF服务端接收过来的,一来一去,数据量差别并不大。

然后发现,在客户端和服务端实际使用的是不同的配置,对于客户端,在添加ServiceReference时自动生成的ServiceReferences.ClientConfig文件中system.serviceModel节下有这样的设置实现WCF传输大数据:

< bindings>
< basicHttpBinding>
< binding name="BasicHttpBinding_WcfService"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
< security mode="None" />
< /binding>
< /basicHttpBinding>
< /bindings>然后在Client节里应用Binding
Configuration:
< client>
< endpoint address="http://
localhost:22000/Service/WcfService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_WcfService"
contract="WcfServiceReference.WcfService"
name="BasicHttpBinding_WcfService" />< /client>
在Binding里指定了最大缓存字节数和最大接受字节数,相当于2G的大小!除非传一整套连续剧,一般是够用了。

而在服务端,Web.config文件里,Bindings节是空的,而Service也没有指定bindingConfiguration属性,那么它们采用的就是默认的65535的大小。

问题找到,解决WCF传输大数据就比较容易了:

在Bindings节添加新的Binding设置,指定最大接受数据:

< bindings>
< basicHttpBinding>
< binding name="LargeDataTransferServicesBinding"
maxReceivedMessageSize="2147483647"
messageEncoding="Text" transferMode="Streamed"
sendTimeout="00:10:00" />
< /basicHttpBinding>
< /bindings>之后给相应的Service
指定bindingConfiguration属性:
< service behaviorConfiguration=
"Server.Service.WcfServiceBehavior"
name="Server.Service.WcfService">
< endpoint address="" binding=
"basicHttpBinding" bindingConfiguration=
"LargeDataTransferServicesBinding"
contract="Server.Service.WcfService" />
< endpoint address="mex" binding=
"mexHttpBinding" contract="IMetadataExchange" />
< /service>
这样就可以从客户端发送足够大的数据了。

P.S.:

.net默认只能传4M的文件,所以尽管设定了Wcf两端的配置,还是超不出.net的限定,所以如果要传输大文件,还需要在System.Web节下加上

< httpRuntimemaxRequestLength="102400" />
这里的单位是KB,这样就可以传100M的文件了,充分解决了WCF传输大数据的问题。当然,这么大的文件,最好还是分段传输比较好。

.net默认只能传4M的文件,所以尽管设定了Wcf两端的配置,还是超不出.net的限定,所以如果要传输大文件,还需要在System.Web节下加上

< httpRuntimemaxRequestLength="102400" />
这里的单位是KB,这样就可以传100M的文件了,充分解决了WCF传输大数据的问题。当然,这么大的文件,最好还是分段传输比较好。

建议不要传输过大的数据,因为可能造成你的网络堵塞。
分享到:
评论

相关推荐

    Wcf传输大数据

    首先,我们要理解WCF传输大数据时面临的问题。默认情况下,WCF使用SOAP协议,这是一种重量级的消息格式,包含大量头部信息,这在传输大数据时会增加网络负担和处理时间。此外,WCF默认的消息大小限制也较小,可能...

    WCF传输使用实例 WCF传输使用实例

    通过这种方式,我们可以实现一个简单的WCF通信实例,其中服务器端提供服务,客户端消费服务。WCF的强大之处在于其灵活性,可以根据需求调整各种配置,实现更复杂的服务交互,包括异步调用、双向通信、安全性和事务...

    wcf大数据量传输(客户段->服务段 服务段->客户段)

    本文将深入探讨如何在WCF中实现大数据量的高效传输,特别是涉及到数据的压缩和分段传输。 首先,让我们了解大数据量在WCF中的挑战。当发送或接收大数据对象,如Dataset,时,可能会导致性能下降、内存压力增大以及...

    WCF压缩传输

    **实现WCF传输压缩的方法** 1. **自定义绑定元素:** 创建一个新的`BindingElement`,例如`CompressionMessageEncoder`,该元素负责在消息发送前对其进行压缩,并在接收时解压。这个类需要继承自`System....

    wcf分块传输大文件的例子

    本示例将探讨如何在 WCF 中实现大文件的分块传输。 在传统的文件传输中,如果文件过大,一次性传输可能会导致内存溢出、网络拥塞或客户端断开连接等问题。为了解决这些问题,我们可以将大文件分割成多个小块(或...

    10学习WCF大型数据和流

    总结来说,“10学习WCF大型数据和流”教程旨在帮助开发者掌握在WCF中高效处理大数据和流式传输的技巧,从而构建健壮、高性能的分布式系统。通过深入学习和实践,开发者能够提升自己的WCF技能,解决实际项目中的挑战...

    WCF匿名客户端加密传输数据

    本文将深入探讨“WCF匿名客户端加密传输数据”的主题,结合参考链接中的博客文章,来解析WCF如何实现匿名访问以及在传输过程中确保数据的安全性。 首先,我们要理解WCF的传输安全性。传输安全性是WCF安全模型的一个...

    疯狂WCF基础之突破post上传大小限制

    通过这个Demo,你不仅学会了如何突破WCF的POST数据大小限制,还了解了如何在`Web.config`中配置WCF服务,包括绑定、行为和服务的详细设置。这将有助于你在开发过程中更好地控制和优化WCF服务的性能。

    C#WCF和HTTP文件传输练习.zip

    为了实现流传输,我们可以使用WCF的`Stream`类型参数,这可以有效地处理大文件,因为数据不是一次性加载到内存中,而是按需读取和发送。 接下来,客户端部分。在本项目中,客户端程序选用Windows Presentation ...

    C#网络应用编程实验 WCF和HTTP文件传输练习

    C#网络应用编程第三版(人民邮电出版社)课后上机练习实验 实验四 WCF和HTTP文件传输练习 关键技术是使用Stream传输和保存文件。 此代码仅供参考。

    WCF大型数据和流\详解传输\安全性概述

    理解并选择合适的传输方式对于优化服务性能和实现需求至关重要。 最后,我们要了解"WCF安全性概述"。WCF提供了全面的安全模型,包括消息安全、传输安全和身份验证。消息安全确保数据在传输过程中的完整性和机密性,...

    WCF编程系列之wcf使用压缩提高传输数据性能的方法

    WCF编程系列之wcf使用压缩提高传输数据性能的方法

    Wcf 大数据量传输源码

    本篇文章将深入探讨如何使用WCF进行大数据量传输,并重点关注双通道(Duplex Contract)的实现。 首先,我们需要理解大数据量传输的挑战。WCF默认使用SOAP协议,该协议基于XML,对于大量数据来说,XML的序列化和反...

    wcf+wpf实现文件上传下载实例

    总结起来,"wcf+wpf实现文件上传下载实例"是一个结合了WCF服务和WPF客户端的应用,它展示了如何在分布式环境中安全、高效地处理文件操作。这个实例涵盖了服务端契约定义、客户端调用、文件流处理、UI交互以及安全...

    WCF Stream 传输

    通过学习和理解这个示例,开发者可以更好地掌握如何在WCF中实现高效的数据传输,特别是在处理大量数据时。同时,对于那些想要在实际项目中应用WCF和REST服务的人来说,这是一个宝贵的参考资料。

    测试WCF http协议传输速度

    此demo是完成一个测试WCF服务中,使用http协议的传输速度练习

    WCF 数据压缩传输

    **WCF 数据压缩传输** Windows Communication Foundation (WCF) 是微软提供的一种用于构建分布式应用程序的服务框架,它允许服务提供者和服务消费者之间进行安全、可靠、事务性的通信。在某些情况下,如在网络带宽...

    WCF加密传输数据,b并且用户名+密码验证

    在IT行业中,Windows Communication ...通过正确配置WCF服务和客户端,可以实现高效且安全的通信。而X.509证书的使用则进一步加强了身份验证和数据保护。在实际项目中,应根据具体需求选择合适的加密和身份验证策略。

    C#编程实践中问题与解决方案总结

    文章内容包括: windows form (窗体) 之间传值小结 ;...WCF传输大数据的三种解决方案:WCF传输大数据量DataSet ,在WCF中分页传输数据(Duplex方式),序列化传输; WCF消息回调与心跳包的解决方案

    基于WCF多线程的SOCKET文件传输服务

    总之,基于WCF的多线程SOCKET文件传输服务是一个复杂而实用的系统,它结合了WCF的易用性和SOCKET的灵活性,通过多线程实现了高效的文件并发传输。在设计和实现过程中,需要注意服务的可扩展性、安全性以及性能优化,...

Global site tag (gtag.js) - Google Analytics