开发者

How can i implement CustumBinding configuration for this nettcpbinding configuration

I have a nettcpbinding wcf service.It called 100000+ times in one second so there are more issue about performance. I must optimize this.

My first issue is: A newly accepted connection did not receive initialization data from the sender within the configured ChannelInitializationTimeout (00:00:05). As a result, the connection will be aborted. If you are on a highly congested network, or your sending machine is heavily loaded, consider increasing this value or load-balancing your server.

I should set ChannelInitializationTimeout using CustomBinding. I read some sample but not implemented configuration.

How can implement below configuration to custombinding configuration?

<?xml version="1.0"?>
<configuration>
   <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="false">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
          <add name="ServiceModelTraceListener">
            <filter type="" />
          </add>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="E:\Services\Ozy3\logs\EventParserService.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
        <filter type="" />
      </add>
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

  <system.web>
     <compilation debug="true" />
  </system.web>

    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>

    <system.serviceModel>
    <services>
      <service name="Ozy3.Services.EventParserService" behaviorConfiguration="Ozy3.Services.EventParserServiceBehavior">
        <h开发者_高级运维ost>
          <baseAddresses>
            <add baseAddress="http://localhost:3274/EventParserService" />
          </baseAddresses>
        </host>
        <endpoint address="net.tcp://localhost:3273/EventParserService" binding="netTcpBinding" bindingConfiguration="tcp_Unsecured" contract="Ozy3.Domain.Contracts.Service.IEventParserService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
   <bindings>
      <netTcpBinding>
        <binding name="tcp_Unsecured" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="2147483647" maxReceivedMessageSize="2147483647" portSharingEnabled="false" transactionFlow="false" listenBacklog="2147483647" 
        closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00">
          <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None"></security>
        </binding>
      </netTcpBinding>
    </bindings>

    <behaviors>
      <serviceBehaviors>
        <behavior name="Ozy3.Services.EventParserServiceBehavior">
             <dataContractSerializer maxItemsInObjectGraph="2147483647" />
              <serviceThrottling maxConcurrentCalls="32" maxConcurrentSessions="200" maxConcurrentInstances="232" />  
              <serviceMetadata httpGetEnabled="True" />
              <serviceDebug includeExceptionDetailInFaults="True" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>


I resolved this problem using customTcpBinding and Protocol Buffer for .Net but I understand to need high capacity network for using nettcpbinding fastly and efficient (10GBit Ethernet and Cat6 cable)

<system.serviceModel>
        <services>
            <service behaviorConfiguration="EventDecoderService.ServiceBehavior"
                name="WcfService1.EventDecoderService">
                <host>
                    <baseAddresses>
                        <add baseAddress="http://192.168.1.67:9001" />
                    </baseAddresses>
                </host>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
                <endpoint address="net.tcp://192.168.1.67:9000" behaviorConfiguration="EventDecoderService.EndpointBehavior"
                    binding="customBinding" bindingConfiguration="customBind"
                    name="EventDecoderService.Endpoint" contract="WcfService1.IEventDecoderService" />
            </service>
        </services>
        <bindings>
            <customBinding>
                <binding name="customBind"
         closeTimeout="00:10:00"
         openTimeout="00:10:00"
         receiveTimeout="00:10:00"
         sendTimeout="00:10:00">
                    <binaryMessageEncoding>
                        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                     maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    </binaryMessageEncoding>
                    <tcpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" hostNameComparisonMode="StrongWildcard"
                                                maxBufferSize="2147483647" maxPendingConnections="100"  channelInitializationTimeout="00:10:00"
                                                transferMode="Buffered" listenBacklog="1000" portSharingEnabled="false" teredoEnabled="false" >
                        <!--<connectionPoolSettings maxOutboundConnectionsPerEndpoint ="1000" />-->
                    </tcpTransport>

                </binding>
            </customBinding>
            <netTcpBinding>
                <binding name="tcp_Unsecured" maxBufferPoolSize="2147483647"
             closeTimeout="10:00:00" receiveTimeout="10:00:00" sendTimeout="10:00:00" openTimeout="10:00:00"
                    maxBufferSize="2147483647" maxConnections="10000" maxReceivedMessageSize="2147483647">
                    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    <security mode="None">
                        <transport clientCredentialType="None" protectionLevel="None" />
                        <message clientCredentialType="None" />
                    </security>
                </binding>
            </netTcpBinding>
        </bindings>
        <behaviors>
            <endpointBehaviors>
                <behavior name="EventDecoderService.EndpointBehavior">
                    <ProtoBufSerialization />
                    <dataContractSerializer maxItemsInObjectGraph="2147483647" />
                </behavior>
            </endpointBehaviors>
            <serviceBehaviors>
                <behavior name="EventDecoderService.ServiceBehavior">
                    <serviceMetadata httpGetEnabled="True" />
                    <serviceDebug includeExceptionDetailInFaults="true" />
                    <dataContractSerializer maxItemsInObjectGraph="2147483647" />
                    <serviceTimeouts transactionTimeout="00:10:10"/>
                    <serviceThrottling
                        maxConcurrentCalls="96"
                        maxConcurrentSessions="600"
                        maxConcurrentInstances="696"
                     />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <extensions>
            <behaviorExtensions>
                <add name="ProtoBufSerialization"
                         type="ProtoBuf.ServiceModel.ProtoBehaviorExtension, protobuf-net, Version=2.0.0.480, Culture=neutral, PublicKeyToken=257b51d87d2e4d67"/>
            </behaviorExtensions>
        </extensions>
    </system.serviceModel>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