none
Servicio Web con binding wsHttpBinding es muy lento la primera vez que inicia RRS feed

  • Pregunta

  • Saludos comunidad tengo el siguiente problema:

    Tengo un ejemplo de suma de 2 numeros pero de un servicio web con el binding wsHttpBinding y tarda 10 segundos en devolver el resultado, porque tarda demasiado si solo es una suma de 2 numeros simple.

    Realice el mismo problema pero con el binding basicHttpBinding y tarda 0.5 segundos.

    Todo esto en la primera vez de ejecucion en la segunda vez ya es 0.7 a 0.8 segundos ambos bindings.

    Tiempo de binding basicHttpBinding (Primera vez)

    https://social.msdn.microsoft.com/Forums/getfile/620639

    Tiempo de binding wsHttpBinding (Primera vez)

    https://social.msdn.microsoft.com/Forums/getfile/620640

    Metodo de Suma en el Servicio Web

            public int Suma2Numeros(int a, int b)
            {
                int suma = a + b;
    
                return suma;
            }

    Web Config del Servicio Web

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    
      <appSettings>
        <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
      </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5"/>
       
      </system.web>
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <!-- Para evitar revelar información de los metadatos, establezca los valores siguientes en false antes de la implementación -->
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
              <!-- Para recibir detalles de las excepciones en los fallos, con el fin de poder realizar la depuración, establezca el valor siguiente en true. Para no revelar información sobre las excepciones, establézcalo en false antes de la implementación -->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <protocolMapping>      
            <add binding="wsHttpBinding" scheme="http" />
        </protocolMapping>    
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        <!--
            Para examinar el directorio raíz de la aplicación web durante la depuración, establezca el valor siguiente en true.
            Establézcalo en false antes de la implementación para evitar revelar información sobre la carpeta de aplicación web.
          -->
        <directoryBrowse enabled="true"/>
      </system.webServer>
    
    </configuration>

    Tengo entendido que el binding basicHttpBinding los datos son transportados en texto plano y el binding wsHttpBinding los datos son transportados de una forma encriptada, pero se tarda demasiado en encriptar y ese tiempo no es valido para los clientes.

    Como puedo agilizar el tiempo de respuesta con binding wsHttpBinding la primera vez?

    Gracias por su tiempo.




    • Editado RealMaster martes, 10 de marzo de 2015 4:33
    martes, 10 de marzo de 2015 4:16

Respuestas

  • A qué te refieres con la primera vez?? Cuando arrancas el servicio y se realiza la primera consulta?? No te preocupes porque tarde mas esa primera vez. IIS tiene que cachear los componentes .NET de tu servicio, que en el caso de wsHttpBinding son más pesados...

    Deberías comparar los tiempos una vez estén los dos endpoints levantados y ya cacheados


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    martes, 24 de marzo de 2015 13:30
    Moderador