none
Consultar el mismo método de un webservice ASMX de manera simultanea RRS feed

  • Pregunta

  • Buenos días Compañeros

    En esta ocasión quisiera que me ayuden a encontrar una forma de consultar el mismo método de un web service de manera simultanea es decir tengo dos maquinas que en una circunstancia de 1 a 5 llaman al mismo metodo del web service, noto que cuando lo hace un solo pc lo hace ne menor tiempo que cuando lo intentan los dos al tiempo que ideas pueden aportar agradezco mucho

    miércoles, 22 de octubre de 2014 14:59

Todas las respuestas

  • Hola,

    si quieres realizar múltiples llamadas al mismo servicio puedes emplear hilos (threads) y en cada hilo realizar la llamada.

    Saludos.


    If a post answers your question, please click Mark As Answer on that post and Vote as Helpful

    miércoles, 22 de octubre de 2014 15:03
  • te refieres al cliente el problema no esta ne el cliente de hecho puedo hacer varias llamadas usando hilos el problema es que consultar el mismo método del web service el servidor demora mas en responder

    miércoles, 22 de octubre de 2014 15:10
  • La única razón por la que el servidor debería demorarse más si llamas dos veces al método que si llamas una es porque el método esté usando algún recurso escaso en el servidor. Por ejemplo, si el método hace un uso intensivo de la CPU porque requiera algún cálculo muy costoso, y lo hace en un solo hilo, y el servidor tiene una única CPU, entonces al llamar dos veces al método se tardará el doble. O si el método hace llamadas a un servidor de base de datos, y el servidor de base de datos está saturado y no es capaz de atender más llamadas simultáneas (o no puede por razones de bloqueos), pues ocurrirá lo mismo. Y similarmente, si esas llamadas viajan por una red de baja velocidad que ya está al máximo de tráfico, tendremos el mismo problema. O si el método usa alguna variable estática o compartida y pone alrededor un bloqueo de manera que se serialicen los hilos sobre el mismo. O si el método carga en memoria una cantidad muy elevada de información, de tal manera que al llamarlo dos veces se excede la memoria disponible y el servidor se pone a hacer swapping con la memoria virtual.

    Todo esto son simples ejemplos, no afirmo que te esté pasando nada de eso. Simplemente se trata de casos en los que existe algún recurso escaso, y al llamar dos veces al método se agota el recurso en cuestión, con la cansecuencia de que dos invocaciones simultáneas tardan más que una. No tiene fácil remedio; hay que analizar cuidadosamente el comportamiento del servidor hasta detectar cuál es el cuello de botella (Performance Monitor puede ser de utilidad en una primera fase), y después optimizar el método para que minimice el consumo de dicho recurso.

    miércoles, 22 de octubre de 2014 15:25
  • hola

    es un tema del web service o es un tema del codigo que el servicio implementa?

    digo si el servicio accede a una db podria estar bloqueando la tabla por lo tanto el segunda invocacion debera esperar hasta que la primera termine

    podrias crear una implementacion simple del servicio, quizas comentar el codigo que tiene ahora y solo poner un

    Thread.Sleep(5000);

    o algo asi

    entonces si invocas el servicio desde las dos maquinas ambas deberian responder en el mismo tiempo

    con esto validas que el asmx no es el problema, sino el codigo que pones dentro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 22 de octubre de 2014 15:28