# Client DDB .NET
Le client DDB Microservices .NET permet d'accéder à toutes les opérations DDB dans des langages tels que C #. Chaque microservice est accessible à l'aide d'un ensemble NUGET différent.
Remarque pour les utilisateurs externes - De nombreux liens de la section suivante se réfèrent aux applications internes. Veuillez parler à votre équipe de projet pour obtenir un soutien.
# Conditions préalables
- .NET
- Ces clients ciblent .NET Standard 2.0. Voir cette ce (opens new window) Page pour une liste de versions compatibles .NET.
- Si vous démarrez un nouveau projet autonome, il est recommandé d'utiliser .NET 6, qui peut être téléchargé à partir de Applications ARUP (opens new window)
- Azure Artefacts Procession Provider
- Suivre les instructions ici (opens new window)
- La méthode recommandée consiste à utiliser le Script PowerShell automatique (opens new window)
# Installation
# nuget.config
Un fichier nuget.config
est nécessaire pour installer les packages NuGet. Créez le fichier à côté de votre fichier .csproj
ou .sln
avec le contenu suivant:
<?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>
# Paquets
Chaque microservice est fourni par un autre ensemble NuGet. Les packages peuvent être installés avec la commande:
dotnet add package <package name> --interactive
Les forfaits disponibles sont:
Arup.DDB.CommentsService
( Docs API (opens new window) )Arup.DDB.EnvironmentContextService
( Docs API (opens new window) )Arup.DDB.ParameterMetadataService
( Docs API (opens new window) )Arup.DDB.ParameterService
( Docs API (opens new window) )Arup.DDB.QAService
( Docs API (opens new window) )Arup.DDB.ReferenceDataService
( Docs API (opens new window) )Arup.DDB.UserService
( Docs API (opens new window) )
# Configuration
Vous aurez besoin d'un Enregistrement des applications Azure AD (opens new window) pour le client qui accéde à l'API. Vous devrez configurer des lunettes et un URI de redirection pour votre application.
# Portées
Les étendues sont configurées sur la page API permissions
. Ceux-ci peuvent être ajoutés via Add a permission
, puis en sélectionnant APIS my organization uses
, et enfin en sélectionnant DigitalDesignBriefAPI
. L'autorisation requise est user_impersonation
. Une fois que vous les avez ajoutés, ils devront être approuvés avec Grant admin consent for Arup
qui devra être enregistré dans un billet de service.
# Rediriger uri
Vous devrez également configurer un URI de redirection pour votre application. Cela se fait sur la page Authentication
. Pour les applications de bureau, sélectionnez Add a platform
, puis Mobile and desktop applications
, et enfin sélectionnez https://login.microsoftonline.com/common/oauth2/nativeclient
. Pour d'autres applications, suivez les instructions sur la page Authentication
.
# Usage
L'objet DDBClient configure l'authentification et l'environnement pour chaque microservice. Chaque microservice installé peut ensuite être demandé en utilisant les méthodes d'extension du client. Une implémentation de l'acquisition de jetons est fournie pour les applications de bureau. D'autres applications, telles que des serveurs, devront mettre en œuvre leur propre acquisition de jetons en implémentant l'interface ITokenAcquisition
. Cela peut ensuite être transmis au DDBClient
ou DDBClientFactory
dans le constructeur.
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);
}
# Usine de clients
Une classe DDBClientFactory
est également fournie, ce qui permet la création d'objets DDBClient
pour un environnement donné, tandis que l'authentification est gérée par l'usine. Cela peut être utile dans les scénarios où l'injection de dépendance est utilisée.
# Pagination
Les fonctions d'assistance sont fournies pour travailler avec des points de terminaison paginés. Ceux-ci se trouvent dans la classe statique Helpers
.
Les fonctions de l'assistance de pagination simplifient à plusieurs reprises un point de terminaison pour renvoyer une liste de résultats paginée. Un exemple de signature est:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
est une fonction qui passe le paramètre after
à la fonction DDB, étant initialement passé nul.
getInner
obtient la collection intérieure de la réponse du résultat.
getAfter
obtient le curseur after
de la réponse du résultat.
Par exemple:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Ceci est disponible auprès de .NET Core 3.1 et il est recommandé de l'utiliser lorsqu'il est disponible, car il fera paresseusement chaque demande telle qu'elle est itérée, plutôt que d'avoir à récupérer tous les résultats en mémoire. Il renvoie un IAsyncEnumerable
, et avec le System.Linq.Async (opens new window) Le package installé peut être utilisé avec des méthodes LINQ familières.
# Helpers.UnpaginateAll
Cela renvoie une seule liste d'objets en appelant à plusieurs reprises la méthode de demande fournie jusqu'à ce que tous les résultats aient été collectés. Cela ne doit généralement être utilisé que si Helpers.Unpaginate
n'est pas disponible. Une surcharge est fournie qui prend une fonction de transformation supplémentaire, permettant de transformer les résultats au fur et à mesure qu'ils arrivent avant d'être ajoutés à la liste.
# Helpers.GetPaginatedFirstOrDefault
Cela renvoie un seul résultat d'un point de terminaison paginé. Il prend une fonction de prédicat et renvoie la première réponse qui correspond au prédicat.