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