Erstellt von Thomas Muckwar am 21.09.2011.
WS-PG (paging) ist eine SOAP-Erweiterung zur Paginierung. Dies ist eine Methode um die Übertragung einer Datenmenge in Einzelübertragungen von Teilmengen der Gesamtdatenmenge zu unterteilen. Somit ist es möglich seitenbasierte Anzeigen einer Datenmenge zu unterstützen, wie es auf vielen Webseiten zur Ergebnisanzeige beispielsweise von Suchergebnissen üblich ist. Beim Abgleich von Datenmengen stellt die Paginierung ein Mittel zur Verbesserung der Ausfallsicherheit der Übertragung dar. Bricht die Verbindung ab, muss lediglich die letzte Seite und nicht die Gesamtdatenmenge neu übertragen werden. Weiterhin ist die Ausfallwahrscheinlichkeit aufgrund von Speicherüberläufen bedingt durch die geringere zu übertragende Datenmenge niedriger. Die Erweiterung entstand im Rahmen einer Diplomarbeit zur Optimierung der Skalierbarkeit einer Dienstplattform [1]. Darin finden sich auch weiterführende Hinweise und Erklärungen zum Konzept und zur Nutzung von WS-PG.
Voraussetzung zur Anwendung der paging-Erweiterung in einem Web Service ist lediglich die Möglichkeit den SOAP-Header auslesen und setzen zu können. Somit ist sie problemlos in jedem Web Service implementierbar. Mit der Paginierung wird eine Gesamtdatenmenge virtuell in Seiten unterteilt. Zur Übertragung einer einzelnen Seite wird eine sogenannte Seitengröße definiert und beim Abruf der Daten die gewünschte Seitennummer angegeben.
Es wird angenommen, dass jeder Datensatz eine eindeutige Nummer (ID) besitzt und dass sowohl die Seitennummerierung, als auch die Datensatznummerierung bei
eins beginnt. Außerdem wird davon ausgegangen, dass die Datensatznummerierung permanent ist und sich nicht ändert. Eine Seite Sn mit der Seitennummer n besteht aus einer Menge von Datensätzen. Die Seitengröße entspricht hierbei der konstanten Anzahl |Sn|an Datensätzen pro Seite. Somit liegen die Datensatznummern x der angeforderten Seite im Intervall (n −1)*|Sn| < x <= n*|Sn|.
Der folgende Abschnitt zeigt das XML-Schema für die paging-Erweiterung. Darin wird der Namespace http://serviceplatform.org/spec/paging mit dem Prefix wspg definiert um diese Erweiterung eindeutig festzulegen und Namenskonflikte zu vermeiden. Bei einer Anfrage an die Web Service Operation muss die Seite (page) sowie die Seitengröße (pageSize) angegeben werden. Bei der Antwort muss mit Hilfe des success-Attributs angegeben werden, ob die Paginierung von der Web Service Operation unterstützt wird. Im Falle eines Abrufs der ersten Seite wird im pageCount-Attribut die Seitenanzahl bezüglich der übergebenen Seitengröße angegeben. Um diese Anzahl liefern zu können, kann der SQL-Befehl limit verwendet. Dieser wird von vielen Datenbanken unterstützt, hat allerdings bei einigen Datenbanken einen anderen Namen. Mit ihm ist es möglich eine Teilmenge der Ergebnismenge, die durch das SQL-Statement abgerufen wird, zu erhalten. Mit einem Offset wird die Anzahl der zu überspringenden Ergebnisdatensätze angegeben und ein weiterer Wert gibt die Anzahl der maximal zu liefernden Datensätze.
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://serviceplatform.org/spec/paging" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wspg="http://serviceplatform.org/spec/paging">
<element name="paging" type="wspg:pagingType"/>
<complexType name="pagingType">
<attributeGroup ref="wspg:SOAP-Request"/>
<attributeGroup ref="wspg:SOAP-Response"/>
</complexType>
<attributeGroup name="SOAP-Request">
<attribute name="page" type="int" />
<attribute name="pageSize" type="int" />
</attributeGroup>
<attributeGroup name="SOAP-Response">
<attribute name="success" type="boolean" />
<attribute name="pageCount" type="int" />
</attributeGroup>
</schema>
[1] Muckwar, Thomas: Optimierung der Skalierbarkeit einer Dienstplattform durch Einsatz performanter Web-Service-Techniken. Diplomarbeit, Technische Universität Dresden, August 2011.