다음을 통해 공유


구성 파일로 컨텍스트 구성(Dynamics CRM 2015)

 

게시 날짜: 2016년 11월

적용 대상: Dynamics CRM 2015

Microsoft Dynamics CRM 2015에 대한 개발자 확장을 사용할 경우 종속성 컴퍼지션을 프로그래밍 방식으로 조정하는 대신 응용 프로그램 구성 파일을 수정하여 기본 개체 유형에 영향을 줄 수 있습니다. 최소 구성은 연결 문자열 및 데이터 컨텍스트만 제공합니다. 기본 종속성 개체는 프로그래밍하는 경우와 마찬가지로 고급 설정에 만들어집니다.

이 항목의 내용

개요

구성 규칙

instanceMode 특성 지정

기본 구성

개요

다음은 기본 구성 파일의 일부를 보여 줍니다.

<configuration>

 <configSections>
  <section name="microsoft.xrm.client" type="Microsoft.Xrm.Client.Configuration.CrmSection, Microsoft.Xrm.Client"/>
 </configSections>

 <connectionStrings>
  <add name="Xrm" connectionString="Url=http://crm.contoso.com/xrmContoso"/>
 </connectionStrings>

 <microsoft.xrm.client>
  <contexts>
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm"/>
  </contexts>
 </microsoft.xrm.client>

</configuration>

CrmConfigurationManager는 실제 코드에 구성을 제공하는 데 사용합니다.CreateContext 메서드는 데이터 컨텍스트를 인스턴스화하는 데 사용해야 하는 컨텍스트 구성 요소 이름을 사용합니다.

var contextName = "Xrm";
using (var context = CrmConfigurationManager.CreateContext(contextName) as XrmServiceContext)
{
}

null을 전달하면 컬렉션에서 첫 번째 요소인 기본 컨텍스트 구성 요소를 사용합니다. 또한 명시적 기본 요소를 사용하여 이 값을 다시 정의할 수 있습니다. 다음 코드는 앞의 예제에서와 같이 동일한 결과를 가져옵니다.

using (var context = CrmConfigurationManager.CreateContext() as XrmServiceContext)
{
}

컨텍스트 구성 요소는 연결 문자열 지정을 담당하고, 기본적으로 컨텍스트 구성 요소 이름과 동일한 이름으로 연결 문자열 이름을 찾습니다. 위의 예제에서는 "Xrm" 이름을 찾습니다. 연결 문자열 이름은 다음과 같이 이 관계를 강조하고 분리하여 명시적으로 지정할 수 있습니다.

<connectionStrings>
 <add name="MyCRM" connectionString="Url=http://crm.contoso.com/xrmContoso"/>
</connectionStrings>

<microsoft.xrm.client>
 <contexts>
  <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" connectionStringName="MyCRM"/>
 </contexts>
</microsoft.xrm.client>

중첩 종속성은 다음 예제와 같이 지정하고 함께 연결할 수 있습니다.

<microsoft.xrm.client>
 <contexts>
  <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" serviceName="MyService"/>
 </contexts>
 <services>
  <add name="MyService" type="Microsoft.Xrm.Client.Services.CachedOrganizationService, Microsoft.Xrm.Client" serviceCacheName="MyServiceCache"/>
 </services>
 <serviceCache>
  <add name="MyServiceCache" type="Microsoft.Xrm.Client.Services.OrganizationServiceCache, Microsoft.Xrm.Client" objectCacheName="MyObjectCache"/>
 </serviceCache>
 <objectCache>
  <add name="MyObjectCache" type="System.Runtime.Caching.MemoryCache, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
 </objectCache>
</microsoft.xrm.client>

다음에서는 캐싱을 비활성화하는 방법을 보여 줍니다.

<microsoft.xrm.client>
  <contexts>
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" serviceName="Xrm"/>
  </contexts>
  <services>
   <add name="Xrm" type="Microsoft.Xrm.Client.Services.OrganizationService, Microsoft.Xrm.Client"/>
  </services>
</microsoft.xrm.client>

구성 규칙

다음에는 컨텍스트 구성 규칙이 나와 있습니다.

  • <context> 요소 지정 - 동적 CrmOrganizationServiceContext와 단독으로 코드 생성 없이 작업하지 않는 한 기본 유형 클래스가 OrganizationServiceContext 종속성에 대해 존재하지 않으므로 <context/> 요소를 지정해야 합니다.

  • 종속성 이름 지정(선택 사항) - 기본 종속성 이름 특성(이름 예: "Xrm")은 선택 사항입니다. 생략하면 구성 컬렉션의 첫 번째 <add/> 요소가 기본값이 됩니다.

  • 연결 특성 지정 – serviceName="Xrm", serviceCacheName="Xrm" 및 objectCacheName="Xrm"과 같은 연결 특성을 지정하는 데 일반적입니다. 하지만 연결 특성을 생략하면 CrmConfigurationManager에서 상위 종속성과 같은 이름을 가진 하위 종속성을 연결하려고 합니다.

