Sono completamente nuovo in WCF. Ero abbastanza sicuro che avrebbe funzionato come i normali servizi web - e sono anche abbastanza sicuro che stavo facendo anche quello sbagliato, ma ora voglio assicurarmi che lo stia facendo bene.Utilizzo di WCF in un'applicazione ASP.Net e best practice
La nostra app ASP.Net si collega al servizio WCF su Internet. Ho una protezione di base implacabile e utilizzo di SSL. Funziona, ma è più lento rispetto a quando venivano eseguiti servizi web regolari. I dati restituiti sono fondamentalmente uguali a quelli del normale servizio web.
Quando utilizzavo il servizio web regolare, ogni volta che dovevo ottenere i dati, creavo un nuovo oggetto di servizio e chiamavo la funzione per i dati di cui avevo bisogno. Sembrava funzionare bene, ma, come immagino, non è il modo migliore di farlo, soprattutto se ci sono migliaia di utenti che si connettono allo stesso tempo. Quindi, quando mi sono convertito in WCF, ho deciso di mantenere aperto un client e di usarlo per tutti quelli che si connettono al sito. L'ho messo nella cache e quando la cache scaricava l'oggetto, avevo una funzione di callback per eliminarla.
Ora non ci ho nemmeno pensato fino a dopo aver cambiato tutto ciò che potrebbe rappresentare un problema per più persone che si connettono. Se la persona A richiede dati, la persona B deve aspettare che finisca prima che i dati vengano recuperati attraverso il servizio.
Quindi l'ho modificato in base alla sessione. Ho implementato questo errore o è semplicemente fallito perché non ha funzionato affatto. Il client si interrompe, causa un errore o semplicemente non funziona. L'ho cambiato di nuovo in cache per ora e sembra che funzioni bene (tranne che lentamente).
Che cos'è una "best practice" per questo scenario? Creo il client al volo quando è necessario, creo una sessione basata (e capisco cosa ho fatto di sbagliato), o la mantieni così com'è e utilizzo il metodo memorizzato nella cache di un client?
+1. Buona domanda. – AnthonyWJones