Pero justamente ese es el problema, no se como hacer que el web service se 
comporte de forma asincrónica.
Saludos

"Pablo A. Allois" <[EMAIL PROTECTED]> escribió:     Probalo, personalmente 
opino que el IIS tiene que  responderte bien.
  
 Hacete una aplicacion que tire 400 requests al webservice  funcionando en 
forma asincrona.
 En el performance counter medile:
     Al server
         -  Memoria
         - Cpu  
         - Paging File
     Al proceso w3wp.exe
          -  Memoria
         - Cpu  
         -  Threads
      
     Objeto  ASP.NET
         -  Requests current
         - Requests queued - asegurate que este contador  se mantenga en cero
  
 Hay mucho mas para moniteorear el server, pero este es un  buen principio.
  
 Y podes tener otros cuellos de botella, como el SQL Server  y proceso que se 
encarga de parsear el mensaje.
  
  
 Saludos!
  

  
  

  
---------------------------------
 De: [email protected]  [mailto:[EMAIL PROTECTED] En nombre de Marcelo P
Enviado el:  Miércoles, 05 de Diciembre de 2007 12:19 p.m.
Para:  [email protected]
Asunto: [puntonet] Web service asincronico  ?


 
Buenas
Repondo sobre esta respuesta , ya que es la que termino de  entender mejor
La idea es mi ws atiende un pedido, ese pedido a su vez llama  a un proceso que 
se encarga de parsera el mensaje , ponerlo en un cola y empezar  a buscar la 
respuesta , que puede demorar a lo sumo 3 segundo, por último  insertar un 
registro en un BD y luego parsear la respuesta para que sea enviada  al que 
requirio.
Todo esto no tarda mas de 5 a 7 segundos en la actualidad ,  pero ahora voy a 
tener muchos requirimientos en determinados horarios ( no se si  mas de 100 
concurrentes pero por ahí ).
El tema es que la gente que lo va a  consumir no pude seguir con su operación 
hasta la respuesta de mi WS, asi que  por eso no lo harían asincronico.
Al final yo lo que quiero es que no se  cuelge el IIS, pero por lo que dicen el 
que debería relover el tema de hilos es  el IIS y el ws se comportaría como uno 
WS simple y sincrónico.
Desde yá,  muchas gracias a todos.
Saludos

"Pablo A. Allois"  <[EMAIL PROTECTED]> escribió:       Hola Marcelo,
    
          Tenes un estimado de cuanto va a demorar    en promedio la ejecucion 
de cada request ?
    
          El IIS puede soportar 100 pedidos    concurrentes, si no fuera asi, 
yo estaria escribiendo en una lista de Apache y    www.microsoft.com estaria 
sobre    tomcat.
    
          Pero te recomendaria que te asesores    sobre el tunning del IIS, 
puede ser un poco mas complejo que aumentar los    hilos en un .config ... 
tambien deberias hacerle un monitoreo para asegurarte    que no encole requests.
       
          En cuanto a asincrono o no ... me parece    que lo mas simple es el 
webservice sincronico y que los clientes lo ejecuten    como mas les guste. 
Para hacer un webservice que ejecute en forma asincrona,    deberias tener 
alguna razon que te lo justifique ... y mejor razon que 100    requests 
concurrentes.
    
          
   Saludos!
          

      
---------------------------------
   De: [email protected]    [mailto:[EMAIL PROTECTED] En nombre de Marcelo P
Enviado    el: Martes, 04 de Diciembre de 2007 04:49 p.m.
Para:    [email protected]
Asunto: [puntonet] Web service asincronico    ?


   
Bueno,ante todo gracias por las respuestas.
Les comento un poco    mas
Las respuestas que debe dar el WS no pueden demorar mas de 5 o 7    segundo.
El tema de querer asincronismo en esto es que, a mi me pueden    llegar 100 
pedidos concurrentes y no creo que el IIS corriendo asp.net pueda    trabajar 
con tantos hilos a la vez asi como si nada, por eso es que yo quiro    un 
asincronismo, ya que pienso que eso es la solución, per la verdad no lo    se.
Como les dije antes, la duda mia con el asincronismo, es que si yo    llamo a 
un proceso A de un web service, que ejecute algoi asincronicamente,    cuanlo 
lo llame, me va a devolver el control al flujo del WS, por ende va a    
terminar y se va a ir de nuevo al cliente, sin que todavía este la respuesta,   
 por ende nunca se que hay una respuesta.
Espero haber sido claro, sino    avisen y lo trato de expolicar mejor.
Saludos a todos

Carlos    Peix <[EMAIL PROTECTED]> escribió:              @font-face {  
font-family: Wingdings; } @font-face {  font-family: Cambria Math; } @font-face 
{  font-family: Calibri; } @font-face {  font-family: Tahoma; } @page Section1 
{size: 612.0pt 792.0pt; margin: 72.0pt 72.0pt 72.0pt 72.0pt; } P.MsoNormal {  
FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman","serif" } 
LI.MsoNormal {  FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New 
Roman","serif" } DIV.MsoNormal {  FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; 
FONT-FAMILY: "Times New Roman","serif" } A:link {  COLOR: blue; 
TEXT-DECORATION: underline; mso-style-priority: 99 } SPAN.MsoHyperlink {  
COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99 } A:visited {  
COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99 } 
SPAN.MsoHyperlinkFollowed {  COLOR: purple; TEXT-DECORATION: underline; 
mso-style-priority: 99 } SPAN.gmailquote {  mso-style-name: gmail_quote } 
SPAN.e { 
 mso-style-name: e } SPAN.EmailStyle19 {  COLOR: #1f497d; FONT-FAMILY: 
"Calibri","sans-serif"; mso-style-type: personal-reply } .MsoChpDefault {  
mso-style-type: export-only } DIV.Section1 {  page: Section1 }                 
Hola      Diego,
      
     La diferencia entre un WS que quede procesando y el      cliente maneje el 
pedido asincronico y lo que propone Oscar es      "Escalabilidad". IIS y 
ASP.NET estan preparados para atender muchas      peticiones pero con la 
condicion de que sean de ejecucion breve, muy breve.      ASP.NET muere 
tempranamente si te demoras en responder la solicitud, incluso      es 
sorprendente que con unos pocos clientes puedas tirarlo por el piso. Esto      
no es un error de diseño en ASP.NET, mas bien es porque los diseñadores      
asumen algunos puntos de partida, uno de ellos es que el request debe ser      
resuelto lo mas rapido posible.
      
     El tema que plantea Marcelo tiene dos salidas, si      el tiene requests 
que impliquen no tiene mas de 10 o 15 requests      concurrentes (por ejemplo, 
si el request tarda 1 segundo y tiene 100      clientes que se comunican cada 
10 segundos, tiene un promedio de 10 clientes      concurrentes), entonces 
puede intentar ver si funciona con la solucion      simple (sincronico o 
blocking del lado del server y asincronico del lado del      cliente). Si, en 
cambio, necesita mas capacidad, probablemente necesite algo      como lo que 
propone Oscar.
      
     La solucion que vos mencionas se acerca a la que      propuso nuestro 
amigo rapado (Oscar) pero adolece de algunos riesgos para mi      gusto: no me 
gusta mucho hostear worker threads en el proceso de ASP.NET, la      
escalabilidad es limitada tambien (no por el limite de threads de ASP.NET      
sino por la capacidad de proceso del server). Siembre es bueno que un web      
server tenga mucho procesador disponible.
      
     La solucion basada en MQ para el request y uno o      mas procesadores en 
paralelo es buena. Queda resolver la vuelta de la      respuesta. Algunos 
utilizar MQ tambien para la vuelta pero a mi no me gusta,      prefiero volver 
por una base de datos SQLServer para tomar el mensaje por ID      en lugar de 
escanear toda la cola de vuelta para buscar el mensaje (hasta      donde se, MQ 
no tiene una operacion eficiente para tomar un mensaje por ID).      Igual, 
esto seria importante solo en casos de muy alto      caudal.
      
     Abrazo
      
     Carlos      Peix
     

                   
---------------------------------
       From: [email protected]        [mailto:[EMAIL PROTECTED] On Behalf Of 
Diego        Jancic
Sent: Lunes, 03 de Diciembre de 2007 08:16        p.m.
To: [email protected]
Subject: [puntonet] Web        service asincronico ?


       
              Hola        Oscar,
       Pero        entre enseñarle al programador a manejar ese WS con todos 
esos métodos y        enseñarle a hacer la llamada asincrónica (si es que no la 
sabe), no es mas        fácil la 2da?
       Yo        justo ahora estoy haciendo algo como lo que decis, envio 
pedidos (via        MSMQ) y hay N threads (prefijados por configuración) que 
procesan todas        las tareas… pero eso es por motivos muy particulares y 
(si esta todo        dentro de IIS) la carga no cambia en nada… Si usas un WS, 
o una pagina web        IIS ya te da la funcionalidad de tener multiples 
threads, una cola de        mensajes en espera, etc…
       
       No        es que quiera parecer muy negativo, pero me no lo veo eh.. J
       
       Salu2!
       
       
              From:        [email protected] [mailto:[EMAIL PROTECTED] On 
Behalf Of Oscar        Zárate
Sent: Lunes, 03 de Diciembre de 2007 07:28        p.m.
To: [email protected]
Subject: [puntonet] Web        service asincronico ?

       
              Agrego algo mas. 

              El metodo IniciarTarea podría estar escribiendo los        
parametros de la consulta en una Queue y del otro lado de la Queue podría       
 haber N servidores leyendo la Queue y tomando el requerimiento de la        
consulta (haciendo la consulta y escribiendo en la table de resultados).        

              

              Me gusta la idea ... me parece que me fui de mambo,        pero 
me gusta.

              

              SaludOZ,

              

              PS: No creo ser muy original con esto, ya debe estar        
implementado mil veces y seguro seguro seguro ... hay un patron con nombre      
  para resolver esto.

 

              On 12/4/07, Oscar        Zárate <[EMAIL PROTECTED]>        wrote: 
              Yo creo que la idea sería escribir algo que responda        
"inmediatamente" o responda ... "preguntame luego con este        ticket.

              

              No se cual es el negocio, pero me imagino algo que        tenga 
mucho tiempo de procesamiento ... entonces el web service tiene un        
metodo iniciar tarea (no el proxy, el web service) este metodo        
inmediatamente retorna un ticket y dispara un proceso y        cuando finaliza 
el proceso guarda el resultado completo en una tabla        con ID igual al 
numero de ticket. Luego, otro metodo que recibe el ticket        y devuelve 
"resultado" o "preguntame luego". Este segundo metodo, busca en        la tabla 
si existe algun resultado para ese ticket, si existe retorna el        
resultado, sino retorna "preguntame luego". 

              Incluso la respuesta del proceso deberia ser        formateada 
para que el metodo que devuelve sea lo mas rapido posible (solo        lee y 
retorna, no pierde tiempo en ningun  formateo).

              

              De este modo, haces un "servicio" (sea web o no) que        es 
"asincronico". Incluso en el caso de una consulta MUY RAPIDA, la        
consulta completa consta igual de una llamada a dos        metodos.

              

              Espero haber sido claro, creo que de ese modo        solucionas 
el problema.
 

              SaludOZ,
 

                     On 12/4/07, Diego        Jancic <[EMAIL PROTECTED]> wrote: 
       Hola,
Lo que no vas a        poder hacer es que sea asincrónico desde el punto de 
vista
del cliente.        El cliente (desarrollado por cualquier otra persona) se 
conecta,        recibe una respuesta y ya esta, no podes hacer nada mas.
Lo que podrías        hacer es trabajar dentro del web service para que no 
funcione
dentro de        un thread de IIS, y asi sobrecargas menos al IIS.

Cuando decis "o        que se comporte de alguna manera de atender muchas 
peticiones", no se        bien a que te referis. Los WS están preparados para
recibir muchas        peticiones, y si al usuario final le molesta que tarde    
    tanto
(imaginemos que realiza un proceso largo, pero no se está sobre        cargando 
el 
servidor del WS), es trabajo del que arma el cliente hacer        que le 
aparezca
un hermoso "loading..."

Posiblemente la solución        sea escribir un help para enseñarle a los otros
desarrolladores a hacer        las cosas asincrónicas :) 

Saludos!


-----Original        Message-----
From: [email protected] [mailto: [EMAIL PROTECTED]        On Behalf Of 
Leonardo
Micheloni 
Sent: Lunes, 03 de Diciembre de        2007 05:55 p.m.
To: [email protected]
Subject: [puntonet] Web service        asincronico ?

Entonces no te puedo ayudar, no tengo idea

On        Dec 3, 2007 3:15 PM, Marcelo P <        [EMAIL PROTECTED]> wrote:
> Gracias por la        respuesta
> El tema es que yo tengo que desarrollar un web service        para que sea 
> consumido por cualquiera, yo no programo ni armo el        proxy. Lo que 
> tengo 
que
> hacer es que el web service sea        asyncronico o que se comporte de alguna
> manera de atender muchas        peticiones.
> Saludos 
>



       


       



__________ Información        de NOD32, revisión 2699 (20071203) __________

Este mensaje ha sido        analizado con NOD32 antivirus system
http://www.nod32.com

   
   
---------------------------------
   
Compartí video en la ventana de tus mensajes y    también tus fotos de Flickr.
Usá el Nuevo Yahoo! Messenger versión Beta.    
Visitá http://ar.beta.messenger.yahoo.com/
  

---------------------------------
 
Tarjeta de crédito Yahoo! de Banco Supervielle.  Solicitá tu nueva Tarjeta de 
crédito. De tu PC directo a tu casa. 
Visitá  www.tuprimeratarjeta.com.ar

       
---------------------------------

Tarjeta de crédito Yahoo! de Banco Supervielle.Solicitá tu nueva Tarjeta de 
crédito. De tu PC directo a tu casa. 
 Visitá www.tuprimeratarjeta.com.ar

Responder a