다음을 통해 공유


관리형 코드에 대해 개발 스타일 선택

 

게시 날짜: 2016년 11월

적용 대상: Dynamics CRM 2015

Microsoft Dynamics CRM SDK는 Microsoft Dynamics CRM 2015 및 Microsoft Dynamics CRM Online 2015 업데이트 웹 서비스에 액세스하거나 응용 프로그램을 확장하는 코드를 작성할 때 사용하는 다양한 메서드와 기술을 제공합니다. 이 가이드는 다른 코딩 작업을 수행하는 데 사용할 수 있는 일부 도구 및 메서드를 강조하여 설명하고 이들을 사용할 때 필요한 몇 가지 지침을 제공합니다.

이 항목의 내용

코드를 사용하여 인증

플러그 인 또는 사용자 지정 워크플로 활동 만들기 및 배포

XAML 워크플로 만들기 및 배포

엔터티 프로그래밍(초기 바인딩, 런타임에 바인딩 및 개발자 확장 비교)

쿼리(Fetch와 QueryExpressions과 LINQ와 개발자 확장 비교)

코드를 사용하여 인증

다음 표에는 온-프레미스, IFD(인터넷 연결 배포) 또는 온라인 배포에 대해 Microsoft Dynamics 365 설치로 호출자를 인증하는 코드를 작성하는 데 선택할 수 있는 옵션이 나와 있습니다.

클래스

설명 및 용도

추가 정보

도우미 코드

샘플 코드의 클래스는 웹 서비스에 연결하고 사용자를 인증하는 방법을 보여 줍니다. 도우미 코드를 사용자 지정 인증 코드의 기본으로 사용할 수 있습니다.

이 코드는 사용하기 쉽고 모든 Microsoft Dynamics 365 배포 유형을 지원합니다. 나중에 다시 사용하도록 Windows 자격 증명 관리자에 사용자의 암호를 저장할 수 있습니다.

필요에 따라 복사하고 사용자 지정할 수 있도록 전체 원본 코드가 제공됩니다. 이는 이후 릴리스에서 이 도우미 코드를 변경하여 프로그램을 분리하는 권장 방법입니다.

샘플: Microsoft Dynamics CRM용 빠른 시작

샘플 및 도우미 코드 사용

도우미 코드: ServerConnection 클래스

이 코드는 SDK의 SampleCode\CS\HelperCode\CrmServiceHelpers.cs 및 SampleCode\VB\HelperCode\CrmServiceHelpers.vb 파일에서 찾을 수 있습니다.Microsoft Dynamics CRM SDK 패키지를 다운로드합니다.

개발자 확장

Microsoft Dynamics 365과 상호 작용하는 응용 프로그램 개발을 단순화하고 가속화하도록 이러한 어셈블리가 제공됩니다. 확장은 OrganizationServiceContext 클래스 사용에 맞춰 핵심 Microsoft Dynamics CRM SDK의 기능을 명확히 확장합니다.

몇 줄의 코드로 어려운 작업을 수행하는 간단한 메서드의 경우 CrmConnection 클래스를 사용합니다.

이 코드는 사용하기 쉽고 모든 Microsoft Dynamics 365 배포 유형을 지원합니다.

Microsoft Dynamics CRM 2015용 개발자 확장

Microsoft Dynamics CRM 2015에 대한 간단한 연결

Xrm 클라이언트

WCF(Windows Communication Foundation) 서비스 채널 관리 및 인증 프로세스를 사용자 지정해야 하는 고급 개발자의 경우 Microsoft.Xrm.Sdk.Client 네임스페이스에서 IServiceManagement<TService>OrganizationServiceProxy 클래스를 사용하십시오.

이러한 클래스를 직접 사용하면 더 나은 연결 및 인증 성능과 유연성을 제공할 수 있습니다. 하지만 WCF 서비스 채널 및 서버 인증에 대한 고급 기술이 필요합니다. 또한 모든 Microsoft Dynamics 365 배포 유형을 처리하도록 더 많은 코드를 작성해야 합니다.

Active Directory 및 클레임 기반 인증

샘플: Microsoft Dynamics CRM 웹 서비스를 사용하여 사용자 인증

서비스 채널 할당 성능 향상

XRM 도구

이러한 어셈블리는 Dynamics 365 API를 사용하여 더 적은 줄의 코드와 Windows PowerShell cmdlets를 통해 간단한 인증 지원을 제공합니다. 이러한 클래스의 모든 함수 호출은 다중 스레드 환경에서 Dynamics 365에서 수행되는 작업에 대해 스레드 보안을 제공합니다. 통합된 인증 논리로 일반적인 로그인 컨트롤과 Windows 클라이언트 응용 프로그램에서 Dynamics 365에 일관되고 원활한 로그인 환경을 제공하도록 인증 정보를 안전하게 저장하고 재사용할 수 있는 기능을 제공합니다.

