Condividi tramite


Distribuzione e avvio di una nuova versione di un'orchestrazione a livello di codice

Il codice in questo argomento illustra come distribuire e avviare rapidamente una nuova versione dell'orchestrazione. Poiché l'esecuzione delle operazioni manuali può richiedere alcuni secondi, l'annullamento manuale dell'elenco di un'orchestrazione e l'avvio di una nuova versione può comportare messaggi sospesi o duplicati. Il metodo programmatico illustrato in questo argomento consente di eseguire queste operazioni molto più rapidamente, riducendo la probabilità di messaggi sospesi e duplicati, e come singola transazione, in modo che se un'operazione non riesce, entrambe le orchestrazioni vengono lasciate nello stesso stato in cui si trovavano all'inizio.

Annotazioni

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 sospesi e riprendere eventuali messaggi sospesi.

L'esempio di codice seguente illustra come usare l'API OM di Explorer per deregistrare un'orchestrazione esistente e avviare la nuova versione dell'orchestrazione.

Attenzione

Questo esempio o materiale sussidiario fa riferimento a informazioni riservate, ad esempio una stringa di connessione o un nome utente e una password. Non inserire mai questi valori come valori codificati nel codice e assicurati di proteggere i dati riservati utilizzando l'autenticazione più sicura disponibile. Per altre informazioni, consultare la documentazione seguente:

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 arruolare un'orchestrazione
Come rimuovere un'orchestrazione dall'elenco