-
PowerApps-Samples DataverseSDK 예제설명 1 - WhoAmIC# 2022. 6. 23. 12:40728x90
PowerApps-Samples DataverseSDK 예제설명 1 - WhoAmI
Dataverse SDK의 Core 3.1 이상을 지원하기 위한 SDK의 공식 사용예제에 대해 설명한다. 해당 소스는 Github 사이트에서 직접 받아볼 수 있다. 여기서는 접속되어 할당된 ID를 확인 할 수 있는 WhoAmI 프로젝트에 대해 알아본다.
프로젝트 세팅 확인
여기서는 Visual Studio 2022가 설치되어 있다는 가정하에 설명한다. VSCode등을 사용하는 사용자와는 조금 차이가 있을 수 있다.
- 우선 한가지 이상의 인증을 갖추어야 해당 SDK를 사용가능하다. Azure AD를 이용한 것은 Azure AD App등록에서 확인하자
- Visual Studio 사용자라면
ServiceClient.sln
파일을 열어 Visual Studio를 실행한다. - 프로젝트 세팅 파일로 사용할
appsettings.json
파일을 확인하면 프로젝트를 빌드시 생성이 가능하도록 '출력 디렉토리로 복사'가 새 버전이면 복사로 되어 있는 것을 확인 가능하다. 만약 Visual Studio를 사용하지 않는다면 .csproj 파일을 열어<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
가 되어있는것을 확인하면 된다.
- 해당 프로젝트의 'Nuget 패키지 관리자'를 열어 Dataverse의 연결을 위한
Microsoft.PowerPlatform.Dataverse.Client
와 설정을 위한Microsoft.Extensions.Configuration
,Microsoft.Extensions.Configuration.Json
이 설치되어있는 것을 확인한다.
appsettings.json
파일을 열어보자. 다음과 같이 되어있다.
.csproj{ "ConnectionStrings": { "default": "AuthType=OAuth;Url=https://myorg.crm.dynamics.com;Username=someone@myorg.onmicrosoft.com;RedirectUri=http://localhost;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;LoginPrompt=Auto" }, "Logging": { "LogLevel": { "Default": "Trace" } } }
- 위의 Json에서
ConnectionStrings
의default
를 살펴보자 여기서 설정한 보안 정책에 맞는 Dataverse 연결문자열을 입력한다. Oauth와 ClinetSecret 중에 사용하자 참조 Logging
의 설정은 Ilogger의 설정에 사용된다.
소스코드
- using 문
- Dataverse SDK에서 반환하는 메시지를 호출하는
Microsoft.Crm.Sdk.Message
- 설정을 관리할 수 있는
Microsoft.Extensions.Configuration
- Dataverse의 인증을 위한
Microsoft.PowerPlatform.Dataverse.Client
로 이루어져 있다.
- Dataverse SDK에서 반환하는 메시지를 호출하는
using Microsoft.Crm.Sdk.Messages; using Microsoft.Extensions.Configuration; using Microsoft.PowerPlatform.Dataverse.Client;
- 생성자
Program()
- 생성자에서는 appsetting.json에서 설정을 Configuration에 등록하는 과정을 갖는다. 환경설정
DATAVERSE_APPSETTINGS
을 설정하지 않았다면appsettings.json
파일을 사용하게 될 것이다. - 설정을 지정하기 위한
IConfiguration Configuration { get; }
을 생성자 위에 설정함으로써 해당 클래스에서 생성자를 만들시 입력하도록 지정해 두었다.
- 생성자에서는 appsetting.json에서 설정을 Configuration에 등록하는 과정을 갖는다. 환경설정
Program() { // 만약 환경설정에 설정 경로를 설정했다면 path에 가져온다 아니면 // 아니면 경로를 직접 설정한 파일을 사용합니다. string? path = Environment.GetEnvironmentVariable("DATAVERSE_APPSETTINGS"); if (path == null) path = "appsettings.json"; // JSON파일을 통해 Configuration을 설정합니다. Configuration = new ConfigurationBuilder() .AddJsonFile(path, optional: false, reloadOnChange: true) .Build(); }
- 메시지요청
Main()
- ServiceClinet를 선언하고 선언시 설정값에 있는 연결문자열을 사용한다.
- 유저의 접속 ID인 WhoAmiI를 반환한다. (접속을 새로할때마다 반환값이 다를 것이다.)
- 접속을 종료시에는
Dispose
를 이용해 종료한다.
static void Main(string[] args) { Program app = new(); // default에 설정된 연결문자열을 가져오 serviceClient를 생성. ServiceClient serviceClient = new( app.Configuration.GetConnectionString("default") ); // 조직 서비스에 WhoAmI 메시지 요청을 전송하고 반환 // 유저의 접속 ID를 가져온다. WhoAmIResponse resp = (WhoAmIResponse)serviceClient.Execute(new WhoAmIRequest()); Console.WriteLine("User ID is {0}.", resp.UserId); // 입력이 있을때까지 멈추고 서비스를 닫는다. Console.WriteLine("Press any key to continue."); Console.ReadKey(); serviceClient.Dispose(); }
결론
- 인증에대한 정책이 바뀌면서
.Net core 3.1
이상의 버전에서 SDK를 사용하도록 제공하려는 것으로 보인다. - Client package를 받은 것만으로 기존 Xrm, Crm SDK가 같이 설치된다. 기존의 .NET Framework 때 사용되던 SDK를 통합하여 새로운 .NET 버전에서도 돌아가게 하도록 만드는 것으로 보인다. 하지만 .NET Framework 기반으로 만들어졌던 SDK라 리눅스 등의 OS에서 사용시에는 주의해할 것이다.
728x90반응형'C#' 카테고리의 다른 글
PowerApps-Samples DataverseSDK 예제설명 3 - TelemetryUsingILogger (0) 2022.06.25 PowerApps-Samples DataverseSDK 예제설명 2 - CreateUpdateDelete (0) 2022.06.24 Dataverse SDK 1.0 런칭 (0) 2022.06.17 C# 단위테스트(UnitTest)2 - MSTest 설명 (0) 2022.02.24 C# 람다식 - 표현식 트리 (0) 2022.02.22