이러한 클래스는 또한 Windows 클라이언트 응용 프로그램의 동작 호출 문제 해결 및 성능 보고를 지원하는 기본 제공 진단 추적도 제공합니다.

이러한 클래스는 모든 Microsoft Dynamics 365 배포 유형과 OAuth를 제외한 인증 유형을 지원합니다.

XRM 도구를 사용하여 클라이언트 응용 프로그램 빌드

XRM 도구를 사용하여 CRM에 연결

XRM 도구에 PowerShell cmdlets를 사용하여 CRM에 연결

샘플: XRM 도구 API 빠른 시작

플러그 인 또는 사용자 지정 워크플로 활동 만들기 및 배포

다음 표에는 플러그 인 및 사용자 지정 워크플로 활동을 작성하고 배포하는 데 선택할 수 있는 옵션이 나와 있습니다.

도구

설명 및 용도

추가 정보

플러그 인 및 사용자 지정 워크플로 활동 클래스

플러그 인 등록 도구

플러그 인 및 사용자 지정 워크플로 활동 클래스를 사용하면 Microsoft Dynamics 365에 통합하여 플랫폼의 표준 동작을 수정하거나 늘릴 수 있는 사용자 지정 비즈니스 논리를 수행하는 이벤트 처리기를 만들 수 있습니다.

이러한 클래스를 직접 사용하면 코드에 개발자 도구 키트에서 제공되는 도우미 코드가 포함되지 않습니다.

처음부터 플러그 인 및 사용자 지정 워크플로 활동을 작성할 경우 플러그 인 등록 도구를 사용하여 등록해야 합니다. 이 도구는 그래픽 사용자 인터페이스를 제공하고 Microsoft Dynamics 365에 플러그 인 및 사용자 지정 워크플로 활동 등록을 지원합니다.

다음과 같은 경우 이 메서드를 사용합니다.

플러그 인 및 사용자 지정 활동 클래스를 사용하는 방법을 이해하는 경우

코드 파일에 자동 생성되고 배치되는 추가 라이브러리 코드를 원하지 않는 경우

외부 도구와 웹 응용 프로그램을 사용하여 사용자 지정 코드 어셈블리를 등록하고 패키지하는 것이 귀찮지 않은 경우

플러그 인 개발

사용자 지정 워크플로 활동(워크플로 어셈블리)

플러그 인 등록 및 배포

연습: 플러그 인 등록 도구를 사용하여 플러그 인 등록

XAML 워크플로 만들기 및 배포

다음 표에는 XAML 워크플로를 작성하고 배포하는 데 선택할 수 있는 옵션이 나와 있습니다.

도구

설명 및 용도

추가 정보

Microsoft Visual Studio 워크플로 디자이너

Microsoft Dynamics 365 온-프레미스 및 IFD는 사용자 지정 XAML 워크플로를 만들 수 있는 기능을 지원합니다.Microsoft Visual Studio 워크플로 디자이너를 사용하면 도구 상자에서 디자인 화면으로 워크플로 활동을 끌어오고, 변수를 만들고, 워크플로의 기능을 구현하도록 이러한 활동의 속성을 설정하여 선언적 워크플로라고도 하는 사용자 지정 XAML 워크플로를 만들 수 있습니다. 기본 제공 Windows Workflow Foundation 활동 또는 Microsoft Dynamics 365에 고유한 프로세스 활동을 사용할 수 있습니다.

사용자 지정 XAML 워크플로를 작성하려는 경우 이 메서드를 사용합니다.

사용자 지정 XAML 워크플로

비즈니스 프로세스 자동화를 위한 워크플로 작성

엔터티 프로그래밍(초기 바인딩, 런타임에 바인딩 및 개발자 확장 비교)

다음 표에는 Microsoft Dynamics 365의 엔터티를 사용하는 코드를 작성하는 데 선택할 수 있는 옵션이 나와 있습니다.

클래스

설명 및 용도

추가 정보

초기 바인딩

<optional namespace>.Account, <optional namespace>.Contact

코드 생성 도구(CrmSvcUtil)는 Microsoft Dynamics 365의 비즈니스 데이터에 액세스하는 데 사용할 수 있는 Entity 클래스에서 파생된 초기 바인딩 엔터티 클래스를 만듭니다. 이러한 클래스에는 사용자 지정 엔터티를 포함하여 각 엔터티에 대해 하나의 클래스만 포함됩니다.

컴파일러에서 컴파일할 때 유형 참조를 확인하려면 이 메서드를 사용합니다. 또한 특성 및 관계는 생성된 클래스에 포함되므로 엔터티, 특성 및 관계 이름에 대해 IntelliSense 지원을 제공합니다. 강력한 유형 사용은 일반적으로 선호하는 방식이며 이 SDK 설명서에 있는 대부분의 샘플에 사용됩니다.

이 방식에는 다음과 같은 단점이 있습니다.

스키마 변경 내용을 활용하기 위해 엔터티를 사용자 지정할 때마다 클래스를 다시 생성해야 합니다.

