none
Asp.net webservices RRS feed

  • Pregunta

  • Hola buenas tardes, saludo cordial a todos

    Tengo una inquietud, nosotros trabajamos en asp.net con webforms(aspx) queremos utilizar webservices . Dentro de estos web services se van a realizarse todas las consultas y querys hacia una base de datos sql server, la pregunta es : si quisieramos tener una aplicación en donde el cliente por ejemplo realice una factura y el sistema no se quede esperando hasta que termine si no que continue el proceso,sabemos que esto lo logramos con procesos asíncronos, pero quisiéramos saber en donde se deberían colocar estos web services??? en la mismo servidor donde esta la aplicación web(aspx)?, un servidor aparte para servicios web(asmx)? en el servidor de bases de datos para que realice los querys más rápido y la respuesta sea más veloz??

    En este momento nuestro esquema es: un servidor para bases de datos, un servidor para aplicación y dentro de la aplicación crear unos web services que van a ser invocados por la misma aplicación,esto es correcto , esta bien? tenemos la duda principalmente por que no sabemos si colocar un servidor exclusivamente para web services y que desde la aplicación invoque esos web services , procese y luego retorne los datos a la aplicación...

    De antemano muchas gracias.


    miércoles, 19 de agosto de 2015 20:38

Respuestas

  • hola

    >>si a un web service que se trabaje de manera asincronica se le aumenta en el web config el timeout a una hora

    no lo aconsejo

    para esto se inventaron las colas y los servicio de windows, sino quieres usar colas podrias definir la tarea con un registro en una tabla de la db

    el servicio de windows cada cierto tiempo lo tomara de alli y procesara, tardando lo que tenga que tardar

    >>entonces pensamos en web services asincronos pero no sabemos si es la mejor opción?

    lanzar la accion de forma asincrona es correcto, pero el procesamiento si va a demorar no es bueno que lo realice este

    deberia ser algo separado, que registre la accion y alguien mas se encargue

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    • Editado Leandro TuttiniMVP jueves, 20 de agosto de 2015 0:26
    • Marcado como respuesta FaHern jueves, 20 de agosto de 2015 17:41
    jueves, 20 de agosto de 2015 0:26

Todas las respuestas

  • hola

    >>pero quisiéramos saber en donde se deberían colocar estos web services?

    los servicio web se ubican de la misma forma, esto no cambia

    lo ubicas en el servidor que designes para las aplicaciones web, la invocacion asincrona no requiere cambios fisicos de infraestructura

    Asynchronous Web Services in ASP.NET 2.0

    lo asincrono tiene relacion con al forma en como invocas los servicio

    >>un servidor aparte para servicios web(asmx)?

    porque un servidor aparte ?

    >>En este momento nuestro esquema es: un servidor para bases de datos, un servidor para aplicación y dentro de la aplicación crear unos web services que van a ser invocados por la misma aplicación,esto es correcto , esta bien?

    si no lo veo mal, pero deberias dimensionar de acuerdo a las necesidades, la db y los servicio web podrian estar en el mismo servidor

    igual como todo, si son unos cuentos usuario sera una cosa si tienes miles de usuario concurrentes sera muy distinto

    es mas para escalar deberias evaluar balanceo de carga en una granja de servidores

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 19 de agosto de 2015 21:18
  • Muchas gracias por la respuesta , la idea de colocar un servidor aparte para los servicios era por que , si los colocamos en un servidor aparte cuando se invoquen esos web services y esten procesando alguna información realizando update,delete ,select ese tiempo de proceso no altere la aplicación web principal, por ejemplo si están realizando un proceso pesado no se lleve la memoria o cpu del servidor de aplicación, perjudicando la aplicación web... 

    Si tenemos en el mismo servidor: web services y aplicación web, ejecutando procedimientos asíncronos  , y en donde un web service por ejemplo se demore más de una hora en terminar un proceso , este proceso me afecta el resto de aplicaciones???

    De antemano muchas gracias..

    miércoles, 19 de agosto de 2015 22:37
  • hola

    >>si los colocamos en un servidor aparte cuando se invoquen esos web services y esten procesando alguna información realizando update,delete ,select ese tiempo de proceso no altere la aplicación web principal

    eso no tiene nada que ver, si el servidor esta bien dimensionado no deberia verse afectado, ahora si como servidor piensan una pc comun con 2 nucleos y 4 Gb de memoria bueno eso es otro tema, ya que eso deja de ser un servidor web

    >>en donde un web service por ejemplo se demore más de una hora en terminar un proceso

    un procso web no puede demorar nunca 1h, antes sales por timeout

    si quieres procesamiento de este tipo tendras que crear procesos separados al web, quizas dejar una mensaje en una cola de Ms Queue y que algun servicio de windows la trabaje

    pero esto que planteas nos e implementa dentro de un entorno web

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 19 de agosto de 2015 22:48
  • Muchas gracias por la respuesta Leandro, si a un web service que se trabaje de manera asincronica se le aumenta en el web config el timeout a una hora ,  y desde la aplicación que se invoca tambien se le asigna el timeout sea de una hora, creo que nos funciona, pero basado en lo que dices , no es buena idea, es que por ejemplo necesitamos que un programa de facturación , cuando le digan imprimir , se ejecute un proceso que actualiza el inventario, ese proceso puede ser bien demorado,entonces pensamos en web services asincronos pero no sabemos si es la mejor opción???

    De antemano muchas gracias..

    miércoles, 19 de agosto de 2015 23:00
  • hola

    >>si a un web service que se trabaje de manera asincronica se le aumenta en el web config el timeout a una hora

    no lo aconsejo

    para esto se inventaron las colas y los servicio de windows, sino quieres usar colas podrias definir la tarea con un registro en una tabla de la db

    el servicio de windows cada cierto tiempo lo tomara de alli y procesara, tardando lo que tenga que tardar

    >>entonces pensamos en web services asincronos pero no sabemos si es la mejor opción?

    lanzar la accion de forma asincrona es correcto, pero el procesamiento si va a demorar no es bueno que lo realice este

    deberia ser algo separado, que registre la accion y alguien mas se encargue

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    • Editado Leandro TuttiniMVP jueves, 20 de agosto de 2015 0:26
    • Marcado como respuesta FaHern jueves, 20 de agosto de 2015 17:41
    jueves, 20 de agosto de 2015 0:26
  • ok, muchas gracias por la información.

    jueves, 20 de agosto de 2015 17:42