2009-09-10 4 views
6

Ho un servizio WCF che deve notificare i client quando si verificano modifiche al database (SQL Server 2005). Questo è relativamente facile, a patto che trovo un modo per notificare il mio servizio di eventuali modifiche. Probabilmente posso creare un trigger di database su una tabella e farmi avviare un piccolo client di servizio che notifica il mio servizio, ma mi chiedo se c'è un modo migliore per farlo? Sarebbe una soluzione praticabile far sì che il servizio esegua il polling del database per le modifiche, ma non sono sicuro del modo migliore per farlo (e inviare una notifica al mio servizio sarebbe preferibile).Notifica il servizio WCF quando il database viene aggiornato

Poiché gli aggiornamenti rilevanti si applicano solo a una determinata parte del database, mi chiedevo anche se fosse anche possibile collegare un trigger (o un altro meccanismo) a un diagramma di database.

Tutto l'aiuto è apprezzato! rinze

risposta

6

Se il database è SQL Server 2005 e versioni successive, è possibile provare questa soluzione: Remove pooling for data changes from a WCF front end.

Come nota a margine, non chiamare mai processi esterni da un trigger, non effettuare chiamate Web da un trigger. È una ricetta garantita per il disastro.

Aggiornamento

Per chi è interessato a mescolare notifiche delle query con LINQ to SQL vi consiglio Using SQLDependency objects with LINQ.

+0

OK, questo blog lo fa (quasi) esattamente quello che sto facendo qui. Dato che sto usando LINQ to SQL, è un po 'meno semplice, ma non dovrebbe essere un problema. Sai se è possibile aggiungere una dipendenza a un diagramma di database (o una vista, per simularlo)? Grazie per il collegamento! – Syg

+0

Non ho pensato di usare LINQ e SqlDependency in combinazione. Vedrò come questo può essere raggiunto e postback. –

+0

Vedere il mio aggiornamento, Ryan Dunn ha già scritto su SqlDependency e Linq2sql. –