비즈니스 프로세스 관리 솔루션에서 SSO를 효율적으로 사용
서비스 지향 솔루션과 마찬가지로, 비즈니스 프로세스 관리 솔루션은 Enterprise SSO(Single Sign-On)를 사용하여 주문 처리 단계의 수 같은 구성 값을 저장합니다. 솔루션은 BizTalk가 설치될 때마다 존재하므로 보안 저장소를 사용합니다. SSO는 값이 원활하게 사용될 수 있도록 구성 정보를 캐시하며, 데이터베이스 연결 문자열 및 암호 등의 정보를 보호할 수 있습니다. 이러한 모든 이유로, Single Sign-On이 백 엔드 응용 프로그램에 대한 연결을 관리하는 데 사용되지 않고 있었더라도 보안 저장소는 구성 정보를 위한 좋은 위치입니다.
서비스 지향 솔루션은 지연 시간을 줄이기 위해 구성 값에 대해 로컬 캐시를 사용하며 5분마다 캐시를 새로 고칩니다.
이 항목에서는 솔루션에서 사용되는 캐싱 메커니즘을 설명합니다. 이 솔루션은 서비스 지향 솔루션과는 약간 다른 SSO 접근 방식을 따릅니다. 서비스 지향 솔루션이 SSO 값을 캐시하는 방법에 대한 설명은 서비스 지향 솔루션에서 SSO를 효율적으로 사용을 참조하세요.
구성 값을 로컬로 캐시
비즈니스 프로세스 관리 솔루션은 singleton 개체의 속성을 사용하여 SSO 값에 대한 액세스를 제공합니다.
참고
singleton 개체는 하나의 인스턴스만 가질 수 있는 개체인 점에 유의하십시오. 싱글톤 개체 및 C#에서 만드는 방법에 대한 자세한 내용은 C#에서 Singleton 구현을 참조하세요.
솔루션에서 오케스트레이션은 먼저 singleton 개체를 검색한 후 개체의 속성을 통해 그 값을 참조합니다. 다음은 OrderManager 오케스트레이션의 코드입니다.
configData = Microsoft.Samples.BizTalk.SouthridgeVideo.Utilities
.SsoConfigHelper.Singleton;
numStages = configData.TotalStages;
오케스트레이션은 SsoConfigHelper 개체에서 Singleton 메서드를 호출하여 개체의 복사본 하나에 액세스합니다. 개체를 손에 들고 오케스트레이션은 처리 단계의 수인 TotalStages를 검색합니다.
솔루션은 싱글톤을 만드는 일반적인 메서드를 따릅니다. 생성자를 프라이빗으로 만들고, 개체가 자체의 instance 만들고, 프라이빗 변수에 할당하고, 메서드 또는 속성을 통해 해당 변수의 값에 대한 액세스를 제공합니다. SsoConfigHelper 개체는 Singleton 속성을 사용하여 자체의 단일 복사본에 대한 액세스를 제공합니다.
참고
SsoConfigHelper 개체는 정적 생성자를 사용하여 SSO 캐시에서 초기 값을 가져와 새로 고침 메커니즘을 설정합니다. 정적 생성자는 호출될 수 없으므로 singleton 디자인을 유지합니다. 자세한 내용은 정적 생성자(C# 프로그래밍 가이드)를 참조하세요.
오케스트레이션이 참조하는 모든 개체는 직접 또는 간접적으로 직렬화가 가능해야 합니다. 자세한 내용은 지속성 및 오케스트레이션 엔진의 "Serialization"을 참조하세요. SsoConfigHelper 개체는 반드시 직렬화할 수 있지만 엔진이 오케스트레이션을 탈수하는 경우 오케스트레이션이 리하이드레이션될 때 개체의 현재 단일 instance 계속 사용합니다. serialization 및 BizTalk Server 변수에 대한 자세한 내용은 오케스트레이션 변수 형식을 참조하세요.
참고
서비스 지향 솔루션의 개체에서 모든 공용 메서드는 정적입니다. 따라서 오케스트레이션은 인스턴스를 변수에 할당할 필요가 없으며, 클래스가 직렬화되지 않아도 됩니다.
SsoConfigHelper 개체는 동일한 메커니즘을 사용하여 서비스 지향 솔루션과 마찬가지로 구성 값을 검색하고 새로 고칩니다. 사용되는 잠금 패턴도 동일합니다. 이러한 메커니즘에 대한 자세한 내용은 서비스 지향 솔루션에서 SSO를 효율적으로 사용하고SsoConfigHelper에 대한 소스 코드를 참조하세요.
서비스 지향 솔루션에서 수행되는 단일 Sign-On 캐싱과 마찬가지로 비즈니스 프로세스 관리 솔루션은 Microsoft.BizTalk.SSOClient.Interop 네임스페이스의 IPropertyBag 인터페이스를 구현하여 값을 저장합니다. 비즈니스 프로세스 관리 솔루션은 NameValueCollection 개체가 아닌 HybridDictionary 개체를 사용합니다.
서비스 지향 솔루션과 달리 비즈니스 프로세스 관리 솔루션은 구성 데이터에 해당하는 속성을 가진 개체를 표시합니다. 따라서 오케스트레이션이 메시지 유형의 차이를 처리하지 않아도 됩니다.