Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелуБұл браузерге бұдан былай қолдау көрсетілмейді.
Соңғы мүмкіндіктерді, қауіпсіздік жаңартуларын және техникалық қолдауды пайдалану үшін Microsoft Edge браузеріне жаңартыңыз.
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
В этой статье объясняется, как выполнять преобразование между различными форматами маркеров сеанса для обеспечения совместимости между версиями пакета SDK.
Ескерім
По умолчанию пакет SDK автоматически отслеживает маркер сеанса и использует последний по времени маркер. Дополнительные сведения см. в разделе "Использование маркеров сеанса" статьи "Управление уровнями согласованности в Azure Cosmos DB". Инструкции в этой статье применимы только при соблюдении следующих условий:
Существует два формата маркеров сеанса: простой и векторный. Так как эти форматы не взаимозаменяемы, при передаче маркера сеанса в клиентское приложение на базе другой версии пакета SDK необходимо преобразовать его формат.
Простой маркер сеанса имеет следующий формат: {pkrangeid}:{globalLSN}
Векторный маркер сеанса имеет следующий формат: {pkrangeid}:{Version}#{GlobalLSN}#{RegionId1}={LocalLsn1}#{RegionId2}={LocalLsn2}....#{RegionIdN}={LocalLsnN}
Чтобы передать маркер сеанса клиенту на базе пакета SDK для .NET версии 1, используйте простой формат маркера сеанса. Пример кода для преобразования приведен ниже.
private static readonly char[] SegmentSeparator = (new[] { '#' });
private static readonly char[] PkRangeSeparator = (new[] { ':' });
// sessionTokenToConvert = session token from previous response
string[] items = sessionTokenToConvert.Split(PkRangeSeparator, StringSplitOptions.RemoveEmptyEntries);
string[] sessionTokenSegments = items[1].Split(SessionTokenHelpers.SegmentSeparator, StringSplitOptions.RemoveEmptyEntries);
string sessionTokenInSimpleFormat;
if (sessionTokenSegments.Length == 1)
{
// returning the same token since it already has the correct format
sessionTokenInSimpleFormat = sessionTokenToConvert;
}
else
{
long version = 0;
long globalLSN = 0;
if (!long.TryParse(sessionTokenSegments[0], out version)
|| !long.TryParse(sessionTokenSegments[1], out globalLSN))
{
throw new ArgumentException("Invalid session token format", sessionTokenToConvert);
}
sessionTokenInSimpleFormat = string.Format("{0}:{1}", items[0], globalLSN);
}
Чтобы передать маркер сеанса клиенту на базе пакета SDK для .NET версии 2, используйте векторный формат маркера сеанса. Пример кода для преобразования приведен ниже.
private static readonly char[] SegmentSeparator = (new[] { '#' });
private static readonly char[] PkRangeSeparator = (new[] { ':' });
// sessionTokenToConvert = session token from previous response
string[] items = sessionTokenToConvert.Split(PkRangeSeparator, StringSplitOptions.RemoveEmptyEntries);
string[] sessionTokenSegments = items[1].Split(SegmentSeparator, StringSplitOptions.RemoveEmptyEntries);
string sessionTokenInVectorFormat;
if (sessionTokenSegments.Length == 1)
{
long globalLSN = 0;
if (long.TryParse(sessionTokenSegments[0], out globalLSN))
{
sessionTokenInVectorFormat = string.Format("{0}:-2#{1}", items[0], globalLSN);
}
else
{
throw new ArgumentException("Invalid session token format", sessionTokenToConvert);
}
}
else
{
// returning the same token since it already has the correct format
sessionTokenInVectorFormat = sessionTokenToConvert;
}
Ознакомьтесь со следующими статьями:
Оқиға
AI бағдарламалары мен агенттерін құру
Mar 17, 9 PM - Mar 21, 10 AM
Нақты пайдалану жағдайлары негізінде масштабты ИСК шешімдерін құру үшін стипендиаттармен және сарапшылармен кездесу сериясына қосылыңыз.
Қазір тіркелуОқыту
Оқыту бағдарламасы
Verbinding maken met Azure Cosmos DB for NoSQL met de SDK - Training
Verbinding maken met Azure Cosmos DB for NoSQL met de SDK