Condividi tramite


Distribuzione e avvio di una nuova versione di un’orchestrazione a livello di programmazione

Il codice riportato in questo argomento illustra come distribuire e avviare in modo rapido una nuova versione dell’orchestrazione. Poiché l’esecuzione di alcune operazioni manuali può richiedere diversi secondi, quando si rimuove un’orchestrazione e se ne avvia una nuova versione manualmente è possibile che vengano generati alcuni messaggi sospesi o duplicati. Il metodo a livello di programmazione illustrato in questo argomento consente di eseguire queste operazioni molto più rapidamente, in modo da ridurre la probabilità di messaggi sospesi e duplicati, e come transazione singola, in modo che se un’operazione non viene completata entrambe le orchestrazioni vengono lasciate nello stato in cui si trovavano all’inizio.

Nota

In rari casi, quando l'orchestrazione che si sta aggiornando con una nuova versione funziona con un carico elevato, alcuni messaggi possono essere sospesi anche quando si annulla l'integrazione e si inseriscono le orchestrazioni a livello di codice. Dopo aver eseguito queste operazioni, è consigliabile controllare la coda di messaggi sospesa e riprendere eventuali messaggi sospesi.

Nell’esempio di codice seguente viene illustrato come utilizzare l’API del modello oggetto di BizTalk Explorer per rimuovere un’orchestrazione esistente e avviare la nuova versione dell’orchestrazione.

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

Vedere anche

Aggiornamento di applicazioni BizTalk
Come integrare un'orchestrazione
Come rimuovere un'orchestrazione