다음을 통해 공유


프로그래밍 방식으로 오케스트레이션의 새 버전 배포 및 시작

이 항목에 있는 코드는 오케스트레이션 새 버전을 빠르게 배포하고 시작하는 방법을 보여줍니다. 수동으로 작업을 수행하면 수 초가 걸리기 때문에 수동으로 오케스트레이션의 등록을 취소하고 새 버전을 시작하면 메시지의 일시 중단이나 중복이 발생할 수 있습니다. 이 항목에 설명된 프로그램 방식을 사용하면 작업을 더 빠르게 수행할 수 있으므로 메시지가 일시 중단되거나 중복될 가능성이 줄어들고 단일 트랜잭션으로 수행되므로 한 작업이 실패하면 두 오케스트레이션이 모두 시작할 때와 동일한 상태에 놓여지게 됩니다.

참고

드문 경우이지만 새 버전으로 업데이트하는 오케스트레이션이 높은 부하에서 작동하는 경우 프로그래밍 방식으로 오케스트레이션을 등록 취소하고 참여시키는 경우에도 일부 메시지가 일시 중단될 수 있습니다. 이러한 작업을 수행한 후 일시 중단된 메시지 큐를 검사 일시 중단된 메시지를 다시 시작하는 것이 좋습니다.

다음 코드 샘플은 Explorer OM API를 사용하여 기존 오케스트레이션의 등록을 취소하고 새 오케스트레이션 버전을 시작하는 방법을 보여줍니다.

using System;  
using Microsoft.BizTalk.ExplorerOM;  
#endregion  
namespace OrchestrationBinding  
{  
class OrchestrationBinding  
{  
static void Main(string[] args)  
{  
            UpdateOrchestration();  
}  
        static public void UpdateOrchestration()  
        {  
            // Create the root object and set the connection string  
            BtsCatalogExplorer catalog = new BtsCatalogExplorer();  
            catalog.ConnectionString = "SERVER=.;DATABASE=BizTalkMgmtDb;Integrated Security=SSPI";  
            string orchestrationAssemblyV1 = "HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=99561c477e487f14";  
            string orchestrationAssemblyV2 = "HelloWorld, Version=2.0.0.0, Culture=neutral, PublicKeyToken=99561c477e487f14";  
            string orchestrationName = "Microsoft.Samples.BizTalk.HelloWorld.HelloSchedule";  
            try  
            {  
                BtsAssembly assemblyV1 = FindAssemblyByFullName(catalog.Assemblies, orchestrationAssemblyV1);  
                BtsAssembly assemblyV2 = FindAssemblyByFullName(catalog.Assemblies, orchestrationAssemblyV2);  
                BtsOrchestration orchestrationV1 = assemblyV1.Orchestrations[orchestrationName];  
                BtsOrchestration orchestrationV2 = assemblyV2.Orchestrations[orchestrationName];  
                orchestrationV1.Status = OrchestrationStatus.Unenlisted;  
                orchestrationV2.Status = OrchestrationStatus.Started;  
                // Commit the accumulated changes transactionally  
                catalog.SaveChanges();  
            }  
            catch (Exception e)  
            {  
                catalog.DiscardChanges();  
                throw;  
            }  
        }  
        static BtsAssembly FindAssemblyByFullName(BtsAssemblyCollection assemblies, string fullName)  
        {  
            foreach (BtsAssembly assembly in assemblies)  
            {  
                if (assembly.DisplayName == fullName)  
                    return assembly;  
            }  
            return null;  
        }  
}  
}  

참고 항목

BizTalk 애플리케이션 업데이트
오케스트레이션을 등록하는 방법
오케스트레이션의 등록을 취소하는 방법