Ahhhhhhhhhhhh, es como dice Carlos, entendi cualquiera.

Para hacerlo seriamente lo haria con cola de mensajes, una agente que
recorra la cola y resuelva, despues ese agente pude dejar algo una bd  ocomo
quieran para ques entere el servicio, pero eso ya es anecdotico.

Daniel Calvin

El día 6/12/07, Marcelo P <[EMAIL PROTECTED]> escribió:
>
> Bueno muchacos, no se como agradecer tanta procupación en el tema!!
> Voy a tratar de explicar el negocio a ver si así queda mas claro
> Hay negocios que deben validar ciertos datos de los clientes antes de
> poder realizar una operación, para eso su sistema en algún momento consume
> un WS mio, esto quiere decir que en el mismo momento tengo a n personas
> conectadas simultaneamente para pedir digamos "autorización".
> El tema es que esto está resuelto en la actualidad yo poniendo un módulo
> mío en cada cliente, que llama asincronicamente al ws ( por ende ya se como
> consumir asincronicamente un ws desde el cliente), el WS deja al pedido en
> el filesystem y vuelve al cliente con un número, y luego vuelve varias veces
> a preguntar si está el resultado, hasta que se lo lleva.
> El tema que eso lo resuelvo con mi módulo.
> Ahora surgió la situación que hay clientes que no quieren módulos de
> terceros en sus sistemas por ende, ellos quieren consumir directamente mi
> WS, por ende , mandan un mensaje y esperan la respuesta, pero como pueden
> ser muchos, no se si no se va a colgar el IIS, abriendo un thread por cada
> pedido, ya que va a empezar a encolar y por ende todo puede morir por TO.
> Es por eso que pensé que la solucion podía ser asincronismo, pero en el WS
> no en el cliente.
> La verdad no se como se resuelve esto en otros lados.
> Espero que con esto quede mas claro.
> Saludos a todos
>
>
> *Oscar Zárate <[EMAIL PROTECTED]>* escribió:
>
> Marcelo ... estoy un poco perdido. Voy a citar tus mails anteriores:
>
> 1.- Subject del mensaje: Web service asincronico
> 2.- De este ultimo mail: no se como hacer que el web service se comporte
> de forma asincrónica
> 3.- De un mail anterior: 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.
>
> Que es lo que queres hacer? No estaras usando en forma erronea la palabra
> "asincronico"? Podes explicar un poco mejor el negocio (aunque sea cambiando
> los objetos reales por algo que se le parezca asi no tenes que revelar
> ningun secreto)?
>
> Yo me perdi.
>
> SaludOZ,
>
>
> On 12/6/07, Marcelo P <[EMAIL PROTECTED]> wrote:
> >
> > 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 <http://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ó:
> >
> > 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 <http://asp.net/> estan preparados para atender muchas
> > peticiones pero con la condicion de que sean de ejecucion breve, muy breve.
> > ASP.NET <http://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<http://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 <http://asp.net/>,
> > la escalabilidad es limitada tambien (no por el limite de threads de
> > ASP.NET <http://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
> >
>
>
> ------------------------------
>
> 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
>
>


-- 
Daniel A. Calvin
Cooperator Team Member
http://www.cooperator.com.ar
Microsoft Certified Professional

Responder a