네트워크를 통해 전송하는 동안 엔터티가 런타임에 바인딩 유형으로 변환되므로 직렬화 비용이 늘어납니다.

코드에 초기 바인딩 엔터티 클래스 사용

코드 생성 도구(CrmSvcUtil.exe)를 사용하여 초기 바인딩 엔터티 클래스 만들기

런타임에 바인딩

Microsoft.Xrm.Entity

Entity 클래스에는 엔터티와 엔터티 특성의 속성 모음 배열의 논리적 이름이 들어 있습니다. 따라서 응용 프로그램을 컴파일할 때 없었던 사용자 지정 엔터티 및 사용자 지정 특성과 같은 유형으로 작업할 수 있도록 런타임에 바인딩을 사용할 수 있습니다.

또 다른 장점은 엔터티 데이터가 네트워크를 통해 전송될 때 직렬화가 적게 발생한다는 것입니다. 즉, 높은 성능을 제공합니다.

이 방식에는 다음과 같은 단점이 있습니다.

암시적 캐스팅을 방지하기 위해 유형은 명시적으로 지정해야 합니다.

엔터티와 특성과 같은 리소스의 이름은 하드 코딩되므로 스키마 변경의 영향을 분리하기 어렵습니다.

특성 이름은 하드 코딩된 문자열이므로 코딩하는 동안 맞춤법 실수를 하기 쉽습니다.

코드에 런타임에 바인딩 엔터티 클래스 사용

개발자 확장

Microsoft.Xrm.Client.CrmEntity

CrmEntity 클래스는 Entity 클래스에서 파생됩니다.Entity 클래스의 동일한 기능을 모두 제공할 뿐만 아니라 CrmEntity는 일반적인 코딩 작업을 간소화는 새로운 get 및 set 확장 메서드와 새로운 속성 변경 이벤트를 추가합니다.

Microsoft Dynamics CRM 2015용 개발자 확장

코드 생성 도구 확장을 사용하여 초기 바인딩

<optional namespace>.Account, <optional namespace>.Account

CrmSvcUtil 도구의 개발자 확장 버전을 사용하면 CrmEntity 클래스에서 파생되는 초기 바인딩 유형을 생성할 수 있습니다. 개발자 확장에 사용할 수 있는 다른 기능을 활용하려면 사용하십시오.

코드 생성 도구 확장을 사용하여 코드 생성(Dynamics CRM 2015)

컨텍스트에 엔터티 연결(Dynamics CRM 2015)

Microsoft Dynamics CRM 2015용 개발자 확장

쿼리(Fetch와 QueryExpressions과 LINQ와 개발자 확장 비교)

다음 표에는 Microsoft Dynamics 365 데이터베이스에서 레코드를 검색하는 데 사용할 수 있는 쿼리를 만드는 데 선택할 수 있는 옵션이 나와 있습니다.

쿼리 스타일

설명 및 용도

추가 정보

FetchXML

쿼리 스타일은 QueryExpression의 모든 기능과 집계 및 그룹화를 지원하는 사용자 지정 XML 기반 쿼리 언어입니다. Fetch 쿼리는 여러 엔터티에 대한 레코드를 반환할 수 있습니다. 또한 쿼리는 데이터베이스에 직렬화하고 저장할 수 있습니다.UserQuery 엔터티에 있는 사용자 담당 저장된 보기 및 SavedQuery 엔터티에 있는 조직 담당 저장된 보기로 쿼리를 저장하는 데 사용됩니다.

집계 및 그룹화에 대한 지원이 필요하거나 쿼리를 저장 해야 할 때 이 쿼리 언어를 사용합니다.

FetchXML을 사용하여 쿼리 작성

QueryExpression

쿼리 식은 단일 엔터티 유형에 대 한 레코드를 검색하는 데 사용됩니다. 쿼리가 개체 모델로 빌드됩니다. 이 클래스는 집계 및 그룹화를 제외하고 FetchXML의 모든 기능을 지원합니다. 또한 초기 및 런타임에 바인딩된 엔터티 프로그래밍 스타일을 지원합니다.

QueryExpression을 사용하여 쿼리 작성

LINQ

쿼리는 표준 언어를 사용하여 빌드되지만 .NET LINQ(Language-Integrated Query)에서는 내부적으로 QueryExpression을 사용하므로 QueryExpression의 기능으로 제한됩니다.LINQ는 초기 및 런타임에 바인딩된 엔터티 프로그래밍 스타일을 지원합니다.

LINQ(.NET 언어 통합 쿼리)를 사용하여 쿼리 작성

참고 항목

개발자 개요
Microsoft Dynamics CRM 2015용 개발 학습 자습서
응용 프로그램 및 서버 확장 작성
Microsoft Dynamics CRM 2015에 대한 프로그래밍 모델

© 2017 Microsoft. All rights reserved. 저작권 정보