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: puntonet@mug.org.ar  [mailto:[EMAIL PROTECTED] En nombre de Marcelo P
Enviado el:  Martes, 04 de Diciembre de 2007 04:49 p.m.
Para:  puntonet@mug.org.ar
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: puntonet@mug.org.ar      [mailto:[EMAIL PROTECTED] On Behalf Of 
Diego      Jancic
Sent: Lunes, 03 de Diciembre de 2007 08:16      p.m.
To: puntonet@mug.org.ar
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:      puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] On Behalf Of 
Oscar      Zárate
Sent: Lunes, 03 de Diciembre de 2007 07:28      p.m.
To: puntonet@mug.org.ar
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: puntonet@mug.org.ar      [mailto:      [EMAIL PROTECTED] On Behalf Of 
Leonardo
Micheloni 
Sent: Lunes,      03 de Diciembre de 2007 05:55 p.m.
To: puntonet@mug.org.ar
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

Responder a