2016-04-26 6 views
2

Ich versuche zu verstehen, was Sitzungskonsistenz eigentlich bedeutet, wenn Sie mit Azure DocumentDb über das .NET-Client-SDK arbeiten, d. H. Was definiert (und begrenzt) eine Sitzung. Wird bei jeder Erstellung einer neuen Instanz von DocumentClient eine neue Sitzung erstellt, und ändert sich das Verhalten bei Verwendung des Wravers "IReliableReadWriteDocumentClient"?Sitzungskonsistenz und das .NET Client SDK

Dank

Antwort

5

Ja, wird eine neue Sitzung jedes Mal, wenn eine neue Instanz der Klasse DocumentClient erstellen erstellt. Jede DocumentClient-Instanz verwaltet eine Zuordnung von Sammlung -> Sitzungstokenzuordnung. Der Client speichert das letzte vom Server empfangene Sitzungstoken und gibt es während Leseanforderungen als Header (x-ms-sessiontoken) wieder. Dadurch kann DocumentDB eine aktuelle Replik Ihrer Sammlung finden, um die Konsistenz von Sitzungen (oder Read-Your-Writes) zu gewährleisten. Dies ist das Gleiche mit IReliableReadWriteDocumentClient, da es sich um einen Wrapper für den DocumentClient handelt.

Hinweis: Der einfachste Weg zum Erreichen der Sitzungskonsistenz besteht darin, eine einzige DocumentClient-Instanz automatisch für Sie verwalten zu lassen. Sie können auch eine logische Sitzung über mehrere DocumentClient-Instanzen mit etwas mehr Komplexität verwalten. Angenommen, Sie haben eine Web-API mit Lastenausgleich und zwei Servern mit jeweils einer DocumentClient-Instanz, und Sie möchten die Sitzungskonsistenz auf diesen Servern.

  1. Client schreibt -> App Server 1 -> DocumentDB
  2. Client liest -> App Server 2 -> DocumentDB

Sie diese in Schritt zurückgeführt, indem das Speichern der x-ms-session implementieren 1, indem Sie es als Cookie im Client speichern und dann dieses x-ms-sessiontoken in der Leseanforderung wiederholen. Durch das Auslösen des Sitzungstokens erhalten Sie Sitzungskonsistenz.

+0

Wow - Danke. Der Mangel an Azure-Dokumentation hier ist manchmal frustrierend. Wenn sich Leute wie du die Zeit nehmen, Dinge zu erklären, hilft das sehr. – Andy