Pregunta

Escenario:. Un servicio WCF recibe un XDocument de los clientes, lo procesa y lo inserta una fila en una tabla de MS SQL

Varios clientes podrían estar llamándolo el servicio WCF de forma simultánea. La llamada normalmente no toma mucho tiempo (unos pocos segundos).

Ahora necesito algo para sondear la tabla de SQL y ejecutar otra serie de procesos de una manera asíncrona. El segundo proceso no tiene que devolver la llamada nada ni se relaciona con el WCF de ninguna manera. Sólo tiene que leer la tabla y realizar una serie de métodos y tal vez una llamada de servicio Web (si existen registros, por supuesto), pero eso es todo. Los clientes del servicio WCF que consumen dicho servicio no tienen ni idea de esto y no se preocupan por él.

He leído sobre esta pregunta en StackOverflow y también sé que un servicio de Windows sería lo ideal, pero este servicio WCF será alojado en un alojamiento compartido (discountasp o similar) y por lo tanto, la instalación de un servicio de Windows no va a ser una opción (como se hasta donde sé).

Dado que la arquitectura es fijo (IE: No puedo cambiar la mesa, se trata de un formato heredado, ni cambiar el mecanismo del Servicio WCF)?, ¿Cuál sería su sugerencia para sondear / proceso de esta tabla

Yo diría que lo necesito para comprobar cada 10 minutos más o menos. No tiene por qué ser instantánea.

Gracias.

¿Fue útil?

Solución

trucos. Exponer a este proceso como un servicio WCF y disparar un comando go de una caja bajo su control a una hora programada.

Mientras que puede encender las discusiones de fondo en WCF, o utilizar caducidad de la caché como programador de un hombre pobre aquellos detendrá cuando el grupo de aplicaciones se recicla hasta el siguiente golpe en su sitio web y el grupo de aplicación empiece a girar de nuevo. Al menos disparar la solicitud de una máquina en la que los medios de control se conoce el grupo de aplicación volverá a subir cada 10 minutos más o menos, ya que ha enviado una solicitud en su dirección.

Otros consejos

Una aplicación web no se adapta en absoluto a estar ejecutando algo en un intervalo fijo. Si no hay peticiones que llegan, no hay código que se ejecuta en la aplicación, y si la aplicación está inactiva durante un tiempo el IIS puede decidir que apagarlo por completo hasta la próxima petición llega.

Para algunas aplicaciones, no es en absoluto algo importante que se ejecuta en un intervalo específico, sólo que se ha ejecutado recientemente. Si ese es el caso para su aplicación, entonces usted podría llevar un registro de la tabla cuando se votó el pasado, y por cada cheque solicitud si ha pasado suficiente tiempo para que la mesa sea sondeado de nuevo.

Si tiene acceso para administrar la base de datos, no es un programador de SQL Server. Se puede ejecutar consultas, procedimientos almacenados, e incluso iniciar procesos de si tiene permiso (que es muy poco probable en un alojamiento compartido, sin embargo).

Si es preciso el código en un intervalo de tiempo específico, y no se puede acceder al servidor para programar o ejecutar como un servicio, o no se puede utilizar el programador de SQL Server, simplemente no es factible.

Haga su grupo de aplicaciones "siempre activa" y hacer lo que quiera con sus hilos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top