# ลูกค้า DDB .NET
ไคลเอนต์ Microservices DDB .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 โฆษณา (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
สิ่งนี้จะส่งคืนผลลัพธ์เดียวจากจุดสิ้นสุดที่น่าสนใจ ต้องใช้ฟังก์ชันภาคแสดงและส่งคืนการตอบสนองครั้งแรกที่ตรงกับเพรดิเคต