2009-09-10 16 views
6

Tengo un servicio WCF que necesita notificar a sus clientes cuando se producen cambios en la base de datos (sql server 2005). Esto es relativamente fácil de realizar, siempre que encuentre una forma de notificar a mi servicio de cualquier cambio. Probablemente pueda crear un disparador de base de datos en una tabla y hacer que ese desencadenador inicie un pequeño cliente de servicio que notifique mi servicio, pero me pregunto si hay una mejor manera de hacerlo. Sería una solución viable hacer que el servicio sondee la base de datos en busca de cambios, pero no estoy seguro de la mejor manera de hacerlo (y preferiría enviar una notificación a mi servicio).Notificar mi servicio WCF cuando se actualice mi base de datos

Como las actualizaciones relevantes se aplican solo a una cierta parte de la base de datos, también me preguntaba si también es posible vincular dicho desencadenante (u otro mecanismo) a un diagrama de base de datos.

¡Toda ayuda es apreciada! rinze

Respuesta

6

Si su base de datos es SQL Server 2005 y superior, puede probar esta solución: Remove pooling for data changes from a WCF front end.

Como nota al margen, nunca llame a procesos externos desde un desencadenador, no realice llamadas web desde un desencadenador. Es una receta garantizada para el desastre.

actualización

Para aquellos interesados ​​en la mezcla de notificaciones de consulta con LINQ to SQL recomiendo Using SQLDependency objects with LINQ.

+0

bien, este blog hace (casi) exactamente lo que estoy haciendo aquí. Como estoy usando LINQ to SQL, es un poco menos directo, pero no debería ser un problema. ¿Sabes si es posible agregar una dependencia en un diagrama de base de datos (o una vista, para simularlo)? ¡Gracias por el enlace! – Syg

+0

No he pensado en utilizar LINQ y SqlDependency en combinación. Veré cómo se puede lograr esto y publicar de nuevo. –

+0

Ver mi actualización, Ryan Dunn ya ha blogueado sobre SqlDependency y Linq2sql. –

Cuestiones relacionadas