구성의 종속성은 적절한 정적 메서드와 함께 CrmConfigurationManager를 사용하여 인스턴스화할 수 있습니다. 결과 개체는 알려진 유형으로 캐스팅하거나 캐스팅 없이 기본 형식으로 참조할 수 있습니다.

var name = "Xrm";
var connection = new CrmConnection(name);
var objectCache = CrmConfigurationManager.CreateObjectCache(name) as MemoryCache;
var serviceCache = CrmConfigurationManager.CreateServiceCache(name, connection) as OrganizationServiceCache;
var service = CrmConfigurationManager.CreateService(connection, name) as CachedOrganizationService;
var context = CrmConfigurationManager.CreateContext(name) as XrmServiceContext;

instanceMode 특성 지정

구성 요소가 InstanceMode 특성을 지정하면 CrmConfigurationManager에서 적절하게 인스턴스화 동작이 조정됩니다.

  • 정적 - 항상 같은 정적 인스턴스를 반환합니다.

  • PerName - 지정 된 각 구성 요소의 단일 인스턴스를 반환합니다.

  • PerRequest - 웹 요청의 컨텍스트에서 동일한 첫 번째 인스턴스를 반환합니다.HttpContext 인스턴스에 대해 하나의 인스턴스만 반환함.

  • PerInstance – 각 호출 시 새 인스턴스를 반환합니다.

기본 구성

기본 값을 사용한 전체 구성:

<configuration>

 <configSections>
  <section name="microsoft.xrm.client" type="Microsoft.Xrm.Client.Configuration.CrmSection, Microsoft.Xrm.Client"/>
 </configSections>

 <connectionStrings>
  <add name="Xrm" connectionString="ServiceUri=...; Domain=...; Username=...; Password=..."/>
 </connectionStrings>

 <microsoft.xrm.client>
  <contexts default="Xrm">
   <add name="Xrm" type="Xrm.XrmServiceContext, Xrm" connectionStringName="Xrm" serviceName="Xrm"/>
  </contexts>
  <services default="Xrm">
   <add
    name="Xrm"
    type="Microsoft.Xrm.Client.Services.CachedOrganizationService, Microsoft.Xrm.Client"
    serviceCacheName="Xrm"
    instanceMode="PerRequest" [Static | PerName | PerRequest | PerInstance]
   />
  </services>
  <serviceCache default="Xrm">
   <add
    name="Xrm"
    type="Microsoft.Xrm.Client.Services.OrganizationServiceCache, Microsoft.Xrm.Client"
    objectCacheName="Xrm"
    cacheMode="LookupAndInsert" [LookupAndInsert | InsertOnly | Disabled]
    returnMode="Cloned" [Shared | Cloned]
    queryHashingEnabled="false" [false | true]
   />
  </serviceCache>
  <objectCache default="Xrm">
   <add
    name="Xrm"
    type="System.Runtime.Caching.MemoryCache, System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    instanceMode="PerName" [Static | PerName | PerInstance]
    absoluteExpiration=""
    slidingExpiration="00:00:00" [HH:MM:SS]
    duration="00:00:00" [HH:MM:SS]
    priority="Default" [Default | NotRemovable]
    outputCacheProfileName="Xrm"
   />
  </objectCache>
 </microsoft.xrm.client>

 <system.runtime.caching>
  <memoryCache>
   <namedCaches>
    <add name="Xrm"
     cacheMemoryLimitMegabytes="0"
     physicalMemoryLimitPercentage="0"
     pollingInterval="00:00:00" />
    </namedCaches>
   </memoryCache>
 </system.runtime.caching>

 <system.web>
  <caching>
   <outputCacheSettings>
    <outputCacheProfiles>
     <add name="Xrm" enabled="true" duration="-1"/>
    </outputCacheProfiles>
   </outputCacheSettings>
  </caching>
 </system.web>

</configuration>

참고 항목

개발자 확장 컨텍스트 개체 모델(Dynamics CRM 2015)
엔터티 관계 액세스(Dynamics CRM 2015)
컨텍스트에 엔터티 연결(Dynamics CRM 2015)

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