# DDB .NET klient
DDB -mikroservices .NET klient giver adgang til alle DDB -operationer på sprog som C#. Hver mikroservice er tilgængelig ved hjælp af en anden Nuget -pakke.
Bemærk til eksterne brugere - Mange af linkene i det følgende afsnit henviser til interne applikationer. Tal venligst til dit projektteam for support.
# Forudsætninger
- .NET
- Disse klienter er målrettet mod .NET Standard 2.0. Se det her (opens new window) Side til en liste over kompatible .NET versioner.
- Hvis det starter et nyt, standalone -projekt, anbefales det at bruge .NET 6, som kan downloades fra Arup -apps (opens new window)
- Azure Artifacts Credential Provider
- Følg instruktionerne her (opens new window)
- Den anbefalede metode er at bruge Automatisk PowerShell -script (opens new window)
# Installation
# nuget.config
En nuget.config
-fil er påkrævet for at installere Nuget -pakkerne. Opret filen ved siden af din .csproj
eller .sln
fil med følgende indhold:
<?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>
# Pakker
Hver mikroservice leveres af en anden Nuget -pakke. Pakker kan installeres med kommandoen:
dotnet add package <package name> --interactive
De tilgængelige pakker er:
Arup.DDB.CommentsService
( API -dokumenter (opens new window) )Arup.DDB.EnvironmentContextService
( API -dokumenter (opens new window) )Arup.DDB.ParameterMetadataService
( API -dokumenter (opens new window) )Arup.DDB.ParameterService
( API -dokumenter (opens new window) )Arup.DDB.QAService
( API -dokumenter (opens new window) )Arup.DDB.ReferenceDataService
( API -dokumenter (opens new window) )Arup.DDB.UserService
( API -dokumenter (opens new window) )
# Konfiguration
Du har brug for en Azure Ad App -registrering (opens new window) For den klient, der får adgang til API. Du bliver nødt til at konfigurere scopes og en omdirigering URI til din ansøgning.
# Omfang
Scopes er konfigureret på API permissions
-siden. Disse kan tilføjes via Add a permission
, derefter vælge APIS my organization uses
og til sidst vælge DigitalDesignBriefAPI
. Den krævede tilladelse er user_impersonation
. Når du har tilføjet disse, skal de godkendes med Grant admin consent for Arup
, som skal logges i en servicebillet.
# Omdirigere URI
Du bliver også nødt til at konfigurere en omdirigering URI til din ansøgning. Dette gøres på Authentication
-siden. For desktop -applikationer skal du vælge Add a platform
, derefter Mobile and desktop applications
, og til sidst vælge https://login.microsoftonline.com/common/oauth2/nativeclient
. For andre applikationer skal du følge instruktionerne på Authentication
-siden.
# Brug
DDBClient -objektet konfigurerer godkendelsen og miljøet for hver mikroservice. Hver installeret mikroservice kan derefter anmodes om ved hjælp af udvidelsesmetoderne på klienten. En implementering af Token -erhvervelsen leveres til desktop -applikationer. Andre applikationer, såsom servere, bliver nødt til at implementere deres egen token -erhvervelse ved at implementere ITokenAcquisition
interface. Dette kan derefter overføres til DDBClient
eller DDBClientFactory
i konstruktøren.
string clientId = "";
var ddbClient = new DDBClient(Environment.Sandbox, clientId);
var commentsService = ddbClient.GetCommentsService();
foreach (var comment in (await commentsService.GetCommentsAsync()).Comments)
{
Console.WriteLine(comment.Content);
}
# Klientfabrik
En DDBClientFactory
-klasse leveres også, som tillader oprettelse af DDBClient
objekter til et givet miljø, mens godkendelse håndteres af fabrikken. Dette kan være nyttigt i scenarier, hvor der bruges afhængighedsinjektion.
# Pagination
Hjælperfunktioner leveres til at arbejde med paginerede slutpunkter. Disse findes i Helpers
statisk klasse.
Paginationshjælperfunktionerne forenkler gentagne gange at kalde et slutpunkt for at returnere en pagineret liste over resultater. Et eksempel på signatur er:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
er en funktion, der passerer parameteren after
til DDB -funktionen, der oprindeligt blev sendt null.
getInner
får den indre samling fra resultatets respons.
getAfter
får after
markøren fra resultatets respons.
For eksempel:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Dette er tilgængeligt fra .NET Core 3.1, og det anbefales, at du bruger dette, når det er tilgængeligt, da det doven gør hver anmodning, da den er itereret, snarere end at skulle hente alle resultaterne i hukommelsen. Det returnerer en IAsyncEnumerable
og med System.linq.async (opens new window) Installeret pakke kan betjenes på med velkendte LINQ -metoder.
# Helpers.UnpaginateAll
Dette returnerer en enkelt liste over objekter ved gentagne gange at kalde den angivne anmodningsmetode, indtil alle resultater er blevet indsamlet. Dette bør generelt kun bruges, hvis Helpers.Unpaginate
ikke er tilgængelig. Der tilvejebringes en overbelastning, der tager en yderligere transformationsfunktion, hvilket gør det muligt at transformere resultater, når de kommer ind, før de føjes til listen.
# Helpers.GetPaginatedFirstOrDefault
Dette returnerer et enkelt resultat fra et pagineret slutpunkt. Det tager en predikatfunktion og returnerer det første svar, der matcher predikatet.