방법: 인스턴스 저장소 공급자 개발
다음 절차에서는 사용자 지정 인스턴스 저장소 공급자를 만드는 단계를 제공합니다. 인스턴스 저장소, 쿼리 및 제어 공급자에 대한 일반적인 내용은 인스턴스 저장소, 쿼리 및 제어 공급자를 참조하십시오.
클래스 라이브러리 프로젝트를 만듭니다.
Microsoft.ApplicationServer.StoreProvider.dll, System.Activities.DurableInstancing.dll 및 System.Runtime.DurableInstancing.dll에 참조를 추가합니다. 또한 System.Configuration.dll 및 System.Data.dll에 참조를 추가하여 이 항목에서 제공된 샘플 코드를 컴파일합니다.
원본 파일의 시작 부분에 다음 using 문을 추가합니다.
using Microsoft.ApplicationServer.StoreProvider; using System.Runtime.DurableInstancing; using System.Activities.DurableInstancing; //for the sample code provided in the methods using System.Collections.Specialized; using System.Data; using System.Data.SqlClient;
인스턴스 저장소 공급자에 대한 클래스를 만듭니다. 이 클래스는 InstanceStoreProvider 클래스에서 파생됩니다.
public sealed class MySqlWorkflowInstanceStoreProvider : InstanceStoreProvider { }
Initialize 메서드를 구현합니다. 이 메서드는 구성 파일에 지정된 구성 정보에 해당하는 속성 모음을 적용합니다. 이 속성 모음의 데이터는 공급자를 구성하는 데 사용됩니다.
Initialize 메서드는 CreateInstanceStore 또는 UniqueProviderIdentifier 메서드가 호출되기 전에 호출됩니다.
string ConnectionString { get; set; } public override void Initialize(string name, NameValueCollection config) { this.ConnectionString= config["connectionString"]; // Initialize the base class base.Initialize(name, config); }
InstanceStoreProvider 클래스의 CreateInstanceStore 메서드를 구현하여 클라이언트가 인스턴스 저장소에 대해 명령을 실행하는 데 사용할 System.Runtime.DurableInstancing.InstanceStore 개체를 반환합니다.
public override InstanceStore CreateInstanceStore() { // the following line creates an instance of the SqlWorkflowInstanceStore class SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(this.ConnectionString); return store; }
UniqueProviderIdentifier 메서드를 구현합니다. 이 메서드가 반환하는 고유 공급자 ID는 다른 공급자 개체가 동일한 기본 저장소에 확인되는지 여부를 결정하는 데 사용됩니다.
string UniqueStoreIdentifier { get; set; } public override string UniqueProviderIdentifier() { this.UniqueStoreIdentifier = GetUniqueStoreIdentifier(this.ConnectionString); return this.UniqueStoreIdentifier; } private string GetUniqueStoreIdentifier(string connectionString) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand()) { command.CommandType = CommandType.Text; command.CommandText = "SELECT TOP (1) [StoreIdentifier] FROM [Microsoft.ApplicationServer.DurableInstancing].[StoreVersion]"; command.Connection = connection; command.Connection.Open(); Guid identifier = (Guid)command.ExecuteScalar(); return identifier.ToString(); } } }
WMS(워크플로 관리 서비스) 또는 워크플로 호스트는 인스턴스 저장소 공급자에 대해 이 메서드를 호출하여 저장소별 InstanceStore 개체를 가져옵니다. AppFabric에는 CreateInstanceStore 메서드 호출 시 SqlWorkflowInstanceStore 개체를 만드는 SQL 워크플로 인스턴스 저장소에 대한 인스턴스 저장소 공급자가 포함되어 있습니다.
중요
Windows Server AppFabric에 공급자 등록에 대한 자세한 내용은 방법: 사용자 지정 공급자 등록을 참조하십시오.
2011-12-05