Teilen über


Programmgesteuertes Bereitstellen und Starten einer neuen Orchestrierungsversion

Der Code in diesem Thema veranschaulicht die schnelle Bereitstellung und das Starten einer neuen Orchestrierungsversion. Da die manuelle Ausführung der Vorgänge einige Sekunden dauern kann, werden Nachrichten beim manuellen Austragen einer Orchestrierung und dem anschließenden Starten einer neuen Version möglicherweise angehalten oder doppelt erstellt. Mit der in diesem Thema veranschaulichten programmgesteuerten Methode kann die Wahrscheinlichkeit angehaltener oder doppelter Nachrichten verringert werden, da diese Vorgänge schneller und als einzelne Transaktion ausgeführt werden. Wenn ein Fehler bei einem Vorgang auftritt, verbleiben daher beide Orchestrierungen im ursprünglichen Status.

Hinweis

In seltenen Fällen, wenn die Orchestrierung, die Sie mit einer neuen Version aktualisieren, unter hoher Auslastung ausgeführt wird, können einige Nachrichten angehalten werden, selbst wenn Sie die Registrierung aufheben und die Orchestrierungen programmgesteuert eintragen. Es wird empfohlen, dass Sie nach dem Ausführen dieser Vorgänge ihre angehaltene Nachrichtenwarteschlange überprüfen und alle angehaltenen Nachrichten fortsetzen.

Im folgenden Beispielcode wird das Austragen einer vorhandenen Orchestrierung und das Starten der neuen Orchestrierungsversion mithilfe des Explorer OM-APIs veranschaulicht.

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;  
        }  
}  
}  

Weitere Informationen

Aktualisieren von BizTalk-Anwendungen
Eintragen einer Orchestrierung
Aufheben der Registrierung einer Orchestrierung