# 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
이것은 페이지 진화 된 엔드 포인트에서 단일 결과를 반환합니다. 술어 함수가 필요하고 술어와 일치하는 첫 번째 응답을 반환합니다.