# Cleient ddb .NET
Mae'r Cleient Microservices .NET DDB yn caniatáu mynediad i bob gweithrediad DDB mewn ieithoedd fel C#. Gellir cyrchu pob microservice gan ddefnyddio pecyn NuGet gwahanol.
Nodyn ar gyfer defnyddwyr allanol - Mae llawer o'r dolenni yn yr adran ganlynol yn cyfeirio at gymwysiadau mewnol. Siaradwch â'ch tîm prosiect i gael cefnogaeth.
# Rhagofynion
- .NET
- Mae'r cleientiaid hyn yn targedu .NET safonol 2.0. Gweler hyn (opens new window) Tudalen ar gyfer rhestr o fersiynau cydnaws .NET.
- Os ydych chi'n cychwyn prosiect annibynnol newydd, argymhellir defnyddio .NET 6, y gellir ei lawrlwytho o Apiau arup (opens new window)
- Azure Arteffactau Darparwr Credential
- Dilynwch Gyfarwyddiadau yma (opens new window)
- Y dull a argymhellir yw defnyddio'r Sgript PowerShell Awtomatig (opens new window)
# Gosodiadau
# nuget.config
Mae angen ffeil nuget.config
i osod y pecynnau NuGet. Creu’r ffeil wrth ymyl eich ffeil .csproj
neu .sln
gyda’r cynnwys canlynol:
<?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>
# Pecynnau
Darperir pob microservice gan becyn NuGet gwahanol. Gellir gosod pecynnau gyda'r gorchymyn:
dotnet add package <package name> --interactive
Y pecynnau sydd ar gael yw:
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) ))
# Chyfluniadau
Bydd angen Cofrestru Ap Azure Ad (opens new window) ar gyfer y cleient sy'n cyrchu'r API. Bydd angen i chi ffurfweddu sgopiau ac URI ailgyfeirio ar gyfer eich cais.
# Sgopiau
Mae'r sgopiau wedi'u ffurfweddu ar y dudalen API permissions
. Gellir ychwanegu'r rhain trwy Add a permission
, yna dewis APIS my organization uses
, ac yn olaf dewis DigitalDesignBriefAPI
. Y caniatâd sy'n ofynnol yw user_impersonation
. Ar ôl i chi ychwanegu'r rhain, bydd angen eu cymeradwyo gyda Grant admin consent for Arup
y bydd angen eu mewngofnodi mewn tocyn gwasanaeth.
# Ailgyfeirio uri
Bydd angen i chi hefyd ffurfweddu URI ailgyfeirio ar gyfer eich cais. Gwneir hyn ar y dudalen Authentication
. Ar gyfer cymwysiadau bwrdd gwaith, dewiswch Add a platform
, yna Mobile and desktop applications
, ac yn olaf dewis https://login.microsoftonline.com/common/oauth2/nativeclient
. Ar gyfer cymwysiadau eraill, dilynwch y cyfarwyddiadau ar y dudalen Authentication
.
# Nefnydd
Mae'r gwrthrych DDBClient yn ffurfweddu'r dilysiad a'r amgylchedd ar gyfer pob microservice. Yna gellir gofyn am bob microservice wedi'i osod gan ddefnyddio'r dulliau estyn ar y cleient. Darperir gweithrediad y caffaeliad symbolaidd ar gyfer cymwysiadau bwrdd gwaith. Bydd angen i geisiadau eraill, fel gweinyddwyr, weithredu eu caffaeliad tocyn eu hunain trwy weithredu'r rhyngwyneb ITokenAcquisition
. Yna gellir pasio hwn i'r DDBClient
neu DDBClientFactory
yn yr adeiladwr.
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);
}
# Ffatri cleientiaid
Darperir dosbarth DDBClientFactory
hefyd, sy'n caniatáu creu gwrthrychau DDBClient
ar gyfer amgylchedd penodol, tra bod y ffatri yn trin dilysu. Gall hyn fod yn ddefnyddiol mewn senarios lle defnyddir chwistrelliad dibyniaeth.
# Thudaleniad
Mae swyddogaethau cynorthwyydd yn cael eu cyflenwi ar gyfer gweithio gyda phwyntiau terfyn wedi'u tudalen. Mae'r rhain i'w cael yn y dosbarth statig Helpers
.
Mae'r swyddogaethau cynorthwyydd pasio yn symleiddio gan alw pwynt terfyn dro ar ôl tro i ddychwelyd rhestr o ganlyniadau wedi'u pasio. Llofnod enghreifftiol yw:
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
Mae requestFunction
yn swyddogaeth sy'n pasio'r paramedr after
i'r swyddogaeth DDB, gan gael ei phasio i ddechrau.
getInner
Yn cael y casgliad mewnol o'r ymateb canlyniad.
getAfter
Yn cael y cyrchwr after
o'r ymateb canlyniad.
Er enghraifft:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
Mae hwn ar gael o .NET Craidd 3.1 ac argymhellir eich bod yn defnyddio hwn pan fydd ar gael, gan y bydd yn diog yn gwneud pob cais gan ei fod wedi'i ailadrodd, yn hytrach na gorfod adfer yr holl ganlyniadau i'r cof. Mae'n dychwelyd IAsyncEnumerable
, a chyda'r System.linq.async (opens new window) Gellir gweithredu pecyn wedi'i osod gyda dulliau LINQ cyfarwydd.
# Helpers.UnpaginateAll
Mae hyn yn dychwelyd rhestr sengl o wrthrychau trwy alw'r dull cais a ddarperir dro ar ôl tro nes bod yr holl ganlyniadau wedi'u casglu. Yn gyffredinol, dim ond os nad yw Helpers.Unpaginate
ar gael y dylid defnyddio hyn. Darperir gorlwytho sy'n cymryd swyddogaeth trawsnewid ychwanegol, gan ganiatáu i ganlyniadau gael eu trawsnewid wrth iddynt ddod i mewn cyn cael eu hychwanegu at y rhestr.
# Helpers.GetPaginatedFirstOrDefault
Mae hyn yn dychwelyd canlyniad sengl o ddiweddbwynt wedi'i dudalen. Mae'n cymryd swyddogaeth ragfynegol ac yn dychwelyd yr ymateb cyntaf sy'n cyd -fynd â'r rhagfynegiad.