# ลูกค้า DDB .NET

ไคลเอนต์ Microservices DDB .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 โฆษณา (opens new window) สำหรับลูกค้าที่เข้าถึง API คุณจะต้องกำหนดค่าขอบเขตและการเปลี่ยนเส้นทาง 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 = "<client id>";
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 ซึ่งเริ่มแรกถูกส่งผ่าน NULL

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: 13/9/2566 15:19:15