# DDB .NET 클라이언트
DDB 마이크로 서비스 .NET 클라이언트는 C#과 같은 언어로 모든 DDB 작업에 액세스 할 수 있습니다. 각 마이크로 서비스는 다른 NUGET 패키지를 사용하여 액세스합니다.
외부 사용자의 참고 사항 - 다음 섹션의 많은 링크는 내부 응용 프로그램을 나타냅니다. 지원을 위해 프로젝트 팀에 문의하십시오.
# 전제 조건
- .NET
- 이 클라이언트는 .NET 표준 2.0을 대상으로합니다. 보다 이것 (opens new window) 호환 가능한 .NET 버전 목록의 페이지.
- 새로운 독립형 프로젝트를 시작하는 경우 .NET 6을 사용하는 것이 좋습니다. ARUP 앱 (opens new window)
- Azure Artifacts 자격 증명 제공자
- 설명을 따르세요 여기 (opens new window)
- 권장 방법은 사용하는 것입니다 자동 PowerShell 스크립트 (opens new window)
# 설치
# nuget.config
Nuget 패키지를 설치하려면 nuget.config
파일이 필요합니다. 다음 내용이있는 .csproj
또는 .sln
파일 옆에 파일을 만듭니다.
<?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>
# 패키지
각 마이크로 서비스는 다른 NUGET 패키지로 제공됩니다. 패키지는 명령으로 설치할 수 있습니다.
dotnet add package <package name> --interactive
사용 가능한 패키지는 다음과 같습니다.
Arup.DDB.CommentsService
( API 문서 (opens new window) ))Arup.DDB.EnvironmentContextService
( API 문서 (opens new window) ))Arup.DDB.ParameterMetadataService
( API 문서 (opens new window) ))Arup.DDB.ParameterService
( API 문서 (opens new window) ))Arup.DDB.QAService
( API 문서 (opens new window) ))Arup.DDB.ReferenceDataService
( API 문서 (opens new window) ))Arup.DDB.UserService
( API 문서 (opens new window) ))
# 구성
당신은 필요할 것입니다 Azure AD 앱 등록 (opens new window) API에 액세스하는 클라이언트의 경우 응용 프로그램에 대한 스코프 및 리디렉션 URI를 구성해야합니다.
# 스코프
스코프는 API permissions
페이지에서 구성됩니다. 이것들은 Add a permission
를 통해 추가 한 다음 APIS my organization uses
를 선택하고 마지막으로 DigitalDesignBriefAPI
를 선택할 수 있습니다. 필요한 권한은 user_impersonation
입니다. 이를 추가하면 서비스 티켓에 로그인 해야하는 Grant admin consent for Arup
로 승인해야합니다.
# URI를 리디렉션하십시오
또한 응용 프로그램에 대한 리디렉션 URI를 구성해야합니다. 이것은 Authentication
페이지에서 수행됩니다. 데스크탑 응용 프로그램의 경우 Add a platform
, Mobile and desktop applications
를 선택하고 마지막으로 https://login.microsoftonline.com/common/oauth2/nativeclient
를 선택하십시오. 다른 응용 프로그램의 경우 Authentication
페이지의 지침을 따르십시오.
# 용법
ddbclient 객체는 각 마이크로 서비스의 인증 및 환경을 구성합니다. 그런 다음 설치된 각 마이크로 서비스는 클라이언트의 확장 메소드를 사용하여 요청할 수 있습니다. 데스크탑 애플리케이션에는 토큰 획득 구현이 제공됩니다. 서버와 같은 다른 응용 프로그램은 ITokenAcquisition
인터페이스를 구현하여 자체 토큰 획득을 구현해야합니다. 그런 다음 생성자의 DDBClient
또는 DDBClientFactory
로 전달할 수 있습니다.
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);
}
# 고객 공장
DDBClientFactory
클래스도 제공되어 주어진 환경에 대한 DDBClient
객체를 생성 할 수 있으며 인증은 공장에서 처리됩니다. 이는 종속성 주입이 사용되는 시나리오에서 유용 할 수 있습니다.
# 쪽수 매기기
휴대 한 엔드 포인트 작업을 위해 도우미 기능이 제공됩니다. 이것들은 Helpers
정적 클래스에 있습니다.
Pagination 헬퍼 기능은 엔드 포인트를 반복적으로 호출하여 Paginated 결과 목록을 반환하기 위해 반복적으로 단순화합니다. 예제 서명은 다음과 같습니다.
IAsyncEnumerable<O> Unpaginate<T, O>(RequestFunction<T> requestFunction, Func<T, IEnumerable<O>> getInner, Func<T, string> getAfter)
requestFunction
는 after
매개 변수를 DDB 함수로 전달하는 함수입니다.
getInner
는 결과 응답에서 내부 컬렉션을 가져옵니다.
getAfter
는 결과 응답에서 after
커서를 가져옵니다.
예를 들어:
var results = Helpers.Unpaginate(
after => parameterService.GetAllParametersAsync(after: after, project_id: projectId),
t => t.Parameters,
t => t?.Paging?.Cursors?.After
);
# Helpers.Unpaginate
이것은 .NET Core 3.1에서 사용할 수 있으며 가능한 경우 사용하는 것이 좋습니다. 모든 결과를 메모리로 검색하지 않고 반복되므로 각 요청을 게으르게 만들기 때문에이를 사용하는 것이 좋습니다. IAsyncEnumerable
를 반환합니다 System.linq.async (opens new window) 설치된 패키지는 친숙한 LINQ 방법으로 작동 할 수 있습니다.
# Helpers.UnpaginateAll
이것은 모든 결과가 수집 될 때까지 제공된 요청 메소드를 반복적으로 호출하여 단일 객체 목록을 반환합니다. 일반적으로 Helpers.Unpaginate
를 사용할 수없는 경우에만 사용해야합니다. 추가 변환 함수를 취하는 오버로드가 제공되어 목록에 추가되기 전에 결과가 전환 될 수 있습니다.
# Helpers.GetPaginatedFirstOrDefault
이것은 페이지 진화 된 엔드 포인트에서 단일 결과를 반환합니다. 술어 함수가 필요하고 술어와 일치하는 첫 번째 응답을 반환합니다.