2016-07-18 5 views
1

Gibt es eine nette Möglichkeit, ein IReliableDictionary < Schlüssel, Liste > zu tun? Ich könnte mir vorstellen, dass die Liste nicht atomar sein würde und in Nebenläufigkeitsprobleme geraten würde. Gibt es einen schönen Weg, dies zu tun? Ich könnte mir vorstellen, dass es auch für den Aufbau von Indizes nützlich wäre. zB IRelableDictionary < Index, Liste <Guid> >.ReliableDictionary <key, List>

+0

Meinen Sie [ConcurrentDictionary ?] (Https://msdn.microsoft.com/en-us/library/dd287191 (v = vs.110) .aspx) –

Antwort

2

Nicht nur Nebenläufigkeitsprobleme, sondern auch Datenkorruption und schlechte Replikationsleistung, wenn Sie nicht vorsichtig sind. Lesen Sie dieses Handbuch für eine ausführliche Erklärung: https://azure.microsoft.com/en-us/documentation/articles/service-fabric-work-with-reliable-collections/

tl; dr:

  • Jedes Mal, wenn Sie eine Transaktion zu begehen, wird die gesamte Liste repliziert und gespeichert. Wenn die Liste unbegrenzt wächst, werden Replikationszeit und -kosten ebenfalls berücksichtigt.
  • Ihre Liste besser unveränderlich sein. Wenn Sie lokale Änderungen direkt an der Listenreferenz innerhalb einer Transaktion vornehmen und die Transaktion abbricht (Ausnahme oder etwas anderes), werden Ihre lokalen Änderungen nicht zurückgesetzt, sondern sie werden nicht. Wenn ein anderer Teil Ihres Codes einen Verweis auf die Liste enthält und außerhalb der Transaktion Änderungen an der Liste vornimmt, werden diese Änderungen nicht repliziert und gespeichert.
+0

Wie erstellen Sie eine Tabelle/Liste wie Struktur. zB IReliableList mit sequentieller Lesetyp Mechanik – user1496062

+0

Frage als eine andere Frage – user1496062