# DDB .NET Klient
MicroServices DDB .NET Klient umożliwia dostęp do wszystkich operacji DDB w językach takich jak C#. Do każdej mikrousługów jest dostępny za pomocą innego pakietu Nuget.
Uwaga dla użytkowników zewnętrznych - Wiele linków w następnej sekcji patrz aplikacje wewnętrzne. Porozmawiaj ze swoim zespołem projektowym o wsparcie.
# Wymagania wstępne
- .NET
- Ci klienci są skierowane do .NET Standard 2.0. Widzieć Ten (opens new window) Strona listy kompatybilnych wersji .NET.
- Po uruchomieniu nowego, samodzielnego projektu zaleca się użycie .NET 6, z którego można pobrać z Aplikacje Arup (opens new window)
- Azure Artefacts Presentials dostawca
- Podążaj za wskazówkami Tutaj (opens new window)
- Zalecaną metodą jest użycie Automatyczny skrypt PowerShell (opens new window)
# Instalacja
# nuget.config
Do zainstalowania pakietów NuGet Plik nuget.config
jest wymagany. Utwórz plik obok swojego pliku .csproj
lub .sln
z następującą treścią:
<?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>
# Pakiety
Każda mikrousług jest dostarczana przez inny pakiet Nuget. Pakiety można zainstalować za pomocą polecenia:
dotnet add package <package name> --interactive
Dostępne pakiety to:
Arup.DDB.CommentsService
( Dokumenty API (opens new window) )Arup.DDB.EnvironmentContextService
( Dokumenty API (opens new window) )Arup.DDB.ParameterMetadataService
( Dokumenty API (opens new window) )Arup.DDB.ParameterService
( Dokumenty API (opens new window) )Arup.DDB.QAService
( Dokumenty API (opens new window) )Arup.DDB.ReferenceDataService
( Dokumenty API (opens new window) )Arup.DDB.UserService
( Dokumenty API (opens new window) )
# Konfiguracja
Będziesz potrzebować Rejestracja aplikacji Azure AD (opens new window) Dla klienta, który ma dostęp do interfejsu API. Będziesz musiał skonfigurować rozszczepienia i przekierowanie URI dla swojej aplikacji.
# Zakresy
Zakłady są skonfigurowane na stronie API permissions
. Można je dodać przez Add a permission
, a następnie wybór APIS my organization uses
, a na koniec wybór DigitalDesignBriefAPI
. Wymagane pozwolenie to user_impersonation
. Po ich dodaniu będą musiały zostać zatwierdzone z Grant admin consent for Arup
, które będą musiały zostać zarejestrowane w bilecie serwisowym.
# Przekieruj URI
Będziesz także musiał skonfigurować URI przekierowania dla swojej aplikacji. Odbywa się to na stronie Authentication
. W przypadku aplikacji komputerowych wybierz Add a platform
, a następnie Mobile and desktop applications
i na koniec wybierz https://login.microsoftonline.com/common/oauth2/nativeclient
. W przypadku innych aplikacji postępuj zgodnie z instrukcjami na stronie Authentication
.
# Stosowanie
Obiekt DDBClient konfiguruje uwierzytelnianie i środowisko dla każdej mikrousług. Każdej zainstalowanej mikrousług można następnie żądać za pomocą metod rozszerzenia na kliencie. Wdrożenie akwizycji tokena jest przewidziane do aplikacji komputerowych. Inne aplikacje, takie jak serwery, będą musiały wdrożyć własne pozyskiwanie tokenów poprzez wdrożenie interfejsu ITokenAcquisition
. Można to następnie przekazać do DDBClient
lub DDBClientFactory
w konstruktorze.
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);
}
# Fabryka klientów
Zapewniono również klasę DDBClientFactory
, która pozwala na tworzenie obiektów DDBClient
dla danego środowiska, podczas gdy uwierzytelnianie jest obsługiwane przez fabrykę. Może to być przydatne w scenariuszach, w których stosuje się wstrzyknięcie zależności.
# Paginacja
Funkcje pomocnicze są dostarczane do pracy z pagowanymi punktami końcowymi. Są one znalezione w klasie statycznej Helpers
.
Funkcje pomocnika paginacji upraszczają wielokrotnie wywołując punkt końcowy, aby zwrócić paginowaną listę wyników. Przykładową podpisem jest:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
jest funkcją, która przekazuje parametr after
do funkcji DDB, początkowo przekazywany null.
getInner
pobiera wewnętrzną kolekcję z odpowiedzi wyniku.
getAfter
pobiera kursor after
z odpowiedzi wyniku.
Na przykład:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Jest to dostępne z .NET Core 3.1 i zaleca się, aby użyć go, gdy jest dostępny, ponieważ leniwie złoży każde żądanie w miarę jego iteracji, zamiast pobierać wszystkie wyniki w pamięci. Zwraca IAsyncEnumerable
i z System.linq.async (opens new window) Zainstalowany pakiet może być obsługiwany ze znanymi metodami LINQ.
# Helpers.UnpaginateAll
Zwraca to pojedynczą listę obiektów poprzez wielokrotne wywołanie dostarczonej metody żądania, dopóki wszystkie wyniki nie zostaną zebrane. Powinno to być zasadniczo używane tylko wtedy, gdy Helpers.Unpaginate
nie jest dostępny. Podano przeciążenie, które przyjmuje dodatkową funkcję transformacji, umożliwiając transformację wyników w miarę wprowadzania ich przed dodaniem do listy.
# Helpers.GetPaginatedFirstOrDefault
Zwraca to jeden wynik z pagnowanego punktu końcowego. Pobiera funkcję predykatu i zwraca pierwszą odpowiedź, która pasuje do predykatu.