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