none
晕 WCF TCP 方式最大只能传64K? 大于64K只能分包发送吗? RRS feed

  • 问题

  • 晕 WCF TCP 方式最大只能传64K? 大于64K只能分包发送吗?我大于64K了,好像就没反映了 maxReceivedMessageSize ="1048576" maxBufferSize="1048576"  这2个修改了,依然是无效的
    2009年8月18日 5:21

答案

  • 呵呵,
      1.其实你说的没错,TCP本质上数据包确实是分包发送的。不过这个和大小没关系。是TCP协议决定的
      2.你虽然修改了绑定的这个两个属性,但是你数据传输绑定相关的属性很多,比如数组长度等属性。
       你把 <binding name="Binding“ closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                        hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                        maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                        maxReceivedMessageSize="65536">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <reliableSession ordered="true" inactivityTimeout="00:10:00"
                            enabled="false" />
                        <security mode="Transport">
                            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                            <message clientCredentialType="Windows"  />
                        </security>
                    </binding>

       为了保险起见,你可以把Size和长度相关的属性全部修改的大点。另外如果客户端同时访问的数量大于10个,最好修改限流属性。Throttling

    有问题在交流~


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年8月18日 6:43
    版主

全部回复

  • 呵呵,
      1.其实你说的没错,TCP本质上数据包确实是分包发送的。不过这个和大小没关系。是TCP协议决定的
      2.你虽然修改了绑定的这个两个属性,但是你数据传输绑定相关的属性很多,比如数组长度等属性。
       你把 <binding name="Binding“ closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                        hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                        maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                        maxReceivedMessageSize="65536">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <reliableSession ordered="true" inactivityTimeout="00:10:00"
                            enabled="false" />
                        <security mode="Transport">
                            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                            <message clientCredentialType="Windows"  />
                        </security>
                    </binding>

       为了保险起见,你可以把Size和长度相关的属性全部修改的大点。另外如果客户端同时访问的数量大于10个,最好修改限流属性。Throttling

    有问题在交流~


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年8月18日 6:43
    版主
  • 那如果要传递DataSet或者DATATABLE岂不是都要先序列化?抑或是更换绑定吗?
    2009年8月20日 9:10
  • 那如果要传递DataSet或者DATATABLE岂不是都要先序列化?抑或是更换绑定吗?

    Hi,
      DataSet和Datatable 都是.NET内置类型,支持序列化。
      如果全部是基于.net平台进行数据交换,比较方便,但是异构平台来说,这种方式过于繁琐。而且,这些数据访问类型都是特定的.NET类型。在序列化时,它们生成的数据契约样式也过于复杂,很难与其它平台进行交互;
      你可以参考一下我的这个文章。有详细的介绍~
    WCF分布式开发步步为赢(8):使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年8月20日 10:33
    版主