مشاركة عبر


تحويل تنسيقات رمز الجلسة في .NET SDK

ينطبق على: NoSQL

تشرح هذه المقالة كيفية التحويل بين تنسيقات رمز الجلسة المختلفة لضمان التوافق بين إصدارات SDK.

إشعار

بشكل افتراضي ، تتعقب SDK الرمز المميز للجلسة تلقائيًا وستستخدم أحدث رمز للجلسة. لمزيد من المعلومات ، يرجى زيارة استخدام الرموز المميزة للجلسة. التعليمات الواردة في هذه المقالة تنطبق فقط على الشروط التالية:

  • يستخدم حساب Azure Cosmos DB تناسق الجلسة.
  • أنت تدير الرموز المميزة للجلسة يدوياً.
  • أنت تستخدم إصدارات متعددة من SDK في نفس الوقت.

تنسيقات رمز الجلسة

يوجد تنسيقان لرمز الجلسة: بسيط و متجه. هذان التنسيقان غير قابلين للتبديل ، لذا يجب تحويل التنسيق عند التمرير إلى تطبيق العميل بإصدارات مختلفة.

  • يتم استخدام تنسيق الرمز المميز للجلسة البسيط بواسطة .NET SDK V1 (Microsoft.Azure.DocumentDB -version 1.x)
  • يتم استخدام تنسيق الرمز المميز للجلسة المتجه بواسطة .NET SDK V2 (Microsoft.Azure.DocumentDB-الإصدار 2.x)

رمز جلسة بسيط

رمز الجلسة البسيط له التنسيق التالي: {pkrangeid}:{globalLSN}

رمز جلسة المتجه

الرمز المميز لجلسة المتجه له التنسيق التالي: {pkrangeid}:{Version}#{GlobalLSN}#{RegionId1}={LocalLsn1}#{RegionId2}={LocalLsn2}....#{RegionIdN}={LocalLsnN}

التحويل إلى رمز جلسة بسيط

لتمرير رمز جلسة إلى عميل باستخدام .NET SDK V1 ، استخدم تنسيق رمز الجلسة البسيط . على سبيل المثال ، استخدم نموذج التعليمات البرمجية التالي لتحويله.

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);
}

التحويل إلى رمز جلسة Vector

لتمرير رمز جلسة مميز إلى العميل باستخدام .NET SDK V2 ، استخدم تنسيق الرمز المميز للجلسة المتجه . على سبيل المثال ، استخدم نموذج التعليمات البرمجية التالي لتحويله.


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;
}

الخطوات التالية

اقرأ المقالات التالية: