# ДДБ .NET клијент
ДДБ микросервисни .NET Клијент омогућава приступ свим ддб операцијама на језицима као што су Ц #.
Сваком микросервице се приступа другом НУГЕТ пакетом.
Напомена за спољне кориснике - Многе везе у следећем одељку односе се на интерне апликације. Молимо разговарајте са својим пројектним тимом за подршку.
# Предуслови
.NET
Ови клијенти су циљали .NET Стандард 2.0. Видети ово (opens new window) Страница за листу компатибилних .NET верзија.
Ако започињете нови, самостални пројекат, препоручује се употреба .NET 6, а који се могу преузети са Аруп апликације (opens new window)
Азуре Артифацтс Акредитивљач
Следите упутства овде (opens new window)
Препоручена метода је употреба Аутоматски скрипт ПоверСхелл (opens new window)
# Уградња
# nuget.config
Датотека nuget.config
потребна је за инсталирање НУГЕТ пакета. Креирајте датотеку поред датотеке вашег .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>
# Пакети
Сваки микросервис обезбеђује другачији НУГЕТ пакет. Пакети се могу инсталирати са командом:
dotnet add package <package name> --interactive
Доступни пакети су:
Arup.DDB.CommentsService
( АПИ документи (opens new window) )Arup.DDB.EnvironmentContextService
( АПИ документи (opens new window) )Arup.DDB.ParameterMetadataService
( АПИ документи (opens new window) )Arup.DDB.ParameterService
( АПИ документи (opens new window) )Arup.DDB.QAService
( АПИ документи (opens new window) )Arup.DDB.ReferenceDataService
( АПИ документи (opens new window) )Arup.DDB.UserService
( АПИ документи (opens new window) )
# Конфигурација
Требаће вам Регистрација апликације Азуре АД (opens new window) за клијента који приступа АПИ-у. Морате да конфигуришете скоке и преусмеравање УРИ за своју пријаву.
# Лопови
Окопи су конфигурисани на страници API permissions
. Они се могу додати кроз Add a permission
, а затим одабрати APIS my organization uses
и коначно одабрати DigitalDesignBriefAPI
. Потребна дозвола је user_impersonation
. Једном када их додате, мораће да буду одобрени са Grant admin consent for Arup
које ће требати да се пријаве у сервисној карту.
# Преусмеравање ури
Такође ћете морати да конфигуришете преусмеравање УРИ за своју пријаву. То се ради на страници Authentication
. За десктоп апликације изаберите Add a platform
, а затим Mobile and desktop applications
и на крају одаберите https://login.microsoftonline.com/common/oauth2/nativeclient
. За остале апликације, следите упутства на страници Authentication
.
# Употреба
ДДБЦлиент објект конфигурише аутентификацију и животну средину за сваки микросервис. Сваки инсталирани микросервис се затим може тражити коришћењем метода проширења на клијенту. Примјена аквизиције токена предвиђена је за на радне површине. Остале апликације, попут сервера, мораће да спроведу сопствену аквизицију токена спроводећи 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
на функцију ддба, у почетку се прослеђује нула.
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 цоре 3.1 и препоручује се да користите ово када је доступно, јер ће се лазитно натјерати сваки захтев како је иниран, а не да преузме све резултате у меморију. Враћа IAsyncEnumerable
, и са Систем.линк.асинц (opens new window) Инсталирани пакет се може управљати са познатим Линк методама.
# Helpers.UnpaginateAll
Ово враћа јединствену листу предмета више пута позивајући на датину методу захтева док сви резултати нису прикупљени. То би се генерално требало користити само ако Helpers.Unpaginate
није доступан. Омогућено је преоптерећење које предузима додатну функцију трансформације, омогућавајући трансформисање резултата док се улазе пре него што су додали на листу.
# Helpers.GetPaginatedFirstOrDefault
Ово враћа један резултат од страницене крајње тачке. Потребна је предикатна функција и враћа први одговор који одговара предикату.