# DDB .NET Клиент
Клиент DDB Microservices .NET позволяет доступ ко всем операциям DDB на таких языках, как C#.
Доступ к каждому микросервису с использованием различного пакета 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>
# Пакеты
Каждый микросервис обеспечивается различным пакетом 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 Registration (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 настраивает аутентификацию и среду для каждого микросервиса. Каждое установленное микросервис может быть запрошено с помощью методов расширения на клиенте. Реализация приобретения токена предоставляется для настольных приложений. Другие приложения, такие как серверы, должны будут реализовать свое собственное приобретение токенов, внедрив интерфейс 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
.
Функции Helper Pagination неоднократно упрощают, вызывая конечную точку, чтобы вернуть лицензированный список результатов. Пример подписи:
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
Это возвращает один результат из лицевой конечной точки. Он принимает предикатую функцию и возвращает первый ответ, который соответствует предикату.