# Máy khách DDB .NET
Máy khách DDB Microservice .NET cho phép truy cập vào tất cả các hoạt động DDB bằng các ngôn ngữ như C#.
Mỗi microservice được truy cập bằng gói Nuget khác nhau.
Lưu ý cho người dùng bên ngoài - Nhiều liên kết trong phần sau đây đề cập đến các ứng dụng nội bộ. Vui lòng nói chuyện với nhóm dự án của bạn để được hỗ trợ.
# Điều kiện tiên quyết
.NET
Những máy khách này nhắm mục tiêu .NET Standard 2.0. Nhìn thấy cái này (opens new window) Trang cho một danh sách các phiên bản tương thích .NET.
Nếu bắt đầu một dự án mới, độc lập, bạn nên sử dụng .NET 6, có thể tải xuống từ Ứng dụng Arup (opens new window)
Nhà cung cấp thông tin xác thực của Azure Cetifacts
Thực hiện theo hướng dẫn đây (opens new window)
Phương pháp được đề xuất là sử dụng Tập lệnh PowerShell tự động (opens new window)
# Cài đặt
# nuget.config
Một tệp nuget.config
được yêu cầu để cài đặt các gói NUGET. Tạo tệp bên cạnh tệp .csproj
hoặc .sln
của bạn với các nội dung sau:
xml version="1.0" encoding="utf-8"?
# Gói
Mỗi microservice được cung cấp bởi một gói nuget khác nhau. Các gói có thể được cài đặt với lệnh:
dotnet add package <package name> --interactive
Các gói có sẵn là:
Arup.DDB.CommentsService
( Tài liệu API (opens new window) )Arup.DDB.EnvironmentContextService
( Tài liệu API (opens new window) )Arup.DDB.ParameterMetadataService
( Tài liệu API (opens new window) )Arup.DDB.ParameterService
( Tài liệu API (opens new window) )Arup.DDB.QAService
( Tài liệu API (opens new window) )Arup.DDB.ReferenceDataService
( Tài liệu API (opens new window) )Arup.DDB.UserService
( Tài liệu API (opens new window) )
# Cấu hình
Bạn sẽ cần một Đăng ký ứng dụng Azure AD (opens new window) Đối với khách hàng đang truy cập API. Bạn sẽ cần phải định cấu hình phạm vi và URI chuyển hướng cho ứng dụng của bạn.
# Phạm vi
Các phạm vi được cấu hình trên trang API permissions
. Chúng có thể được thêm vào thông qua Add a permission
, sau đó chọn APIS my organization uses
và cuối cùng chọn DigitalDesignBriefAPI
. Sự cho phép cần thiết là user_impersonation
. Khi bạn đã thêm những thứ này, chúng sẽ cần phải được chấp thuận với Grant admin consent for Arup
sẽ cần phải đăng nhập vào vé dịch vụ.
# Chuyển hướng URI
Bạn cũng sẽ cần định cấu hình URI chuyển hướng cho ứng dụng của bạn. Điều này được thực hiện trên trang Authentication
. Đối với các ứng dụng máy tính để bàn, chọn Add a platform
, sau đó Mobile and desktop applications
và cuối cùng chọn https://login.microsoftonline.com/common/oauth2/nativeclient
. Đối với các ứng dụng khác, hãy làm theo hướng dẫn trên trang Authentication
.
# Cách sử dụng
Đối tượng DDBClient cấu hình xác thực và môi trường cho mỗi dịch vụ microser. Mỗi microservice được cài đặt sau đó có thể được yêu cầu bằng các phương thức mở rộng trên máy khách. Việc thực hiện việc thu nhận mã thông báo được cung cấp cho các ứng dụng máy tính để bàn. Các ứng dụng khác, chẳng hạn như máy chủ, sẽ cần thực hiện việc thu thập mã thông báo của riêng họ bằng cách triển khai giao diện ITokenAcquisition
. Điều này sau đó có thể được chuyển cho DDBClient
hoặc DDBClientFactory
trong hàm tạo.
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);
}
# Nhà máy khách hàng
Một lớp DDBClientFactory
cũng được cung cấp, cho phép tạo các đối tượng DDBClient
cho một môi trường nhất định, trong khi xác thực được xử lý bởi nhà máy. Điều này có thể hữu ích trong các kịch bản trong đó sử dụng tiêm phụ thuộc.
# Phân trang
Các chức năng trợ giúp được cung cấp để làm việc với các điểm cuối được phân trang. Chúng được tìm thấy trong lớp tĩnh Helpers
.
Các chức năng của người trợ giúp phân trang đơn giản hóa nhiều lần gọi một điểm cuối để trả về một danh sách kết quả được phân trang. Một chữ ký ví dụ là:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
là một hàm truyền tham số after
cho hàm DDB, ban đầu được truyền NULL.
getInner
Nhận bộ sưu tập bên trong từ phản hồi kết quả.
getAfter
Nhận con trỏ after
từ phản hồi kết quả.
Ví dụ:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Điều này có sẵn từ .NET Core 3.1 và bạn nên sử dụng điều này khi có sẵn, vì nó sẽ lười biếng thực hiện mỗi yêu cầu vì nó được lặp lại, thay vì phải lấy tất cả các kết quả vào bộ nhớ. Nó trả về một IAsyncEnumerable
và với System.linq.async (opens new window) Gói được cài đặt có thể được vận hành trên các phương thức LINQ quen thuộc.
# Helpers.UnpaginateAll
Điều này trả về một danh sách duy nhất các đối tượng bằng cách gọi nhiều lần phương thức yêu cầu được cung cấp cho đến khi tất cả các kết quả đã được thu thập. Điều này thường chỉ được sử dụng nếu Helpers.Unpaginate
không có sẵn. Một quá tải được cung cấp có chức năng chuyển đổi bổ sung, cho phép kết quả được chuyển đổi khi chúng đến trước khi được thêm vào danh sách.
# Helpers.GetPaginatedFirstOrDefault
Điều này trả về một kết quả duy nhất từ điểm cuối được phân trang. Nó có một hàm vị ngữ và trả về phản hồi đầu tiên phù hợp với vị ngữ.