none
Soap 1.2 Endpoint Performance. RRS feed

  • Question

  • I have a Client >> WCF Host Service >> SOAP 1.2 Service setup and i'm having performance issues on the SOAP Java  proxy.  I have no control over how the Java service is setup, aside from the endpoint config.

    I have the Client running Asynchronously, and the host WCF service running in Async pattern, but i see the SOAP 1.2 proxy bottlenecking and handling the requests in a Synchronous way.

    Can someone take a look at the auto-generated SOAP 1.2 configuration below, from the SOAP 1.2 Service wsdl?

    Is there a way to configure this for Async way and improve performance? Could be configured for SOAP 1.1? 

    <?xml version="1.0"?>
    <configuration>
    
      <system.web>
        <compilation debug="true"/>
      </system.web>
      <system.serviceModel>
    
        <bindings>
          <customBinding>
            <binding name="WebserviceListenerSoap12Binding" closeTimeout="00:30:00"
              openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00">
              <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                messageVersion="Soap12" writeEncoding="utf-8">
                <readerQuotas maxDepth="32" maxStringContentLength="20000000"
                  maxArrayLength="20000000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              </textMessageEncoding>
              <httpTransport manualAddressing="false" maxBufferPoolSize="20000000"
                maxReceivedMessageSize="20000000" allowCookies="false" authenticationScheme="Anonymous"
                bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard"
                keepAliveEnabled="true" maxBufferSize="20000000" proxyAuthenticationScheme="Anonymous"
                realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false"
                useDefaultWebProxy="true" />
            </binding>
          </customBinding>
        </bindings>
        <client>
          <endpoint address="http://10.18.2.117:8080/java/webservice/WebserviceListener.WebserviceListenerHttpSoap12Endpoint/"
            binding="customBinding" bindingConfiguration="WebserviceListenerSoap12Binding"
            contract="ResolveServiceReference.WebserviceListenerPortType"
            name="WebserviceListenerHttpSoap12Endpoint" />
        </client>
      </system.serviceModel>
    
    
    </configuration>
    

    Saturday, October 20, 2012 6:32 PM

All replies

  • Hi,

    ->I have a Client >> WCF Host Service >> SOAP 1.2 Service setup and i'm having performance issues on the SOAP Java  proxy.

    Do you mean that your create a client to call a WCF service, then call the Java Service from the WCF services by using SOAP 1.2 proxy? We can turn performance by adjusting the settings of binding, but there is not switch to turn on/off  async pattern.

    In this case, how did you determined that the SOAP 1.2 proxy bottlenecking and handling the requests in a Synchronous way? I suspect that the WCF service is actually send message to Java Service Asynchronously. Can you share some code with us for further troubleshooting?

    Thanks.


    Leo Tang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Monday, October 22, 2012 8:21 AM
    Moderator
  • Thanks Leo,

    Please refer to my previous thread for code
    [2 Async WCF Service Problems]

    I applied these changes, and we can infact see the WCF service sending messages Asynchronously to the Java Service using Wireshark.

    Is there anything we can do in the Config above to increase performance? For example changing transferMode to "streamed"

    Could we configure the Custom binding to use WsHttp or NetTcp to allow for asyncronous behavior?

     



    • Edited by Mike Flair Monday, October 22, 2012 3:07 PM
    Monday, October 22, 2012 2:48 PM
  • Would i be better of creating my own Channel here, instead of using the "auto-generated" proxy config?
    Tuesday, October 23, 2012 12:13 AM
  • Hi Mike,

    In this case, it is service behavior issue instead of client issue. Based on your description, you make WCF service sending messages asynchronously to the Java Service, that means you call the Java Service operations asynchronously. However, we need to configure the Java Service on service side to make it support asynchronous Operations. For WsHttp or NetTcp binding, it also depends on the service configuration. There is not much we can do on client side to improve the service's performance.

    Below are articles about calling WCF operation asynchronously and asynchronous WCF operations, for your reference:

    How to: Call WCF Service Operations Asynchronously

    http://msdn.microsoft.com/en-us/library/ms730059.aspx

    Synchronous and Asynchronous Operations

    http://msdn.microsoft.com/en-us/library/ms734701.aspx

    I hope this information helps, thanks.


    Leo Tang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Wednesday, October 24, 2012 10:43 AM
    Moderator
  • Hi Leo,

    I replaced my netTCP bindings with Basic and it seemed to boost performance by 50%. I'm sure that is another issue entirely as too why TCP is so slow on the network.

    As for the Java service calls, for every 1 Aync client .NET call, i have to do 2 Java calls in sequence to get the result, and return to the Client.

    I'm trying to do the Async pattern, but i'm having problems with chaining the call backs. 

    I created a new post below.  Thank you for your response.

    Chaining Async Methods (Link cant be posted here for some reason, can view my profile posts)

    Saturday, October 27, 2012 9:48 PM