Domanda

Scenario:. Un servizio WCF riceve un XDocument dai clienti, elabora e inserisce una riga in una tabella MS SQL

Più client possono essere chiamando il servizio WCF contemporaneamente. La chiamata di solito non richiede molto tempo (pochi secondi).

Ora ho bisogno di qualcosa per interrogare la tabella SQL ed eseguire un altro insieme di processi in modo asincrono. Il secondo processo non deve callback nulla né è legato alla WCF in alcun modo. Ha solo bisogno di leggere la tabella e di eseguire una serie di metodi e magari una chiamata del servizio Web (se ci sono record ovviamente), ma questo è tutto. I client del servizio WCF che consumano il servizio di cui sopra non hanno idea di questo e non si preoccupano di esso.

Ho letto su questa domanda StackOverflow e so anche che un servizio di Windows sarebbe l'ideale, ma questo servizio WCF sarà ospitato su un hosting condiviso (DiscountASP o simili) e, quindi, l'installazione di un servizio di Windows non sarà un'opzione (come per quanto ne so).

Dato che l'architettura è fisso (IE: Non posso cambiare la tabella, viene da un formato legacy, né cambiare il meccanismo del servizio WCF)?, Quale sarebbe il tuo suggerimento per il polling / processo di questa tabella

Direi che ho bisogno di controllare ogni 10 minuti o giù di lì. Non ha bisogno di essere istantanea.

Grazie.

È stato utile?

Soluzione

barare. Esporre questo processo come un altro servizio WCF e sparare un comando GO da una scatola sotto il vostro controllo in un momento programmato.

Mentre si può sparare fino thread in background in WCF, o utilizzare la cache di scadenza come scheduler di un uomo povero chi si ferma quando il pool di app ricicla fino al prossimo colpo sul vostro sito web e il pool di applicazione gira di nuovo. Almeno sparando richiesta da una macchina che controlli significa che si conosce il pool di applicazione tornerà up ogni 10 minuti o giù di lì, perché hai inviato una richiesta nella sua direzione.

Altri suggerimenti

Un'applicazione web non è adatto a tutti di essere in esecuzione qualcosa a intervalli fissi. Se non ci sono le richieste che arrivano, non esiste un codice in esecuzione l'applicazione, e se l'applicazione è inattivo per un po 'l'IIS può decidere di spegnerlo completamente fino alla prossima richiesta arriva.

Per alcune applicazioni non è affatto importante che qualcosa viene eseguito a intervalli specifici, ma solo che è stato eseguito di recente. Se questo è il caso per la vostra applicazione, allora si può solo tenere traccia di quando il tavolo era ultima polling, e per ogni assegno richiesta se il tempo è passato per la tavola per essere interrogato di nuovo.

Se si ha accesso per amministrare il database, v'è un programmatore in SQL Server. E 'possibile eseguire query, stored procedure, e ancora di iniziare i processi se si ha il permesso (che è molto improbabile su un hosting condiviso, però).

Se è necessario il codice su un intervallo specifico, e non è possibile accedere al server per pianificare o eseguire come un servizio, o non è possibile utilizzare l'utilità di SQL Server, non è semplicemente fattibile.

Ti fanno pool di applicazioni "sempre attiva" e fare quello che vuoi con i tuoi fili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top