Abbiamo un servizio WCF che viene utilizzato per eseguire una query su un archivio dati sottostante (in questo momento SQL Server 2005). Questo servizio può restituire quantità piuttosto grandi di dati; Oltre 60000 istanze della nostra classe di entità che contiene ~ 20 proprietà. Le proprietà sono per lo più primitive come string, int, DateTime con una coppia che punta ad altre entità che possono a loro volta puntare su altre; quelle gerarchie non sono molto profonde però.Le migliori pratiche per il servizio WCF con grandi quantità di dati?
Un'applicazione che sta consumando questo servizio tipicamente effettuerà query che restituiscono solo un numero ragionevole di entità (da poche istanze fino a un paio di migliaia). Ma occasionalmente farà una query che restituirà una grande quantità come detto sopra (e dovrà elaborare quei dati, quindi restringere i criteri di query non è un'opzione).
Quello che vogliamo fare è introdurre una sorta di funzionalità di "paging", in cui il client può chiamare il servizio e ottenere un certo numero di istanze indietro, quindi chiamare di nuovo e ottenere il blocco successivo e così via, fino a quando il il risultato completo viene recuperato. Non avendo lavorato molto con WCF, non sono abbastanza sicuro del modo migliore per raggiungere questo obiettivo.
Una cosa da tenere a mente è che i dati sottostanti possono cambiare molto bene durante il recupero dei blocchi. Non sono sicuro che questo sia un problema per noi o no (è necessario che lo invii un po '), ma potrebbe esserlo, quindi qualsiasi input sulla gestione di quella particolare situazione è anch'esso benvenuto.
Abbiamo iniziato a esaminare la risposta in streaming, ma vorrei vedere anche esempi di paging, poiché potremmo voler iniziare l'elaborazione dei dati prima che venga ricevuto il risultato completo.
Quindi, la domanda in breve: esiste una best practice per questo tipo di scenario (o qualsiasi no-no assoluto di cui dovremmo essere a conoscenza)?
Fredrik- hai visto questo- http://stackoverflow.com/questions/741413/implementing-pager-through-wcf-service- un po 'essenziale però – RichardOD
@RichardOD: grazie per il link. Penso che dobbiamo attaccarlo a un livello più basso di quello, ma gli darò un po 'di tempo per la sperimentazione. –