W SOA nie powinniśmy budować ani wstrzymywać stanu (ani projektować zależności) między klientem a serwerem. Jest to zrozumiałe. Ale jakie wzorce można zastosować w przypadku, gdy klient chce skorzystać z usługi czasu rzeczywistego, która może zwrócić otwartą liczbę "wierszy"?SOA/Web Service Pagination
Aplikacje internetowe, podobnie jak w SOA, ale pozwalające na stan (sesje) rozwiązały to przy pomocy paginacji. Paginacja wymaga (w większości przypadków, szczególnie w przypadku SQL), że serwer przechowuje dane i że klient żąda danych w porcjach.
Jeśli zastanowimy się nad scenariuszem podobnym do paginacji dla usług sieciowych, jakie wzorce podążałyby za nimi, nadal możliwe byłoby przestrzeganie zasad SOA (lub jak najbliżej).
Niektóre zasady myślicieli: 1) poparte bazy danych SQL (w związku z tym nie ma pojęcia z wielu wierszy w wybranej zestawie) 2) Ważne jest, aby nie pominąć wiersz lub powielić wiersz w ustawić podczas paginacji 3) dane można wprowadzać i usuwać w dowolnym momencie do bazy danych przez innych klientów 4) nie istnieje potrzeba rozważenia zestaw danych na żywo (update-stanie) zestaw danych
Osobiście uważam, że 1 i 2 powyżej już przeliterują nasze rozwiązanie, ograniczając przestrzeń rozwiązania z wymaganiami.
Proponowane przeze mnie rozwiązanie zawiera dane (w takim zakresie, w jakim jest zaznaczone) przechowywane w pamięci podręcznej/pamięci podręcznej tylko do odczytu, gdzie można przypisać numer wiersza w zestawie wyników i zezwolić na stronicowanie w tej migawce danych. Posiadałbym infrastrukturę do przechowywania migawek (serwerów, zewnętrznych pamięci podręcznych, memcached lub ehcache - to musi być dość duże). Wynikiem takiego zapytania byłby identyfikator migawki, a klienci mogliby pobrać dane z migawki za pomocą snapshot API (usług internetowych) i identyfikatora migawki. Wyniki będą przetwarzane w trybie tylko do odczytu, do przodu dla rekordów X w czasie, gdy x jest czymś rozsądnym.
Radzenie sobie ze swoimi myślami i pomysłami, krytyka lub pochwała.
Wskażę ci, jak twitter obsługuje ich stronicowanie. To może być pomocne dla Ciebie https://dev.twitter.com/rest/public/timelines –