none
wcf的服务端和客户端运行在.netframwork3.5环境下,想要使用压缩提高传输效率,是否必须升级到.netframework4.0? RRS feed

  • 问题

  • 下载msdn的示例:WF_WCF_Samples\WCF\Extensibility\MessageEncoder\Compression 看到配置文件如下:

    <?xml version="1.0"?>
    <configuration>
      <system.serviceModel>
        <extensions>
          <bindingElementExtensions>
            <add name="gzipMessageEncoding" type="Microsoft.Samples.GZipEncoder.GZipMessageEncodingElement, GZipEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
          </bindingElementExtensions>
        </extensions>
        <client>
          <endpoint address="http://localhost:8000/samples/GZipEncoder" bindingConfiguration="ISampleServer" binding="customBinding" contract="ISampleServer">
          </endpoint>
          <metadata>
            <policyImporters>
              <extension type="Microsoft.Samples.GZipEncoder.GZipMessageEncodingBindingElementImporter, GZipEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
            </policyImporters>
          </metadata>
        </client>
        <bindings>
          <customBinding>
            <binding name="ISampleServer">
              <gzipMessageEncoding innerMessageEncoding="textMessageEncoding"/>
              <httpTransport manualAddressing="false" authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" proxyAuthenticationScheme="Anonymous" realm="" useDefaultWebProxy="true"/>
            </binding>
          </customBinding>
        </bindings>
      </system.serviceModel>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

    这种方式必须使用".NETFramework,Version=v4.0么?高人指点1。

    2015年12月16日 3:17

答案

  • 这取决于 gzipMessageEncoding 这个extension依赖于哪个版本的.Net Framework. 这个gzipMessageEncoding 是Microsoft Sample,所以理论上你应该有它的代码,然后你也可以修改在.Net 3.5下。但是如果他使用了4.0的API 则我们的WCF需要依赖他也就意味着需要支持.Net 4.0 了

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。


    2015年12月16日 3:36

全部回复

  • 这取决于 gzipMessageEncoding 这个extension依赖于哪个版本的.Net Framework. 这个gzipMessageEncoding 是Microsoft Sample,所以理论上你应该有它的代码,然后你也可以修改在.Net 3.5下。但是如果他使用了4.0的API 则我们的WCF需要依赖他也就意味着需要支持.Net 4.0 了

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。


    2015年12月16日 3:36
  • 搞定了,framwork3.5也支持压缩,不过效率暂时看不出来,因为也没有太大数据量的传输,ms gzipMessageEncoding 这个extension使用3.5编译后可以用,调用也成功了,哎主要是原来用的netTcpBinding要支持压缩,需要改为customBinding项目已经用了,不好改这个了,客户端比较多了。有用过压缩效率提高很多的么?还有就是如果用android调用wcf是不是就不能用这种方式了,希望大神们给个思路。
    2015年12月17日 2:17