# DDB .NET pelanggan
Pelanggan Microservices .NET DDB membolehkan akses kepada semua operasi DDB dalam bahasa seperti C#. Setiap microservice diakses menggunakan pakej NuGet yang berbeza.
Catatan untuk pengguna luaran - Banyak pautan dalam bahagian berikut merujuk kepada aplikasi dalaman. Sila bercakap dengan pasukan projek anda untuk mendapat sokongan.
# Prasyarat
- .NET
- Pelanggan ini mensasarkan .NET Standard 2.0. Lihat ini (opens new window) halaman untuk senarai versi .NET yang serasi.
- Sekiranya memulakan projek baru, mandiri, disarankan untuk menggunakan .NET 6, yang boleh dimuat turun dari Aplikasi arup (opens new window)
- Azure Artifak Pembekal Kredensial
- Ikut arahan di sini (opens new window)
- Kaedah yang disyorkan adalah menggunakan Skrip PowerShell Automatik (opens new window)
# Pemasangan
# nuget.config
Fail nuget.config
diperlukan untuk memasang pakej NUGET. Buat fail di sebelah fail .csproj
atau .sln
anda dengan kandungan berikut:
<?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>
# Pakej
Setiap microservice disediakan oleh pakej NuGet yang berbeza. Pakej boleh dipasang dengan arahan:
dotnet add package <package name> --interactive
Pakej yang ada ialah:
Arup.DDB.CommentsService
( Dokumen API (opens new window) )Arup.DDB.EnvironmentContextService
( Dokumen API (opens new window) )Arup.DDB.ParameterMetadataService
( Dokumen API (opens new window) )Arup.DDB.ParameterService
( Dokumen API (opens new window) )Arup.DDB.QAService
( Dokumen API (opens new window) )Arup.DDB.ReferenceDataService
( Dokumen API (opens new window) )Arup.DDB.UserService
( Dokumen API (opens new window) )
# Konfigurasi
Anda akan memerlukan Pendaftaran Aplikasi Azure AD (opens new window) Bagi pelanggan yang mengakses API. Anda perlu mengkonfigurasi skop dan URI redirect untuk permohonan anda.
# Skop
Skop dikonfigurasi pada halaman API permissions
. Ini boleh ditambah melalui Add a permission
, kemudian memilih APIS my organization uses
, dan akhirnya memilih DigitalDesignBriefAPI
. Kebenaran yang diperlukan ialah user_impersonation
. Sebaik sahaja anda telah menambah ini, mereka perlu diluluskan dengan Grant admin consent for Arup
yang perlu dilog masuk dalam tiket perkhidmatan.
# Redirect uri
Anda juga perlu mengkonfigurasi URI redirect untuk permohonan anda. Ini dilakukan pada halaman Authentication
. Untuk aplikasi desktop, pilih Add a platform
, kemudian Mobile and desktop applications
, dan akhirnya pilih https://login.microsoftonline.com/common/oauth2/nativeclient
. Untuk aplikasi lain, ikuti arahan pada halaman Authentication
.
# Penggunaan
Objek DDBClient mengkonfigurasi pengesahan dan persekitaran untuk setiap microservice. Setiap microservice yang dipasang kemudian boleh diminta menggunakan kaedah lanjutan pada klien. Pelaksanaan pengambilalihan token disediakan untuk aplikasi desktop. Aplikasi lain, seperti pelayan, perlu melaksanakan pengambilalihan token mereka sendiri dengan melaksanakan antara muka ITokenAcquisition
. Ini kemudiannya boleh dihantar ke DDBClient
atau DDBClientFactory
dalam pembina.
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);
}
# Kilang pelanggan
Kelas DDBClientFactory
juga disediakan, yang membolehkan penciptaan objek DDBClient
untuk persekitaran yang diberikan, sementara pengesahan dikendalikan oleh kilang. Ini berguna dalam senario di mana suntikan ketergantungan digunakan.
# Penomboran
Fungsi penolong dibekalkan untuk bekerja dengan titik akhir paginated. Ini terdapat dalam kelas statik Helpers
.
Fungsi penolong penomboran memudahkan berulang kali memanggil titik akhir untuk mengembalikan senarai hasil yang dipertahankan. Tandatangan contoh ialah:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
adalah fungsi yang melepasi parameter after
ke fungsi DDB, pada mulanya diluluskan null.
getInner
Mendapat koleksi dalaman dari tindak balas hasil.
getAfter
Mendapat kursor after
dari tindak balas hasil.
Sebagai contoh:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Ini boleh didapati dari .NET Core 3.1 dan disyorkan anda menggunakan ini apabila tersedia, kerana ia akan malas membuat setiap permintaan kerana ia diulang, dan bukannya perlu mengambil semua hasil ke dalam ingatan. Ia mengembalikan IAsyncEnumerable
, dan dengan System.linq.async (opens new window) Pakej yang dipasang boleh dikendalikan dengan kaedah LINQ yang biasa.
# Helpers.UnpaginateAll
Ini mengembalikan satu senarai objek dengan berulang kali memanggil kaedah permintaan yang disediakan sehingga semua hasil telah dikumpulkan. Ini biasanya hanya digunakan jika Helpers.Unpaginate
tidak tersedia. Kelebihan beban disediakan yang mengambil fungsi transformasi tambahan, yang membolehkan keputusan berubah ketika mereka masuk sebelum dimasukkan ke dalam senarai.
# Helpers.GetPaginatedFirstOrDefault
Ini mengembalikan satu hasil dari titik akhir yang dipertahankan. Ia memerlukan fungsi predikat dan mengembalikan tindak balas pertama yang sepadan dengan predikat.