Synchronisierung der SharePoint-Dokumentbibliothek
Letzte Änderung: Montag, 21. Dezember 2009
Gilt für: SharePoint Foundation 2010
Inhalt dieses Artikels
Auflisten von Änderungen an Listenelementen
Abrufen des Datenstroms der geänderten Dokumente
Aktualisieren von Dokumenten auf dem Server
Sie können Microsoft Sync Framework zum Synchronisieren von Elementen in einer SharePoint Foundation-Dokumentbibliothek verwenden. Der Synchronisierungsprozess ähnelt dem unter SharePoint-Listensynchronisierung beschriebenen Prozess, wobei die Synchronisierung von Dokumentbibliotheken allerdings die Übergabe der Dokumentdatenströme selbst umfasst. Die Enumeration von Änderungen an einer Dokumentbibliothek wird in zwei Schritten erstellt. Zuerst werden die Änderungen an den Listenelementen der Dokumentbibliothek aufgelistet, und dann werden die Dokumentdatenströme der geänderten Dokumente heruntergeladen. Aufgrund des Risikos von Synchronisierungskonflikten bei der Verwendung eines zwei Schritte umfassenden Prozesses werden das Listenelement und der zugehörige Dokumentdatenstrom mithilfe der Etag-Eigenschaft synchron gehalten.
Auflisten von Änderungen an Listenelementen
Zum Auflisten von Änderungen an Listenelementen wird das Etag benötigt, das als Parameter von WebDAV-get/put-Anforderungen übergeben wird. Jedes Mal, wenn ein Dokumentdatenstrom auf dem Server aktualisiert wird, wird das Etag des Dokuments mit der Änderung aktualisiert. Der Wert wird dann während Lese- und Schreibvorgängen als Listenelementeigenschaft übergeben. Der Server vergleicht den Etag-Wert im Listenelement mit dem Etag-Wert des Dokuments bei der Aktualisierung. Abwechselnd führt der Client den Vergleich bei Lesevorgängen aus. Dadurch wird sichergestellt, dass das Listenelement und der Dokumentdatenstrom zum gleichen Lese-/Schreibvorgang gehören.
Die Enumeration der Änderungen an Listenelementen in der Dokumentbibliothek wird mithilfe der gleichen GetListItemChangesWithKnowledge(String, String, XmlNode, XmlNode, String, XmlNode, String, XmlNode, XmlNode)-Methode erstellt, die auch für reguläre Listen verwendet wird. Dieser Methodenaufruf stellt Clientanwendungen Folgendes bereit: eine Liste der geänderten Listenelemente in der Dokumentbibliothek sowie aktuelles Serverwissen. Im nächsten Schritt werden dann die Parameter, die den Dateipfad und das Etag darstellen, für den Zugriff auf den Dateidatenstrom über die WebDAV-APIs oder die APIs, die Dateisynchronisierung über das SOAP-Protokoll von HTTP (FSSHTTP oder "Cobalt") unterstützen, verwendet.
Abrufen des Datenstroms der geänderten Dokumente
Nach dem Auflisten der Listenelementänderungen besteht der nächste Schritt darin, die Dokumentdatenströme der geänderten Dokumente abzurufen.
Verwenden Sie die WebDAV-get-Methode zum Abrufen des Dokumentdatenstroms zusammen mit dem Wert der Etag-Eigenschaft des Dokuments. Weitere Informationen zum Abrufen des Datenstroms eines Elements finden Sie unter Abrufen des Datenstroms eines Elements (WebDAV). Wenn der abgerufene Wert der Etag-Eigenschaft von dem Wert der Etag-Eigenschaft im Eigenschaftsbehälter des Listenelements abweicht, hat sich das Dokument seit dem letzten Abrufen des Listenelements geändert. Die Logik in der Clientanwendung bestimmt, ob das Element übersprungen wird und andere Element im Resultset abgerufen werden oder ob die Anwendung stattdessen sofort noch einmal synchronisiert wird.
Listenelemente werden in der Reihenfolge zurückgegeben, in der sie im Änderungsprotokoll angezeigt werden. Daher kann der Client nach dem Herunterladen eines Dokumentdatenstroms für das Listenelement sein Wissen aktualisieren, indem er die letzte bekannte Serverversion auf die Version des verarbeiteten Elements festlegt. In Situationen, in denen die Synchronisierung unterbrochen wurde, kann der Client dadurch die Synchronisierung ab dem letzten synchronisierten Dokument fortsetzen.
Aktualisieren von Dokumenten auf dem Server
SharePoint Foundation unterstützt das Höher- und Tieferstufen von Dokumentmetadaten. Wenn ein Parser für einen gegebenen Dokumenttyp auf dem Server installiert ist, wird er für jedes Dokument aufgerufen, das hochgeladen wird, um Eigenschaften aus dem Dokumentdatenstrom zu extrahieren. Die Eigenschaften werden dann zu den MetaInfo-Spalten hochgestuft. Ist für einen Dokumenttyp kein Parser vorhanden, erfolgt keine Höher- bzw. Tieferstufung von Eigenschaften.
Dokumente werden in zwei Stufen aktualisiert:
Der Protokollclient sendet mithilfe von WebDAV den Dokumentdatenstrom zusammen mit dem Dokument-Etag, das dem Client bekannt ist, an den Server. Wenn das Etag auf dem Client und auf dem Server identisch ist, hat sich die Serverkopie seit dem letzten Abrufen von Änderungen durch den Client nicht geändert, und die neue Dokumentversion wird vom Server angenommen. Nach dem Schreiben des Dokumentdatenstroms stuft der Server die Eigenschaften des Dokuments zu Listenelementspalten hoch. Anschließend aktualisiert er die Version des zugeordneten Listenelements und des Etags des Dokuments und sendet dann das neue Etag in einer Antwortmeldung an den Client.
Nach dem Erhalt des neuen Dokument-Etags fordert der Client das aktualisierte Listenelement für das Dokument an. Dieses wird mit dem aktualisierten ows_hiddenversion-Feld und dem neuen Etag zurückgegeben. Der Client überprüft, ob das Etag im Listenelement mit dem Etag im Dokument übereinstimmt. Weichen sie voneinander ab, wurde das Dokument nach der Ausführung von Schritt 1 weiter oben aktualisiert, und die Synchronisierung sollte ab der Auflistung der Änderungen gestartet werden. Sind die Etags identisch, aktualisiert der Client seine Clientversion des Listenelements mit dem neuen Wert des ows_hiddenversion-Felds.
Dokumentaktualisierungen können unterschiedliche Aufrufe von serverseitiger Logik auslösen, von Virenscannern bis hin zu Workflows. Diese serverseitige Logik kann zu Aktualisierungen von Dokumentinhalten führen, die für den Client von Interesse sein können. Der Client ermittelt anhand des Änderungsenumerationsverfahrens, ob er ein aktualisiertes Dokument herunterladen muss. Der Client muss Änderungen an dem Dokument herunterladen, durch die die Inhaltsversion des Dokuments aktualisiert wurde. Der Client darf jedoch nicht Änderungen synchronisieren, durch die nur die Serverversion geändert wurde.