Dans les collections fiables (en particulier IReliableDictionary), une approche permettant de mettre en œuvre des requêtes "courantes" consiste à mettre à jour un dictionnaire secondaire qui structure les clés de manière à ce qu'elles soient ordonnées d'une manière spécifique dans une énumération. Pour les grands ensembles de données, J'aimerais éviter de faire circuler un grand nombre de données. .
Pour ce faire, j'aimerais mettre en œuvre une sorte de jeton de continuation que l'appelant peut me fournir lorsqu'il demande les données. J'applique actuellement cette méthode en générant d'abord une énumération ordonnée et en renvoyant les n premiers éléments, où n = la taille MAX_PAGE. La suite est essentiellement la dernière clé de cette liste de n éléments. . La prochaine fois que l'appelant transmet le jeton de continuation, Je génère l'énumérable ordonné avec la fonction de filtrage spécifiant que la clé doit être supérieure à la suite. .
Cela pose deux problèmes (à ma connaissance) :
- En pourrait changer entre le moment où l'appelant demande une page pour la première fois et celui où il la demande à nouveau. . Je ne suis pas certain de pouvoir éviter cela, car les mises à jour de la collection doivent pouvoir être effectuées à tout moment, quelle que soit la personne qui tente de consulter les données.
- Je ne suis pas certain de la manière dont la fonction de filtrage est utilisée. Je suppose que, puisqu'un développeur peut filtrer sur n'importe quoi, la fonction La méthode GetEnumerableAsync() doit fournir toutes les clés du dictionnaire avant de renvoyer l'énumérable . Pour un ensemble de données suffisamment important, cela semble lent.
Existe-t-il des méthodes prescrites pour la pagination de données de ce type ? Je commence à avoir l'impression de faire fausse route avec Reliable Collections pour certains de mes cas d'utilisation.