# DDB .NET Client
Der DDB Microservices .NET Client ermöglicht den Zugriff auf alle DDB -Vorgänge in Sprachen wie C#. Auf jeden Microservice wird mit einem anderen Nuget -Paket zugegriffen.
Hinweis für externe Benutzer - Viele der Links im folgenden Abschnitt beziehen sich auf interne Anwendungen. Bitte sprechen Sie mit Ihrem Projektteam zur Unterstützung.
# Voraussetzungen
- .NET
- Diese Clients zielen auf .NET Standard 2.0 ab. Sehen Das (opens new window) Seite für eine Liste der kompatiblen .NET -Versionen.
- Wenn Sie ein neues eigenständiges Projekt starten, wird empfohlen, .NET 6 zu verwenden, was heruntergeladen werden kann Arup -Apps (opens new window)
- Azure -Artefakte -Anbieteranbieter
- Instruktionen befolgen Hier (opens new window)
- Die empfohlene Methode besteht darin, die zu verwenden Automatisches PowerShell -Skript (opens new window)
# Installation
# nuget.config
Eine nuget.config
-Datei ist erforderlich, um die Nuget -Pakete zu installieren. Erstellen Sie die Datei neben Ihrer Datei .csproj
oder .sln
mit dem folgenden Inhalt:
<?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>
# Pakete
Jeder Microservice wird durch ein anderes Nuget -Paket bereitgestellt. Pakete können mit dem Befehl installiert werden:
dotnet add package <package name> --interactive
Die verfügbaren Pakete sind:
Arup.DDB.CommentsService
( API -Dokumente (opens new window) )Arup.DDB.EnvironmentContextService
( API -Dokumente (opens new window) )Arup.DDB.ParameterMetadataService
( API -Dokumente (opens new window) )Arup.DDB.ParameterService
( API -Dokumente (opens new window) )Arup.DDB.QAService
( API -Dokumente (opens new window) )Arup.DDB.ReferenceDataService
( API -Dokumente (opens new window) )Arup.DDB.UserService
( API -Dokumente (opens new window) )
# Aufbau
Sie brauchen eine Azure Ad App -Registrierung (opens new window) Für den Client, der auf die API zugreift. Sie müssen Bereiche und einen Umleitungs -URI für Ihre Anwendung konfigurieren.
# Bereiche
Die Scopes sind auf der Seite API permissions
konfiguriert. Diese können durch Add a permission
hinzugefügt werden, um APIS my organization uses
zu wählen und schließlich DigitalDesignBriefAPI
zu wählen. Die Erlaubnis ist user_impersonation
. Sobald Sie diese hinzugefügt haben, müssen sie mit Grant admin consent for Arup
genehmigt werden, um in einem Serviceticket angemeldet zu werden.
# Uri umleiten
Sie müssen auch einen Umleitungs -URI für Ihre Anwendung konfigurieren. Dies geschieht auf der Seite Authentication
. Für Desktop -Anwendungen wählen Sie Add a platform
, dann Mobile and desktop applications
und schließlich https://login.microsoftonline.com/common/oauth2/nativeclient
. Befolgen Sie für andere Anwendungen die Anweisungen auf der Seite Authentication
.
# Verwendung
Das DDBClient -Objekt konfiguriert die Authentifizierung und Umgebung für jeden Mikroservice. Jeder installierte Microservice kann dann mit den Erweiterungsmethoden im Client angefordert werden. Für Desktop -Anwendungen wird eine Implementierung der Token -Akquisition vorgesehen. Andere Anwendungen wie Server müssen ihre eigene Token -Akquisition implementieren, indem die Schnittstelle ITokenAcquisition
implementiert wird. Dies kann dann an DDBClient
oder DDBClientFactory
im Konstruktor übergeben werden.
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);
}
# Kundenfabrik
Es wird auch eine DDBClientFactory
-Klasse zur Verfügung gestellt, die die Erstellung von DDBClient
-Objekten für eine bestimmte Umgebung ermöglicht, während die Authentifizierung von der Fabrik behandelt wird. Dies kann in Szenarien nützlich sein, in denen die Abhängigkeitsinjektion verwendet wird.
# Seitennummerierung
Helferfunktionen werden für die Arbeit mit paginierten Endpunkten geliefert. Diese sind in der statischen Klasse Helpers
zu finden.
Die Pagination -Helferfunktionen vereinfachen wiederholt einen Endpunkt, um eine paginierte Liste von Ergebnissen zurückzugeben. Eine Beispielsignatur ist:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
ist eine Funktion, die den Parameter after
an die DDB -Funktion übergibt und zunächst null übergeben wird.
getInner
erhält die innere Sammlung aus der Ergebnisantwort.
getAfter
erhält den after
Cursor aus der Ergebnisantwort.
Zum Beispiel:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Dies ist ab .NET Core 3.1 erhältlich und es wird empfohlen, dies zu verwenden, wenn verfügbar, da sie jede Anfrage faul stellt, wenn sie iteriert wird, anstatt alle Ergebnisse in den Speicher abzurufen. Es gibt ein IAsyncEnumerable
und mit dem zurück System.linq.async (opens new window) Das installierte Paket kann mit bekannten LINQ -Methoden eingeschaltet werden.
# Helpers.UnpaginateAll
Dies gibt eine einzige Liste von Objekten zurück, indem die angegebene Anforderungsmethode wiederholt aufgerufen wird, bis alle Ergebnisse gesammelt wurden. Dies sollte im Allgemeinen nur verwendet werden, wenn Helpers.Unpaginate
nicht verfügbar ist. Es wird eine Überladung bereitgestellt, die eine zusätzliche Transformationsfunktion erfordert und die Ergebnisse ermöglicht, die mit der Liste hinzugefügt zu werden.
# Helpers.GetPaginatedFirstOrDefault
Dies gibt ein einziges Ergebnis aus einem paginierten Endpunkt zurück. Es erfordert eine Prädikatfunktion und gibt die erste Antwort zurück, die dem Prädikat entspricht.