# DDB .NET عميل
يتيح عميل DDB microservices .NET الوصول إلى جميع عمليات DDB بلغات مثل C#. يتم الوصول إلى كل خدمة microservice باستخدام حزمة nuget مختلفة.
ملاحظة للمستخدمين الخارجيين - تشير العديد من الروابط في القسم التالي إلى التطبيقات الداخلية. يرجى التحدث إلى فريق المشروع الخاص بك للحصول على الدعم.
# المتطلبات الأساسية
- .NET
- هؤلاء العملاء يستهدفون .NET القياسي 2.0. يرى هذا (opens new window) صفحة للحصول على قائمة الإصدارات المتوافقة .NET.
- إذا تم بدء تشغيل مشروع جديد ومستقل ، فمن المستحسن استخدام .NET 6 ، والذي يمكن تنزيله من تطبيقات ARUP (opens new window)
- Azure Artifacts مزود اعتماد
- اتبع التعليمات هنا (opens new window)
- الطريقة الموصى بها هي استخدام نص PowerShell التلقائي (opens new window)
# تثبيت
# 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
الحزم المتاحة هي:
Arup.DDB.CommentsService
( مستندات API (opens new window) )Arup.DDB.EnvironmentContextService
( مستندات API (opens new window) )Arup.DDB.ParameterMetadataService
( مستندات API (opens new window) )Arup.DDB.ParameterService
( مستندات API (opens new window) )Arup.DDB.QAService
( مستندات API (opens new window) )Arup.DDB.ReferenceDataService
( مستندات API (opens new window) )Arup.DDB.UserService
( مستندات API (opens new window) )
# إعدادات
ستحتاج تسجيل تطبيق 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
هذا يعيد نتيجة واحدة من نقطة نهاية متصفح. يستغرق وظيفة مسند وإرجاع الاستجابة الأولى التي تتطابق مع المسند.