Mamy usługę WCF, która jest używana do wysyłania zapytań do baz danych danych (teraz SQL Server 2005). Ta usługa może zwracać raczej duże ilości danych; 60000+ wystąpień naszej klasy encji, która zawiera ~ 20 właściwości. Właściwości są w większości prymitywami, takimi jak string, int, DateTime z parą wskazującą na inne podmioty, które mogą z kolei wskazywać na inne; te hierarchie nie są jednak zbyt głębokie.Najlepsza praktyka dla usługi WCF z dużą ilością danych?
Jedna aplikacja zużywająca tę usługę zwykle tworzy zapytania zwracające tylko uzasadnioną liczbę jednostek (od kilku do kilku tysięcy). Czasami jednak tworzy zapytanie, które zwróci dużą ilość, jak podano powyżej (i będzie musiało przetworzyć dane, więc zawężenie kryteriów zapytania nie jest opcją).
To, co chcemy zrobić, to wprowadzić funkcję "stronicowania", w której klient może wywołać usługę i odzyskać określoną liczbę instancji, a następnie zadzwonić ponownie i uzyskać następny fragment, aż do pełny wynik jest pobierany. Nie pracując strasznie dużo z WCF, nie jestem pewien co do najlepszego sposobu osiągnięcia tego.
Jedną z rzeczy, o których należy pamiętać, jest to, że podstawowe dane mogą bardzo dobrze ulec zmianie podczas pobierania porcji. Nie jestem do końca pewien, czy jest to dla nas problem, czy nie (trzeba to trochę zająć), ale może tak być, więc mile widziany jest również wkład w obsługę tej konkretnej sytuacji.
Rozpoczęliśmy analizę przesyłania strumieniowego odpowiedzi, ale chcielibyśmy również zobaczyć próbki stronicowania, ponieważ możemy chcieć rozpocząć przetwarzanie danych przed uzyskaniem pełnego wyniku.
Krótko mówiąc, czy istnieje najlepsza praktyka w tego rodzaju scenariuszu (lub jakiekolwiek absolutne nie-nie, o czym powinniśmy być świadomi)?
Fredrik - czy widziałeś to - http://stackoverflow.com/questions/741413/implementing-pager-through-wcf-service- nieco podstawowy chociaż – RichardOD
@RichardOD: dzięki za link. Myślę, że musimy zaatakować to na niższym poziomie, ale dam mu trochę czasu na eksperymenty. –