Repito que sería bueno que simules la situación, creo que IIS
correctamente configurado tiene que funcionar ante este escenario.

On Dec 6, 2007 10:45 AM, Marcelo P <[EMAIL PROTECTED]> wrote:
> 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
> >         - 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
> 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
> >
> >
>
>
>
>
> ________________________________
>
> 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
>
>



-- 
Leonardo Micheloni.

http://leomicheloni.blogspot.com/

Responder a