# DDB .NET عميل

يتيح عميل DDB microservices .NET الوصول إلى جميع عمليات DDB بلغات مثل C#. يتم الوصول إلى كل خدمة microservice باستخدام حزمة nuget مختلفة.

ملاحظة للمستخدمين الخارجيين - تشير العديد من الروابط في القسم التالي إلى التطبيقات الداخلية. يرجى التحدث إلى فريق المشروع الخاص بك للحصول على الدعم.

# المتطلبات الأساسية

# تثبيت

# nuget.config

مطلوب ملف nuget.config لتثبيت حزم nuget. قم بإنشاء الملف بجوار ملف .csproj أو .sln مع المحتويات التالية:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="ddb" value="https://pkgs.dev.azure.com/ovearup/_packaging/ddb/nuget/v3/index.json" />
  </packageSources>
</configuration>

# حزم

يتم توفير كل خدمة microservice بواسطة حزمة nuget مختلفة. يمكن تثبيت الحزم مع الأمر:

dotnet add package <package name> --interactive

الحزم المتاحة هي:

# إعدادات

ستحتاج تسجيل تطبيق Azure AD (opens new window) للعميل الذي يصل إلى واجهة برمجة التطبيقات. ستحتاج إلى تكوين النطاقات وإعادة توجيه URI لتطبيقك.

# نطاقات

يتم تكوين النطاقات على صفحة API permissions. يمكن إضافة هذه من خلال Add a permission ، ثم اختيار APIS my organization uses ، وأخيراً اختيار DigitalDesignBriefAPI. الإذن المطلوب هو user_impersonation. بمجرد إضافة هذه ، ستحتاج إلى الموافقة عليها مع Grant admin consent for Arup والتي ستحتاج إلى تسجيل الدخول في تذكرة خدمة.

# إعادة توجيه URI

ستحتاج أيضًا إلى تكوين URI إعادة توجيه لتطبيقك. يتم ذلك على صفحة Authentication. لتطبيقات سطح المكتب ، حدد Add a platform ، ثم Mobile and desktop applications ، وأخيراً حدد https://login.microsoftonline.com/common/oauth2/nativeclient. للتطبيقات الأخرى ، اتبع الإرشادات الواردة في صفحة Authentication.

# الاستخدام

يقوم كائن DDBClient بتكوين المصادقة والبيئة لكل خدمة microservice. يمكن بعد ذلك طلب كل خدمة microservice المثبتة باستخدام طرق التمديد على العميل. يتم توفير تنفيذ عملية الاستحواذ الرمزية لتطبيقات سطح المكتب. ستحتاج التطبيقات الأخرى ، مثل الخوادم ، إلى تنفيذ عملية الاستحواذ الرمزية الخاصة بها من خلال تنفيذ واجهة ITokenAcquisition. يمكن بعد ذلك نقل هذا إلى DDBClient أو DDBClientFactory في المُنشئ.

string clientId = "";
var ddbClient = new DDBClient(Environment.Sandbox, clientId);


var commentsService = ddbClient.GetCommentsService();


foreach (var comment in (await commentsService.GetCommentsAsync()).Comments)
{
 Console.WriteLine(comment.Content);
}

# مصنع العميل

يتم توفير فئة DDBClientFactory أيضًا ، والتي تسمح بإنشاء كائنات DDBClient لبيئة معينة ، بينما يتم التعامل مع المصادقة بواسطة المصنع. يمكن أن يكون هذا مفيدًا في السيناريوهات التي يتم فيها استخدام حقن التبعية.

# ترقيم الصفحات

يتم توفير وظائف المساعد للعمل مع نقاط النهاية المربوطة. تم العثور عليها في Helpers فئة ثابتة.

تبسيط وظائف المساعد ترقيم الصفحات بشكل متكرر استدعاء نقطة النهاية لإرجاع قائمة النتائج المترتبة. مثال على توقيع:

IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)

requestFunction هي وظيفة تمرر المعلمة after إلى وظيفة DDB ، والتي يتم تمريرها في البداية.

getInner يحصل على المجموعة الداخلية من استجابة النتيجة.

getAfter يحصل على المؤشر after من استجابة النتيجة.

على سبيل المثال:

var results = Helpers.Unpaginate(
 after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
 t => t.Parameters,
 t => t?.Paging?.Cursors?.After
);

# Helpers.Unpaginate

هذا متاح من .NET Core 3.1 ويوصى به باستخدام هذا عند توفره ، حيث سيقوم بتقديم كل طلب بتكاسل لأنه يتم تكراره ، بدلاً من الاضطرار إلى استرداد جميع النتائج في الذاكرة. يعيد IAsyncEnumerable ، ومع System.linq.async (opens new window) يمكن تشغيل الحزمة المثبتة مع أساليب LINQ المألوفة.

# Helpers.UnpaginateAll

هذا يعيد قائمة واحدة من الكائنات عن طريق الاتصال بشكل متكرر طريقة الطلب المقدم حتى يتم جمع جميع النتائج. يجب استخدام هذا بشكل عام فقط إذا كان Helpers.Unpaginate غير متوفر. يتم توفير الحمل الزائد الذي يأخذ وظيفة تحويل إضافية ، مما يسمح بتحويل النتائج عند وصولها قبل إضافتها إلى القائمة.

# Helpers.GetPaginatedFirstOrDefault

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

Last Updated: ٢١‏/٦‏/٢٠٢٤, ١١:٣٤:٤٤ ص