# Cliente DDB .NET
Il client DDB Microservices .NET consente l'accesso a tutte le operazioni DDB in linguaggi come C#. A ciascun microservizio si accede utilizzando un diverso pacchetto NuGet.
Nota per gli utenti esterni - Molti dei collegamenti nella sezione seguente si riferiscono alle applicazioni interne. Si prega di parlare con il tuo team di progetto per il supporto.
# Prerequisiti
- .NET
- Questi clienti target .NET Standard 2.0. Vedere questa questo (opens new window) Pagina per un elenco di versioni compatibili .NET.
- Se si avvia un nuovo progetto autonomo si consiglia di utilizzare .NET 6, che può essere scaricato da App Arup (opens new window)
- Artefatti Azure Provider di credenziali
- Segui le istruzioni Qui (opens new window)
- Il metodo consigliato è utilizzare il Script di Powershell automatico (opens new window)
# Installazione
# nuget.config
È necessario un file nuget.config
per installare i pacchetti NuGet. Crea il file accanto al file .csproj
o .sln
con i seguenti contenuti:
<?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>
# Pacchetti
Ogni microservizio è fornito da un diverso pacchetto Nuget. I pacchetti possono essere installati con il comando:
dotnet add package <package name> --interactive
I pacchetti disponibili sono:
Arup.DDB.CommentsService
( Documenti API (opens new window) )Arup.DDB.EnvironmentContextService
( Documenti API (opens new window) )Arup.DDB.ParameterMetadataService
( Documenti API (opens new window) )Arup.DDB.ParameterService
( Documenti API (opens new window) )Arup.DDB.QAService
( Documenti API (opens new window) )Arup.DDB.ReferenceDataService
( Documenti API (opens new window) )Arup.DDB.UserService
( Documenti API (opens new window) )
# Configurazione
Avrai bisogno di un Registrazione dell'app Azure AD (opens new window) per il cliente che accede all'API. Dovrai configurare gli ambiti e un URI di reindirizzamento per la tua applicazione.
# Scopi
Gli ambiti sono configurati sulla pagina API permissions
. Questi possono essere aggiunti tramite Add a permission
, quindi selezionando APIS my organization uses
e infine selezionando DigitalDesignBriefAPI
. L'autorizzazione richiesta è user_impersonation
. Una volta aggiunti questi, dovranno essere approvati con Grant admin consent for Arup
che dovrà essere registrato in un ticket di servizio.
# Reindirizza l'URI
Dovrai anche configurare un URI di reindirizzamento per l'applicazione. Questo viene fatto sulla pagina Authentication
. Per le applicazioni desktop, selezionare Add a platform
, quindi Mobile and desktop applications
e infine selezionare https://login.microsoftonline.com/common/oauth2/nativeclient
. Per altre applicazioni, seguire le istruzioni sulla pagina Authentication
.
# Utilizzo
L'oggetto DDBClient configura l'autenticazione e l'ambiente per ciascun microservizio. Ogni microservizio installato può quindi essere richiesto utilizzando i metodi di estensione sul client. Un'implementazione dell'acquisizione di token è fornita per le applicazioni desktop. Altre applicazioni, come i server, dovranno implementare la propria acquisizione di token implementando l'interfaccia ITokenAcquisition
. Questo può quindi essere passato a DDBClient
o DDBClientFactory
nel costruttore.
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);
}
# Fabbrica di clienti
Viene inoltre fornita una classe DDBClientFactory
, che consente la creazione di oggetti DDBClient
per un determinato ambiente, mentre l'autenticazione viene gestita dalla fabbrica. Ciò può essere utile negli scenari in cui viene utilizzata l'iniezione di dipendenza.
# Impaginazione
Le funzioni di supporto sono fornite per lavorare con endpoint paginati. Questi si trovano nella classe statica Helpers
.
Le funzioni di helper di impaginazione semplificano ripetutamente chiamando un endpoint per restituire un elenco paginato di risultati. Un esempio di firma è:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
è una funzione che passa il parametro after
alla funzione DDB, inizialmente passata null.
getInner
ottiene la raccolta interna dalla risposta del risultato.
getAfter
ottiene il cursore after
dalla risposta dei risultati.
Per esempio:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Questo è disponibile da .NET Core 3.1 e si consiglia di usarlo quando disponibile, poiché farà pigramente ogni richiesta in quanto è iterata, piuttosto che dover recuperare tutti i risultati in memoria. Restituisce un IAsyncEnumerable
e con il System.linq.Async (opens new window) Il pacchetto installato può essere gestito con metodi LINQ familiari.
# Helpers.UnpaginateAll
Ciò restituisce un unico elenco di oggetti chiamando ripetutamente il metodo di richiesta fornito fino a quando non sono stati raccolti tutti i risultati. Questo dovrebbe essere generalmente usato solo se Helpers.Unpaginate
non è disponibile. Viene fornito un sovraccarico che assume una funzione di trasformazione aggiuntiva, consentendo di trasformare i risultati mentre arrivano prima di essere aggiunti all'elenco.
# Helpers.GetPaginatedFirstOrDefault
Ciò restituisce un singolo risultato da un endpoint paginato. Prende una funzione predicata e restituisce la prima risposta che corrisponde al predicato.