오케스트레이션 엔진 구성
오케이스트레이션 엔진은 BTSNTSvc.exe.config라는 XML 파일을 사용하여 특정 동작을 결정합니다. 예를 들어 디하이드레이션 속성 및 해당 속성의 기본값은 BTSNTSvc.exe.config 파일에서 XML로 구성되며 오케스트레이션을 포함하는 모든 호스트 인스턴스가 시작될 때 읽힙니다. 자세한 내용은 오케스트레이션 탈수 및 리하이드레이션을 참조하세요.
서비스는 시작 시 이 구성 정보를 한 번 읽습니다. 구성 정보의 변경 사항은 서비스가 중지된 다음 다시 시작되지 않는 한 선택되지 않습니다.
다른 노드 및 가능한 값은 아래 예를 참조하십시오.
예: 의 모든 유효성 검사
<?xml version="1.0" ?>
<configuration>
<configSections>
<section
name="xlangs"
type="Microsoft.XLANGs.BizTalk.CrossProcess.XmlSerializationConfigurationSectionHandler, Microsoft.XLANGs.BizTalk.CrossProcess" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="BizTalk Assemblies;Developer Tools;Tracking" />
</assemblyBinding>
</runtime>
<xlangs>
<Configuration>
<Debugging
ValidateAssemblies="true"
ValidateSchemas="true"
ValidateCorrelations="true"
ExtendedLogging="true"
/>
</Configuration>
</xlangs>
</configuration>
예: 어셈블리 유효성 검사만
<?xml version="1.0" ?>
<configuration>
<configSections>
<section
name="xlangs"
type="Microsoft.XLANGs.BizTalk.CrossProcess.XmlSerializationConfigurationSectionHandler, Microsoft.XLANGs.BizTalk.CrossProcess"
/>
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="BizTalk Assemblies;Developer Tools;Tracking" />
</assemblyBinding>
</runtime>
<xlangs>
<Configuration>
<Debugging
ValidateAssemblies="true"
ExtendedLogging="false"
/>
</Configuration>
</xlangs>
</configuration>
예: 원격 디버깅 사용
<?xml version="1.0" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="BizTalk Assemblies;Developer Tools;Tracking" />
</assemblyBinding>
</runtime>
<system.runtime.remoting>
<customErrors mode="on"/>
<channelSinkProviders>
<serverProviders>
<provider id="sspi"
type="Microsoft.BizTalk.XLANGs.BTXEngine.SecurityServerChannelSinkProvider,Microsoft.XLANGs.BizTalk.Engine" securityPackage="negotiate" authenticationLevel="packetPrivacy" />
</serverProviders>
</channelSinkProviders>
<application>
<channels>
<channel ref="tcp" port="0" name="">
<serverProviders>
<provider ref="sspi" />
<formatter ref="binary" typeFilterLevel="Full"/>
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>
예: AppDomain 구성
어셈블리는 할당 규칙을 사용하여 명명된 도메인에 할당됩니다. 자세한 내용은 아래를 참조하십시오. 일부 어셈블리에 대해 지정된 규칙이 없으면 어셈블리는 임시 도메인에 할당됩니다. 임시 도메인별로 할당되는 어셈블리의 수는 AssembliesPerDomain 값에 의해 결정됩니다.
<?xml version="1.0" ?>
<configuration>
<configSections>
<section name="xlangs" type="Microsoft.XLANGs.BizTalk.CrossProcess.XmlSerializationConfigurationSectionHandler, Microsoft.XLANGs.BizTalk.CrossProcess" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="BizTalk Assemblies;Developer Tools;Tracking" />
</assemblyBinding>
</runtime>
<xlangs>
<Configuration>
<!--
<!--
AppDomain configuration.
Assemblies are assigned to named domains using assignment rules (see more below). If no rule is specified for some assembly, the assembly will be assigned to an ad hoc domain. The number of such assigned assemblies per ad hoc domain is determined by the value of AssembliesPerDomain.
-->-->
<AppDomains AssembliesPerDomain="10">
<!--
<!--
In this section the user may specify defualt configuration for any app domain created that does not have a named configuration associated with it (see AppDomainSpecs below)
SecondsEmptyBeforeShutdown is the number of seconds that an app domain is empty (that is, it does not contain any orchestrations) before being unloaded. Specify -1 to signal that an app domain should never unload, even when empty.
Similarly, SecondsIdleBeforeShutdown is the number of seconds that an app domain is idle (that is, it contains only dehydratable orchestrations) before being unloaded. Specify -1 to signal that an app domain should never unload when idle but not empty. When an idle but non-empty domain is shut down, all of the contained instances are dehydrated first.
-->
-->
<DefaultSpec SecondsIdleBeforeShutdown="1200" SecondsEmptyBeforeShutdown="1800">
<!--
<!--
BaseSetup is a serialized System.AppDomainSetup object. This is passed as-is to
AppDomain.CreateAppDomain() and can be used to influence assembly search path etc.
-->
-->
<BaseSetup>
<ApplicationBase>c:\myAppBase</ApplicationBase>_0</ApplicationBase>
<ConfigurationFile>c:\myAppBase\myConfig.config</ConfigurationFile>_0</ConfigurationFile>
<DynamicBase>DynamicBase_0</DynamicBase>
<DisallowPublisherPolicy>true</DisallowPublisherPolicy>
<ApplicationName>ApplicationName_0</ApplicationName>
<PrivateBinPath>PrivateBinPath_0</PrivateBinPath>
<PrivateBinPathProbe>PrivateBinPathProbe_0</PrivateBinPathProbe>
<ShadowCopyDirectories>ShadowCopyDirectories_0</ShadowCopyDirectories>
<ShadowCopyFiles>ShadowCopyFiles_0</ShadowCopyFiles>
<CachePath>CachePath_0</CachePath>
<LicenseFile>LicenseFile_0</LicenseFile>
<LoaderOptimization>NotSpecified</LoaderOptimization>
</BaseSetup>
</DefaultSpec>
<!--
- <!--
In this section the user may specify named configurations for specific app domains, identified by their "friendly name". The format of any app-domain spec is identical to that of the default app-domain spec.
-->-->
<AppDomainSpecs>
<AppDomainSpec Name="MyDomain1" SecondsIdleBeforeShutdown="-1" SecondsEmptyBeforeShutdown="12000">
<BaseSetup>
<PrivateBinPath>c:\PathForAppDomain1</PrivateBinPath>
<PrivateBinPath>PrivateBinPath_0</PrivateBinPath>
<PrivateBinPathProbe>PrivateBinPathProbe_0</PrivateBinPathProbe>
</BaseSetup>
</AppDomainSpec>
<AppDomainSpec Name="MyFrequentlyUnloadingDomainMyTrashyDomain" SecondsIdleBeforeShutdown="60" SecondsEmptyBeforeShutdown="60" />
</AppDomainSpecs>
<!--
<!--
The PatternAssignmentRules and ExactAssignmentRules control assignment of assemblies to app domains.
When a message arrives, the name of its corresponding orchestration's assembly is determined. Then, the assembly is assigned an app domain name. The rules guide this assignment. Exact rules are consulted first, in their order of definition, and then the pattern rules. The first match is used.
If no match is found, the assembly will be assigned to an ad-hoc domain. The configuration and number of assemblies per ad-hoc domain is controlled by the AssembliesPerDomain attribute and the DefaultSpec section.
-->
-->
- <ExactAssignmentRules>
<!--
<!--
An exact assembly rule specifies a strong assembly name and an app domain name. If the strong assembly name equals the rule's assembly name, it is assigned to the corresponding app domain.
-->-->
<ExactAssignmentRule AssemblyName="BTSAssembly1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9c7731c5584592ad"
AssemblyName_0" AppDomainName="MyDomain1" />AppDomainName_1" />
<ExactAssignmentRule AssemblyName="BTSAssembly2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9c7731c5584592ad"AssemblyName_0" AppDomainName="AppDomainName_1" />
AppDomainName="MyFrequentlyUnloadingDomain " />
<ExactAssignmentRule AssemblyName="AssemblyName_0" AppDomainName="AppDomainName_1" />
</ExactAssignmentRules>
<PatternAssignmentRules>
<!--
<!--
A pattern assignment rule specifies a regular expression and an app domain name. If the strong assembly name matches the expression, it is assigned to the corresponding app domain. This allows version independent assignment, assignment by public key token, or assignment by the custom assembly key.
-->-->
<!--
assign all assemblies with name BTSAssembly3, regardless of version and public key,
to the MyDomain1 app domain
-->
<PatternAssignmentRule AssemblyNamePattern=" BTSAssembly3, Version=\d.\d.\d.\d, Culture=neutral, PublicKeyToken=.{16}"AssemblyNamePattern_0" AppDomainName=" MyDomain1" />
<PatternAssignmentRule AssemblyNamePattern="AssemblyNamePattern_0" AppDomainName="AppDomainName_1" />
<PatternAssignmentRule AssemblyNamePattern="AssemblyNamePattern_0" AppDomainName="AppDomainName_1" />
</PatternAssignmentRules>
</AppDomains>
</Configuration>
</xlangs>
</configuration>
BTSNTSvc.exe.config 파일의 다른 섹션 수정
BTSNTSvc.exe.config 탈수 값을 수정하는 방법에 대한 자세한 내용은 디하이드레이션 기본 속성을 참조하세요.
BTSNTSvc.exe 구성 파일에는 .NET Framework 일반 참조에 들어 있는 다른 여러 섹션이 포함되어 있습니다. 이러한 섹션의 수정에 대한 자세한 내용은 에서 .NET Framework 일반 참조의 구성 파일 스키마를 https://go.microsoft.com/FWLink/?LinkID=52964참조하세요.
BizTalk 관련 구성 정보 외에도 BTSNTSvc.exe.config 파일은 오케스트레이션, 어댑터 또는 파이프라인의 컨텍스트에서 실행되는 .NET 애플리케이션 구성 요소가 구성 태그 아래<의 표준 .NET appSettings 태그를 사용하여 런타임에 해당 구성> 정보를 가져오는 위치이기도 합니다>.< BizTalk는 구성 정보를 얻기 위한 사용자 지정 어댑터 및 파이프라인 구성 요소에 대한 메커니즘을 이미 제공하므로 BTSNTSvc.exe.config 파일의 appSettings> 태그는 일반적으로 오케스트레이션 내에서 호출된 사용자 지정 .NET 구성 요소에서 사용됩니다.< 예:
<appSettings>
<add key="configParamName" value="configParamValue" />
</appSettings>
오케스트레이션별 메시지 조정
btsntsvc.exe.config 파일에 지정된 이 속성은 대기 중인 메시지 수를 제한하여 오케스트레이션이 너무 많은 메모리를 사용하지 않도록 합니다. 모든 메시지가 계속해서 MessageBox로 전달되지만 지연된 메시지는 오케스트레이션에서 대기 중인 일부 메시지를 처리할 때까지 오케스트레이션에 전달되지 않습니다.
btsntsvc.exe.config 파일(BizTalk Server 루트 디렉터리에 있음)에서 이 속성을 지정하려면 애플리케이션 노드 아래에 다음 매개 변수를 추가합니다.
<configuration>
<application>
<Throttling PauseAt="100" ResumeAt="50" />
</application>
</configuration>
이 예제에서 오케스트레이션에 대기 중인 메시지가 100개 있으면 MessageBox에서는 메시지를 추가로 송신하지 않습니다. 오케스트레이션의 대기 중인 메시지 수가 50개로 줄어들면 MessageBox에서 메시지 송신을 다시 시작합니다. 다른 값을 지정할 수 있습니다.
데이터베이스에서 호스트별로 이 기능을 설정할 수도 있습니다. 호스트에 대한 메시지 조정 기능을 설정하려면 BizTalkMsgBoxDb 데이터베이스에서 dbo.Applications 테이블을 편집해야 합니다. 오케스트레이션당 메시지 제한을 사용하도록 설정하려는 각 호스트에 대해 fAttributes 플래그 비트를 1로 설정합니다. fAttribute가 1로 설정된 호스트만 오케스트레이션당 메시지 제한을 허용합니다.