Sto creando un servizio WCF che esporrà diverse operazioni, verrà eseguito in IIS perché ha bisogno di endpoint HTTPS. La maggior parte delle operazioni verrà eseguita entro pochi secondi o meno; tuttavia, una o due di queste operazioni richiederanno tra i 5-90 minuti.Qual è il modo corretto di gestire le operazioni di servizio a lungo termine con WCF ospitato in IIS?
L'utente principale di questo servizio sarà un'applicazione ASP.NET MVC; qual è il modo corretto per gestire questo?
Devo arrestare il timeout e fare alcune chiamate ajax? Dovrei aggiungere una tabella al mio database e fare in modo che le operazioni a lungo termine aggiornino questo database e l'interfaccia web effettui il poll in questa tabella ogni minuto? Non sono sicuro di cosa (se esiste) la migliore pratica generalmente accettata per questo.
Se le operazioni di lunga durata non trasferiscono i dati, allora forse dovresti suddividere questo in un processore asincrono. Quindi il cliente richiede che il lavoro venga avviato, quindi controlla a intervalli regolari per ottenere la risposta o un messaggio che riporti la verifica più tardi. – Noah
@Noah, le operazioni a esecuzione prolungata non restituiscono molti dati, finché non sono completi, dove restituiscono circa un messaggio da 50kb. – Nate
Non dovresti mantenere una connessione http aperta per così tanto tempo se non trasferisci dati, quindi è probabilmente meglio suddividerla. @ Jim fornisce un esempio decente. – Noah