相关疑难解决方法(0)

WCF:单个服务的多个绑定配置

我正在开发一个必须支持向后兼容性的客户端 - 服务器应用程序(.NET 4 WPF,WCF).换句话说,就操作合同和数据合同而言,旧客户端应与新服务器兼容(反之亦然).

我们的WCF服务托管在IIS中,他们设置为使用basicHttpBinding的:

<basicHttpBinding>
   <binding name="basicHttpBinding_Configuration" maxBufferSize="2147483647"
      maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
         maxArrayLength="2147483647" />
      <security mode="None" />
   </binding>
</basicHttpBinding>

...

<service behaviorConfiguration="SampleGateway.Data.DataAccessBehavior"
   name="SampleGateway.Data.DataAccess">
   <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_Configuration"
      contract="Sample.Data.IDataAccess" />
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      <host>
      <baseAddresses>
         <add baseAddress="http://localhost:8731/Design_Time_Addresses/SampleGateway/SampleGateway.Data.DataAccess.svc" />
      </baseAddresses>
   </host>
</service>

...

<behavior name="SampleGateway.Data.DataAccessBehavior">
   <serviceMetadata httpGetEnabled="true" />
   <serviceDebug includeExceptionDetailInFaults="false" />
   <dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
Run Code Online (Sandbox Code Playgroud)

假设合同非常基本,看起来像这样:

[ServiceContract]
public interface IDataAccess
{
   [OperationContract]
   List<Data> GetData(List<int> ids, DateTime startDateTime, DateTime endDateTime);
}
Run Code Online (Sandbox Code Playgroud)

最近,我发现我们可以将编码从更改XMLbinary.结合IIS压缩,这确实提高了我们的WCF方法的性能,例如上面列出的GetData.

此编码更改还需要更改客户端和服务器WCF绑定,从a切换 …

.net wcf wcf-binding

13
推荐指数
1
解决办法
3万
查看次数

标签 统计

.net ×1

wcf ×1

wcf-binding ×1