Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describen los procedimientos recomendados para usar orquestaciones en soluciones de BizTalk Server. Esto incluye recomendaciones para:
Reducción de la latencia de las soluciones de BizTalk Server que usan orquestaciones
Eliminación de las orquestaciones que son solo para patrones de mensajería
Uso de envíos en línea desde orquestaciones
Minimizar los puntos de persistencia de la orquestación
Anidación de orquestaciones
Patrones de diseño de orquestación
Bloques de gestión de excepciones de orquestación
Recomendaciones para optimizar las orquestaciones para escenarios de baja latencia
Las técnicas siguientes se pueden usar para reducir la latencia de las soluciones de BizTalk Server que usan orquestaciones.
Eliminación de orquestaciones para patrones únicamente de mensajería
Cuando sea posible, minimice el uso de orquestaciones para aumentar el rendimiento general y reducir la latencia de los procesos empresariales. Si no es necesario ejecutar transacciones de larga duración y no es necesario invocar varios sistemas para cada solicitud, considere la posibilidad de eliminar orquestaciones y mover lógica de negocios a puertos de recepción y envío para reducir la cantidad total de recorridos de ida y vuelta a BizTalkMsgBoxDb y reducir la latencia debido al acceso a la base de datos. En este caso, se deben implementar canalizaciones personalizadas y reutilizar clases auxiliares que se invocaron anteriormente desde orquestaciones. Use orquestaciones solo cuando sea estrictamente necesario para implementar patrones de diseño como dispersión y recopilación o convoyes. Para obtener más información sobre los patrones de diseño de orquestación, vea el tema Implementar patrones de diseño en orquestaciones (https://go.microsoft.com/fwlink/?LinkId=140042) en la documentación de BizTalk Server.
Utilice envíos integrados desde orquestaciones para ajustarse a escenarios de baja latencia
Siempre que sea posible, minimice el uso de orquestaciones y favorece los patrones de solo mensajería para aumentar el rendimiento general y reducir la latencia de los procesos empresariales. Si no es necesario realizar transacciones de larga duración y no es necesario que la lógica de negocios invoque varios sistemas, considere la posibilidad de mover la lógica de negocios para recibir y enviar puertos y eliminar el uso de orquestaciones. Este enfoque se puede implementar con canalizaciones personalizadas y que reutilizan las clases auxiliares que se invocaron anteriormente desde orquestaciones. Para lograr un mejor rendimiento en escenarios de baja latencia, adopte uno de los enfoques siguientes:
Elimine las orquestaciones innecesarias y adopte patrones de solo mensajería para reducir la cantidad total de interacciones con la base de datos BizTalk MessageBox. Este enfoque admite una latencia baja porque los envíos en línea omiten el motor de mensajería de BizTalk y la sobrecarga asociada. La funcionalidad de envío en línea de orquestación se proporciona con BizTalk Server 2006 y versiones posteriores.
Dentro de las orquestaciones, elimine los puertos lógicos enlazados a los puertos físicos y use envíos en línea como alternativa. Por ejemplo, se podría usar un envío en línea para crear una instancia de una clase proxy WCF para invocar un servicio web posterior o un componente ADO.NET para acceder a una base de datos de SQL Server. En el diagrama siguiente, se realiza un envío en línea cuando la orquestación crea una instancia de un componente empresarial, que usa internamente un objeto proxy WCF para invocar directamente un servicio web posterior.
Nota:
Aunque el uso de envíos en línea desde orquestaciones reducirá significativamente la latencia, existen limitaciones en este enfoque. Dado que los envíos en línea omiten el motor de mensajería de BizTalk, la siguiente funcionalidad proporcionada por el motor de mensajería no está disponible:
- Tuberías transaccionales
- Canalizaciones recuperables
- Tuberías que llaman a la API del interceptor de BAM
- Compatibilidad con adaptadores de BizTalk Server
- Procesamiento por lotes
- Reintentos
- Inicialización del conjunto de correlación
- Configuración declarativa
- Transportes secundarios
- Seguimiento
- Uso declarativo de BAM
Para obtener más información sobre los tipos de canalizaciones que no se pueden ejecutar desde una orquestación, vea la sección "Restricciones" del tema Cómo usar expresiones para ejecutar canalizaciones (https://go.microsoft.com/fwlink/?LinkId=158008) en la documentación de BizTalk Server 2010.
Optimizar la latencia de orquestación reduciendo el número de puntos de persistencia, si es posible.
Solo es necesario marcar un ámbito de orquestación como "transaccional de larga duración" si desea usar compensación o tiempos de espera del ámbito. Un ámbito transaccional de larga duración provoca un punto de persistencia adicional al final del ámbito, por lo que deben evitarse cuando no es necesario usar la compensación o los tiempos de espera del ámbito. Un ámbito atómico provoca un punto de persistencia al final del ámbito, pero también garantiza que no se produzca ningún punto de persistencia dentro del ámbito atómico. Este efecto secundario de ninguna persistencia dentro del ámbito a veces se puede usar para aprovechar las ventajas de los puntos de persistencia por lotes (al realizar varios envíos, por ejemplo). En general, sin embargo, recomendamos evitar ámbitos atómicos si es posible. El motor de orquestación guarda en almacenamiento persistente el estado completo de una instancia de orquestación en ejecución en varios puntos, de modo que la instancia se pueda restaurar posteriormente en memoria y llevar a cabo hasta su finalización. El número de puntos de persistencia de una orquestación es uno de los factores clave que influyen en la latencia de los mensajes que fluyen a través de orquestaciones. Cada vez que el motor alcanza un punto de persistencia, el estado interno de una orquestación en ejecución se serializa y se guarda en el Cuadro de mensajes y esta operación incurre en un costo de latencia. La serialización del estado interno incluye todos los mensajes y variables instanciados y aún no eliminados durante la orquestación. Cuanto más grandes sean los mensajes y las variables, y cuántas más de estas haya, más tiempo tardará en persistir el estado interno de una orquestación. Un número excesivo de puntos de persistencia puede provocar una degradación significativa del rendimiento. Por este motivo, se recomienda eliminar los puntos de persistencia innecesarios de las orquestaciones al reducir el número de alcances transaccionales y formas de envío. Este enfoque permite reducir la contención en el MessageBox debido a la deshidratación y rehidratación de la orquestación, aumentar la escalabilidad general y reducir la latencia de la orquestación. Otra recomendación es mantener siempre el estado interno de una orquestación lo más pequeño posible. Esta técnica puede reducir significativamente el tiempo que el motor XLANG dedica a serializar, conservar y restaurar el estado interno de una orquestación en caso de un punto de persistencia. Una manera de lograrlo es crear variables y mensajes lo más tarde posible y liberarlos lo antes posible; por ejemplo, introduce ámbitos no transaccionales dentro de las orquestaciones y declara variables y mensajes dentro de estos ámbitos internos en lugar de declararlos en el nivel superior. Para obtener más información sobre cómo minimizar los puntos de persistencia de orquestación, vea los temas siguientes en la documentación de BizTalk Server 2010:
Persistencia y motor de orquestación (https://go.microsoft.com/fwlink/?LinkID=155292).
Deshidratación y rehidratación de la orquestación (https://go.microsoft.com/fwlink/?LinkID=155292).
Directrices para utilizar propiedades promovidas para acceder a etiquetas o atributos de mensaje desde una orquestación
Si necesita promover propiedades, promueva solo las propiedades que se usan para el enrutamiento de mensajes, los filtros y la correlación de mensajes. La promoción de cada propiedad requiere que el componente de desensamblador (XML, plano, personalizado) reconozca el tipo de documento y recupere datos del mensaje usando la expresión XPath de la anotación correspondiente contenida en el XSD que define el tipo de documento. Además, cada promoción de propiedades provoca una llamada independiente del procedimiento almacenado bts_InsertProperty cuando el Agente de mensajes publica el mensaje en la base de datos MessageBox. Si una orquestación necesita tener acceso a un elemento o atributo determinado contenido en un documento XML, use una de las técnicas siguientes:
Reduzca el número de propiedades escritas y promocionadas y elimine las que no son estrictamente necesarias.
Elimine campos distintivos innecesarios. Los campos distintivos son propiedades de contexto escritas y pueden ocupar fácilmente un espacio significativo, ya que su nombre es igual a la expresión XPath que se usa para recuperar datos. La propiedad distintiva se define mediante las anotaciones en el XSD que especifica el tipo de documento. El componente de desensamblador usa el mismo enfoque adoptado para las propiedades promocionadas y usa la expresión XPath que define un campo distintivo para encontrarlo en el documento entrante. A continuación, el componente de desensamblar escribe una propiedad en el contexto donde:
Nombre: expresión XPath definida en la anotación.
Valor: valor del elemento identificado por la expresión XPath dentro de un documento entrante.
Las expresiones XPath pueden ser muy largas, especialmente cuando el elemento en cuestión es muy profundo en el esquema del documento. Por lo tanto, cuanto más distinguidos sean los campos, mayor será el tamaño del contexto. Esto, a su vez, afecta negativamente al rendimiento general.
Use la función integrada XPath proporcionada por el entorno de ejecución de orquestación.
Si los mensajes son bastante pequeños (algunos kilobytes) y con formato XML, puede des serializar el mensaje en una instancia de clase .NET y trabajar con campos y propiedades públicos. Si el mensaje necesita una elaboración compleja (código personalizado, directivas de motor de reglas de negocio, etc.) acceder a los datos mediante las propiedades expuestas por una instancia de una clase .NET es mucho más rápida mediante expresiones XPath. Cuando la lógica de negocios invocada por la orquestación se ha completado, el objeto de entidad se puede volver a serializar en un mensaje de BizTalk. Puede crear clases de .NET a partir de un esquema XML mediante una de las siguientes herramientas: herramienta XSD (.NET Framework 2.0) o SVCUTIL (.NET Framework 3.0).
Habilite un componente auxiliar desde una orquestación. Esta técnica tiene una ventaja sobre el uso de campos distintivos. De hecho, una orquestación puede leer la expresión XPath de un almacén de configuración (archivo de configuración, almacén de configuración de SSO, base de datos personalizada, etc.), por lo que, cuando tenga que cambiar la expresión XPath, no tiene que cambiar ni volver a implementar un esquema, como debe hacer para las propiedades promocionadas y los campos distintivos. En el ejemplo de código siguiente se proporciona un ejemplo de un componente auxiliar. El componente usa la clase XPathReader proporcionada por el entorno de ejecución de BizTalk. Esto permite que el código lea la secuencia de documentos hasta que se encuentre la expresión XPath.
#region Copyright
//===
//Microsoft Windows Server AppFabric Customer Advisory Team (CAT)
//
// This sample is supplemental to the technical guidance published on the community
// blog.
//
// Author: Paolo Salvatori.
//===
// Copyright © 2010 Microsoft Corporation. All rights reserved.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
// EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. YOU BEAR THE RISK OF USING IT.
//===
#endregion
#region Using Directives
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Linq;
using System.Text;
using System.Globalization;
using Microsoft.XLANGs.BaseTypes;
using Microsoft.BizTalk.Streaming;
using Microsoft.BizTalk.XPath;
#endregion
namespace Microsoft.AppFabric.CAT.Samples.DuplexMEP.Helpers
{
public class XPathHelper
{
#region Private Constants
private const string MessageCannotBeNull = "[XPathReader] The message cannot be null.";
#endregion
#region Public Static Methods
public static string GetValue(XLANGMessage message, int partIndex, string xpath)
{
try
{
if (message == null)
{
throw new ApplicationException(MessageCannotBeNull);
}
using (Stream stream = message[partIndex].RetrieveAs(typeof(Stream)) as Stream)
{
XmlTextReader xmlTextReader = new XmlTextReader(stream);
XPathCollection xPathCollection = new XPathCollection();
XPathReader xPathReader = new XPathReader(xmlTextReader, xPathCollection);
xPathCollection.Add(xpath);
while (xPathReader.Read())
{
if (xPathReader.HasAttributes)
{
for (int i = 0; i < xPathReader.AttributeCount; i++)
{
xPathReader.MoveToAttribute(i);
if (xPathReader.Match(xPathCollection[0]))
{
return xPathReader.GetAttribute(i);
}
}
}
if (xPathReader.Match(xPathCollection[0]))
{
return xPathReader.ReadString();
}
}
}
}
finally
{
message.Dispose();
}
return string.Empty;
}
#endregion
}
}
Minimizar la complejidad de la orquestación para mejorar el rendimiento
La complejidad de las orquestaciones tiene un impacto significativo en el rendimiento. A medida que aumenta la complejidad de la orquestación, el rendimiento general disminuye. Las orquestaciones se pueden usar en una variedad casi infinita de escenarios, y cada escenario podría implicar orquestaciones de complejidad variable. Evite orquestaciones complejas cuando sea posible en favor de un enfoque modular. En otras palabras, divida la lógica de negocios en varias orquestaciones reutilizables.
Si necesita implementar una orquestación compleja, defina mensajes y variables en ámbitos internos siempre que sea posible en lugar de en el nivel raíz. Esta técnica mantiene una superficie más pequeña en la memoria para cada orquestación porque las variables y los mensajes se eliminan cuando el flujo sale del ámbito donde se definieron las variables y los mensajes. Este enfoque es especialmente beneficioso cuando las orquestaciones se guardan en el Buzón de mensajes en puntos de persistencia.
Usar el módulo Orquestación de llamadas en lugar del módulo Orquestación de inicio para mejorar el rendimiento.
Use la forma Llamar a la orquestación y evite la forma Iniciar orquestación para ejecutar una orquestación anidada. De hecho, la forma Orquestación de llamadas se puede usar para llamar sincrónicamente a una orquestación a la que se hace referencia en otro proyecto. Este enfoque permite reutilizar patrones comunes de flujo de trabajo de orquestación en proyectos de BizTalk. Cuando invocas otra orquestación anidada de forma sincrónica utilizando la figura Llamar a Orquestación, la orquestación envolvente espera a que finalice la orquestación anidada antes de continuar. La orquestación anidada se ejecuta en el mismo subproceso que ejecuta la orquestación que realiza la llamada.
La forma Iniciar Orquestación es similar a la forma Llamar Orquestación, pero en este caso se llama a la orquestación anidada de forma asincrónica: el flujo de control en la orquestación que invoca continúa más allá de la invocación, sin esperar a que la orquestación invocada finalice su trabajo. Para implementar este desacoplamiento entre el autor de la llamada y las orquestaciones llamadas, el Inicio de Orquestación se implementa a través de la publicación de un mensaje en el cuadro de mensajes de BizTalk. A continuación, este mensaje es consumido por una instancia de host de BizTalk en proceso, la cual ejecuta la orquestación anidada. Cuando sea posible, use Orquestación de llamadas, especialmente si la orquestación de llamadas necesita esperar un resultado de la orquestación anidada para continuar el procesamiento. Para obtener más información sobre el uso del elemento de orquestación de llamadas, consulte los siguientes temas en la documentación de BizTalk Server 2010.
Trabajar con puertos directamente enlazados en orquestaciones (https://go.microsoft.com/fwlink/?LinkId=139902).
Anidamiento de orquestaciones (https://go.microsoft.com/fwlink/?LinkId=139903).
Uso de XmlReader con XLANGMessage frente al uso de XmlReader con XmlDocument para mejorar el rendimiento de orquestación
Para mejorar el rendimiento de orquestación de los métodos de .NET a los que se llama desde una orquestación, use XmlReader con XLANGMessage, no XmlDocument. En el ejemplo de código siguiente se muestra esta funcionalidad.
// As a general rule, use XmlReader with XLANGMessage, not XmlDocument.
// This is illustrated in the parameter passed into the following code.
// The XLANG/s compiler doesn't allow a return value of XmlReader
// so documents must be initially constructed as XmlDocument()
public static XmlDocument FromMsg(XLANGMessage old)
{
//get at the data
XmlDocument ret = new XmlDocument();
try{
XmlReader reader = (XmlReader)old[0].RetrieveAs(typeof(XmlReader));
//construct new message from old
//read property
object msgid = old.GetPropertyValue(typeof(BTS.MessageID));
}
finally {
// Call Dispose on the XLANGMessage object
// because the message doesn't belong to the
// .NET runtime - it belongs to the Messagebox database
old.Dispose();
}
return ret;
}
Otro método sería crear una clase de .NET basada en el esquema. Esto toma menos memoria que cargar el documento en un objeto XmlDocument , así como proporcionar acceso sencillo a los elementos de esquema para los desarrolladores de .NET. Para generar una clase basada en un esquema de BizTalk, puede usar la herramienta xsd.exe proporcionada con Visual Studio. Por ejemplo, ejecutar xsd.exe <schema.xsd> /classes en un esquema simple que contenga campos denominados ItemA, ItemB, ItemC, generará la siguiente clase.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.1433
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System.Xml.Serialization;
//
// This source code was auto-generated by xsd, Version=2.0.50727.42.
//
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://Schemas.MySchema")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://Schemas.MySchema", IsNullable=false)]
public partial class MySchemaRoot {
private string itemAField;
private string itemBField;
private string itemCField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ItemA {
get {
return this.itemAField;
}
set {
this.itemAField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ItemB {
get {
return this.itemBField;
}
set {
this.itemBField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string ItemC {
get {
return this.itemCField;
}
set {
this.itemCField = value;
}
}
}
A continuación, se puede hacer referencia a esta clase en el ensamblado de .NET para tener acceso a los elementos del mensaje y el objeto devuelto se puede asignar directamente a un mensaje. A continuación se muestra un ejemplo de uso de la clase generada anteriormente.
public static Root SetValues(Microsoft.XLANGs.BaseTypes.XLANGMessage msg)
{
try
{
MySchemaRoot rootObj=(MySchemaRoot)msg[0].RetrieveAs(typeof(MySchemaRoot);
rootObj.ItemA="value a";
rootObj.ItemB="value b";
rootObj.ItemC="value c";
}
finally {
msg.Dispose();
}
return rootObj;
}
Esta técnica permite usar un enfoque orientado a objetos al procesar mensajes. Esta técnica debe usarse principalmente con mensajes relativamente pequeños. Esto se debe a que, aunque esta técnica usa considerablemente menos memoria que al cargar el mensaje en un objeto XmlDocument , todo el mensaje se sigue cargando en la memoria. Al procesar mensajes más grandes, use la clase XmlReader para leer mensajes y la clase XmlWriter para escribir mensajes. Al usar XmlReader y XmlWriter, el mensaje se encuentra en un objeto VirtualStream . Si el tamaño del mensaje supera el valor especificado para el umbral de mensaje grande (bytes) que se expone en la página de configuración propiedades del grupo de BizTalk, el mensaje se escribe en el sistema de archivos. Esto reduce el rendimiento general, pero evita excepciones de memoria insuficiente.
Mejora del rendimiento al minimizar el uso de puertos lógicos enlazados a puertos físicos
Puede aumentar el rendimiento minimizando el uso de puertos lógicos enlazados a puertos físicos que usan los adaptadores siguientes:
SQL Server, Oracle
WSE, HTTP, WCF
MSMQ, MQSeries
En BizTalk Server 2010, las canalizaciones de envío y recepción se pueden invocar directamente desde una orquestación mediante la clase XLANGPipelineManager contenida en el Microsoft.XLANGs.Pipeline.dll. Por lo tanto, el procesamiento de canalizaciones se puede mover de puertos a orquestaciones; los puertos lógicos en una orquestación se pueden sustituir por una forma de expresión, que invoca una instancia de una clase específica de .NET (por ejemplo, un componente de acceso a datos mediante ADO.NET). Antes de adoptar esta técnica, debe tener en cuenta que si no usa adaptadores y puertos físicos, pierde la capacidad de aprovechar sus funciones, como el procesamiento por lotes, los reintentos, la configuración declarativa y los transportes secundarios.
Patrones de diseño de orquestación
El Diseñador de orquestaciones permite a los desarrolladores implementar una amplia gama de patrones de integración empresarial. Algunos patrones comunes incluyen agregador, control de excepciones y compensación, agente de mensajes, dispersión y recopilación, y convoy secuencial y paralelo. Estos patrones se pueden usar para desarrollar soluciones complejas de Integración de aplicaciones empresariales (EAI), arquitectura de Service-Oriented (SOA) y administración de procesos empresariales (BPM) con BizTalk Server. Para obtener más información sobre los patrones de diseño de orquestación, vea el tema Implementar patrones de diseño en orquestaciones (https://go.microsoft.com/fwlink/?LinkId=140042) en la documentación de BizTalk Server y patrones y procedimientos recomendados para la integración empresarial (https://go.microsoft.com/fwlink/?LinkId=140043).
Uso adecuado de las clases de .NET en orquestaciones para maximizar el rendimiento
En general, las clases de .NET usadas dentro de una orquestación se pueden dividir en dos categorías distintas:
Asistentes y servicios: Estas clases proporcionan servicios comunes para orquestaciones como el seguimiento, el control de errores, el almacenamiento en caché y la serialización o deserialización. La mayoría de estas clases se pueden implementar como clases estáticas sin estado interno ni varios métodos estáticos públicos. Este enfoque evita la creación de varios objetos de la misma clase en diferentes orquestaciones que se ejecutan al mismo tiempo, lo que ayuda a reducir el espacio de trabajo de los procesos de host y ahorrar memoria. Una clase sin estado ayuda a reducir el tamaño general del estado interno que se debe serializar y almacenar en el BizTalk MessageBox cuando se deshidrata una orquestación.
Entidades y objetos empresariales: Puede usar estas clases para administrar entidades, como pedidos, artículos de pedido y clientes. Una sola orquestación puede crear y administrar internamente varias instancias del mismo tipo. Estas clases suelen ser de estado y exponen campos públicos y/o propiedades y métodos para modificar el estado interno del objeto. Las instancias de estas clases se pueden crear dinámicamente mediante la deserialización de una parte XLANGMessage en un objeto .NET mediante las clases XmlSerializer o DataContractSerializer o mediante el método XLANGPart.RetrieveAs . Debe estructurar una orquestación mediante ámbitos no transaccionales de tal manera que las instancias de clases con estado se creen lo más tarde posible y se liberen tan pronto como ya no sean necesarias. Este enfoque reduce el espacio de trabajo de los procesos de host y minimiza el tamaño general del estado interno que se conserva y se serializa en la base de datos MessageBox cuando una orquestación se desactiva temporalmente. Para obtener más información sobre el uso de orquestaciones en BizTalk Server, consulte el artículo Preguntas más frecuentes sobre orquestaciones de BizTalk Server (https://go.microsoft.com/fwlink/?LinkID=116886).
Nota:
Aunque este artículo está escrito para BizTalk Server 2004 y BizTalk Server 2006, los conceptos presentados también se aplican a las orquestaciones de BizTalk Server 2010.
Bloques del controlador de excepciones de orquestación
Al usar bloques de controlador de excepciones de orquestación, incluya todas las formas de orquestación en uno o varios ámbitos (ámbitos no transaccionales siempre que sea posible) y cree al menos los siguientes bloques de controlador de excepciones:
Un bloque de controlador de excepciones para controlar un error System.Exception genérico.
Un bloque de controlador de excepciones para controlar una excepción general con el fin de detectar y controlar posibles errores no administrados, como excepciones COM.
Para obtener más información sobre el uso de bloques de control de excepciones de orquestación, consulte los siguientes artículos:
Uso del control de excepciones de BizTalk Server (https://msdn.microsoft.com/library/aa561229.aspx).
Blog de Charles Young, BizTalk Server 2006: el modelo de compensación (https://go.microsoft.com/fwlink/?LinkId=158017).
Nota:
Aunque este blog se escribió teniendo en cuenta BizTalk Server 2006, los principios descritos en el blog también se aplican a BizTalk Server.
Consideraciones al usar mapas en orquestaciones
Las siguientes consideraciones se aplican al usar mapas en orquestaciones.
Si usa un mapa para extraer o establecer propiedades usadas con lógica de negocios en una orquestación, use campos distintivos o propiedades promocionadas. Esta práctica debe seguirse porque al extraer o establecer valores con un mapa, el documento se carga en la memoria, pero cuando se usan campos distintivos o propiedades promocionadas, el motor de orquestación accede al contexto del mensaje y no carga el documento en memoria.
Si usa un mapa para agregar varios campos en un campo, use campos distintivos o propiedades promocionadas con una variable de orquestación para acumular el conjunto de resultados.