В SOA мы не должны создавать или удерживать состояние (или конструировать зависимости) между клиентом и сервером. Это понятно. Но какие шаблоны могут соблюдаться в случае, когда клиент хочет использовать службу в режиме реального времени, которая может возвращать число строк с открытым концом?SOA/Web Service Pagination
Веб-приложения, аналогичные SOA, но разрешающие состояние (сеансы), решили это с разбивкой по страницам. Для разбиения на страницы требуется (в большинстве случаев, особенно с SQL), что сервер хранит данные и что клиент запрашивает данные в кусках.
Если мы рассмотрим сценарии, похожие на страницы, для веб-сервисов, какие шаблоны будут следовать этим, это все равно позволит придерживаться принципов SOA (или как можно ближе).
Некоторые правила для мыслителей: 1) Снятые с помощью базы данных SQL (поэтому нет понятия числа строк в выбранном наборе) 2) Важно, чтобы не пропустить строку или дублировать строку в установить во пагинации 3) Данные могут быть вставлены и удалено в любое время в базу данных других клиентами 4) Там нет необходимости рассматривать набор данных живых (обновление-состояние) набор данных
Лично я считаю, что 1 и 2 выше уже засекретили наше решение, сдерживая пространство решения с требованиями.
Мое предлагаемое решение будет иметь данные (насколько это выбрано), которые будут храниться в хранилище/кеш-память, доступном только для чтения, где ему может быть назначен номер строки в результирующем наборе и разрешить разбиение на страницы в этом снимке данных. У меня была бы инфраструктура для хранения снимков (серверов, внешних кэшей, memcached или ehcache - это должно масштабироваться довольно велико). Результатом такого запроса будет идентификатор моментального снимка, и клиенты могут извлекать данные из моментального снимка с помощью API-интерфейса моментальных снимков (веб-служб) и идентификатора моментального снимка. Результаты будут обрабатываться только в режиме «только для чтения», только для х записей в то время, когда x было чем-то разумным.
Конкурирующие мысли и идеи, критические замечания или похвалы были бы весьма признательны.
Я укажу вам, как твиттер обрабатывает их разбивку на страницы. Это может помочь вам https://dev.twitter.com/rest/public/timelines –