# DDB .NET Cliente
El cliente DDB Microservices .NET permite el acceso a todas las operaciones DDB en idiomas como C#. Se accede a cada microservicio utilizando un paquete Nuget diferente.
Nota para usuarios externos - Muchos de los enlaces en la siguiente sección se refieren a aplicaciones internas. Hable con su equipo de proyecto para obtener apoyo.
# Requisitos previos
- .NET
- Estos clientes se dirigen a .NET estándar 2.0. Ver esta esto (opens new window) Página para una lista de versiones compatibles de .NET.
- Si se inicia un nuevo proyecto independiente, se recomienda usar .NET 6, que se puede descargar desde Aplicaciones arup (opens new window)
- Proveedor de credenciales de artefactos de Azure
- Seguir instrucciones aquí (opens new window)
- El método recomendado es usar el Script automático de PowerShell (opens new window)
# Instalación
# nuget.config
Se requiere un archivo nuget.config
para instalar los paquetes Nuget. Cree el archivo junto a su archivo .csproj
o .sln
con el siguiente contenido:
<?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>
# Paquetes
Cada microservicio es proporcionado por un paquete Nuget diferente. Los paquetes se pueden instalar con el comando:
dotnet add package <package name> --interactive
Los paquetes disponibles son:
Arup.DDB.CommentsService
( Documentos de API (opens new window) )Arup.DDB.EnvironmentContextService
( Documentos de API (opens new window) )Arup.DDB.ParameterMetadataService
( Documentos de API (opens new window) )Arup.DDB.ParameterService
( Documentos de API (opens new window) )Arup.DDB.QAService
( Documentos de API (opens new window) )Arup.DDB.ReferenceDataService
( Documentos de API (opens new window) )Arup.DDB.UserService
( Documentos de API (opens new window) )
# Configuración
Necesitarás un Registro de la aplicación de anuncios de Azure (opens new window) Para el cliente que accede a la API. Deberá configurar ámbitos y una URI de redirección para su aplicación.
# Escopas
Los ámbitos están configurados en la página API permissions
. Estos se pueden agregar a través de Add a permission
, luego seleccionando APIS my organization uses
y finalmente seleccionando DigitalDesignBriefAPI
. El permiso requerido es user_impersonation
. Una vez que haya agregado estos, deberán ser aprobados con Grant admin consent for Arup
que deberá registrarse en un boleto de servicio.
# Redirigir uri
También deberá configurar un URI de redirección para su aplicación. Esto se hace en la página Authentication
. Para aplicaciones de escritorio, seleccione Add a platform
, luego Mobile and desktop applications
y finalmente seleccione https://login.microsoftonline.com/common/oauth2/nativeclient
. Para otras aplicaciones, siga las instrucciones en la página Authentication
.
# Uso
El objeto DDBClient configura la autenticación y el entorno para cada microservicio. Cada microservicio instalado se puede solicitar utilizando los métodos de extensión del cliente. Se proporciona una implementación de la adquisición de token para aplicaciones de escritorio. Otras aplicaciones, como los servidores, deberán implementar su propia adquisición de tokens implementando la interfaz ITokenAcquisition
. Esto se puede pasar al DDBClient
o DDBClientFactory
en el constructor.
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);
}
# Fábrica de clientes
También se proporciona una clase DDBClientFactory
, que permite la creación de objetos DDBClient
para un entorno determinado, mientras que la fábrica maneja la autenticación. Esto puede ser útil en escenarios en los que se usa la inyección de dependencia.
# Paginación
Las funciones auxiliares se suministran para trabajar con puntos finales paginados. Estos se encuentran en la clase estática Helpers
.
Las funciones de Pagination Helper se simplifican repetidamente llamando a un punto final para devolver una lista paginada de resultados. Una firma de ejemplo es:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
es una función que pasa el parámetro after
a la función DDB, inicialmente se pasa nulo.
getInner
obtiene la colección interna de la respuesta de los resultados.
getAfter
Obtiene el cursor after
de la respuesta del resultado.
Por ejemplo:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Esto está disponible en .NET Core 3.1 y se recomienda que lo use cuando esté disponible, ya que hará cada solicitud perezosamente a medida que se itera, en lugar de tener que recuperar todos los resultados en la memoria. Devuelve un IAsyncEnumerable
, y con el System.Linq.Async (opens new window) El paquete instalado puede operarse con métodos LINQ familiares.
# Helpers.UnpaginateAll
Esto devuelve una sola lista de objetos llamando repetidamente al método de solicitud proporcionado hasta que se hayan recopilado todos los resultados. Esto generalmente solo debería usarse si Helpers.Unpaginate
no está disponible. Se proporciona una sobrecarga que toma una función de transformación adicional, lo que permite que los resultados se transformen a medida que entran antes de ser agregados a la lista.
# Helpers.GetPaginatedFirstOrDefault
Esto devuelve un solo resultado de un punto final paginado. Toma una función de predicado y devuelve la primera respuesta que coincide con el predicado.