Detalles de implementación de adaptadores de OPS
Puede que le resulte de utilidad conocer los siguientes aspectos del adaptador OPS al modificar el adaptador o configurarlo mediante programación.
Nota
El adaptador OPS se integra mediante el marco de trabajo de adaptadores. Para obtener información sobre cómo compilar adaptadores con el marco de trabajo, vea Developing Custom Adapters.
Procesamiento por lotes
El adaptador realiza el procesamiento de los mensajes uno por uno, para llevarlo a cabo de forma independiente, y las reversiones se llevan a cabo en un sólo pedido cada vez. Pese a que el adaptador procese uno por uno los mensajes, lo hace mediante el procesamiento por lotes con un tamaño de lote de mensaje. Esto facilita la modificación del adaptador para controlar los mensajes de los lotes.
Control de transacciones
El adaptador usa las instalaciones de transacciones proporcionadas por las instalacionesde System.Transactions de Microsoft .NET Framework. El adaptador crea una nueva CommittableTransaction y la usa con transactionScope. El adaptador llama a los métodos Initialize y Execute dentro del contexto de esta transacción. El código del ensamblado llamado puede participar en la transacción mediante el método estático Transaction.Current para obtener el contexto de transacción. El controlador de errores de ejemplo no emplea este servicio. Para obtener más información sobre System.Transactions, vea "System.Transactions Namespace" (Espacio de nombres System.Transactions) en la versión de la biblioteca de clases de .NET Framework.
Controlar datos distintos de los informes de errores
En la solución, el adaptador controla los mensajes de informes de errores a partir de la nueva característica de informes de errores. Sin embargo, dado que el método Execute toma una matriz de bytes como único argumento, no hay nada que limite específicamente lo que se puede pasar al método Execute .
Uso del adaptador al crear puertos mediante programación
Puede especificar el adaptador cuando cree puertos a partir de código. La siguiente tabla recoge los nombres de las propiedades personalizadas, así como la forma en la que se corresponden con los nombres para mostrar.
Nombre de propiedad personalizada de envío | Display Name (Nombre para mostrar) |
---|---|
DotNetAssemblyStrongName | DotNetAssemblyStrongName |
DotNetClassName | DotNetClassName |
InitializationData | InitializationData |
TransportLocationUri | No es aplicable. |
Todas las propiedades son valores de cadena. El valor de la propiedad TransportLocationUri se construye a partir del nombre de ensamblado y del nombre de clase. El URI tiene el valor OPS://< DotNetAssemblyStrongName>/<DotNetClassName> donde los marcadores de posición se reemplazan por los valores de la propiedad personalizada correspondiente.
Para obtener información sobre cómo crear puertos a partir del código, vea How to Create MSMQ Receive Locations and Send Ports from Code.How to Create MSMQ Receive Locations and Send Ports from Code.