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.
Define la configuración de WS-Reliable Messaging. Cuando este elemento se agrega a un enlace personalizado, el canal resultante puede admitir garantías de entrega exactamente una vez.
<configuración>
<system.serviceModel>
<Enlaces>
<customBinding>
<encuadernación>
<reliableSession>
Syntax
<reliableSession acknowledgementInterval="TimeSpan"
flowControlEnabled="Boolean"
inactivityTimeout="TimeSpan"
maxPendingChannels="Integer"
maxRetryCount="Integer"
maxTransferWindowSize="Integer"
reliableMessagingVersion="Default/WSReliableMessagingFebruary2005/WSReliableMessaging11"
ordered="Boolean" />
Atributos y elementos
En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.
Attributes
| Atributo | Description |
|---|---|
| acknowledgementInterval | que TimeSpan contiene el intervalo de tiempo máximo que va a esperar el canal para enviar una confirmación de los mensajes recibidos hasta ese momento. El valor predeterminado es 00:00:0.2. |
| flowControlEnabled | Valor booleano que indica si se activa un control de flujo avanzado, una implementación específica de Microsoft del control de flujo para WS-Reliable mensajería. El valor predeterminado es true. |
| inactivityTimeout | que TimeSpan especifica la duración máxima que el canal va a permitir que la otra parte de comunicación no envíe ningún mensaje, antes de que se produzca un error en el canal. El valor predeterminado es 00:10:00. La actividad en un canal se define como recepción de una aplicación o mensajes de infraestructura. Esta propiedad controla la cantidad máxima de tiempo para mantener activa una sesión inactiva. Si el tiempo más largo pasa sin actividad, la infraestructura y los errores del canal anulan la sesión. Nota: No es necesario que la aplicación envíe mensajes periódicamente para mantener activa la conexión. |
| maxPendingChannels | Entero que especifica el número máximo de canales que pueden esperar al cliente de escucha que se va a aceptar. Este valor debe estar comprendido entre 1 y 16384 inclusive. El valor predeterminado es 4. Los canales están pendientes cuando están esperando que se acepten. Una vez alcanzado el límite, no se crea ningún canal. En su lugar, se colocan en modo pendiente hasta que este número deja de funcionar (aceptando canales pendientes). Se trata de un límite por fábrica. Cuando se alcanza el umbral y una aplicación remota intenta establecer una nueva sesión confiable, se deniega la solicitud y la operación abierta que solicitó estos errores. Este límite no se aplica al número de canales salientes pendientes. |
| número máximo de reintentos | Entero que especifica el número máximo de veces que un canal confiable intenta retransmitir un mensaje para el que no ha recibido una confirmación, llamando a Send en su canal subyacente. Este valor debe ser mayor que cero. El valor predeterminado es 8. Este valor debe ser un entero mayor que cero. Si no se recibe una confirmación después de la última retransmisión, el canal falla. Se considera que un mensaje se transfiere si el destinatario ha confirmado su entrega en el destinatario. Si no se ha recibido una confirmación en un determinado período de tiempo para un mensaje que se ha transmitido, la infraestructura retransmite automáticamente el mensaje. La infraestructura intenta reenviar el mensaje como máximo el número de veces especificado por esta propiedad. Si no se recibe una confirmación después de la última retransmisión, el canal falla. La infraestructura usa un algoritmo de retroceso exponencial para determinar cuándo retransmitir, en función de un tiempo de ida y vuelta calculado. El tiempo inicialmente comienza en 1 segundo antes de la retransmisión y duplicando el retraso con cada intento, lo que da como resultado aproximadamente 8,5 minutos pasando entre el primer intento de transmisión y el último intento de retransmisión. El tiempo para el primer intento de retransmisión se ajusta según el tiempo de ida y vuelta calculado y el período de tiempo resultante que tardan esos intentos varía en consecuencia. Esto permite que el tiempo de retransmisión se adapte dinámicamente a distintas condiciones de red. |
| maxTransferWindowSize | Entero que especifica el tamaño máximo del búfer. Los valores válidos son comprendidos entre 1 y 4096. En el cliente, este atributo define el tamaño máximo del búfer utilizado por un canal confiable para contener los mensajes que el receptor aún no reconoce. La unidad de la cuota es un mensaje. Si el búfer está lleno, se bloquean más operaciones SEND. En el receptor, este atributo define el tamaño máximo del búfer usado por el canal para almacenar los mensajes entrantes que aún no se han enviado a la aplicación. Si el búfer está lleno, el receptor quita silenciosamente más mensajes y el cliente requiere la retransmisión. |
| ordered | Valor booleano que especifica si se garantiza que los mensajes lleguen en el orden en que se enviaron. Si esta configuración es false, los mensajes pueden llegar fuera del orden. El valor predeterminado es true. |
| reliableMessagingVersion | Valor válido de ReliableMessagingVersion que especifica la versión de WS-ReliableMessaging que se va a usar. |
Elementos secundarios
Ninguno
Elementos primarios
| Elemento | Description |
|---|---|
| <encuadernación> | Define todas las funcionalidades de enlace del enlace personalizado. |
Observaciones
Las sesiones confiables proporcionan características para la mensajería y las sesiones confiables. La comunicación confiable de mensajería reintenta la comunicación en caso de error y permite especificar garantías de entrega, como la llegada en orden de los mensajes. Las sesiones mantienen el estado de los clientes entre llamadas. Este elemento también proporciona opcionalmente la entrega ordenada de mensajes. Esta sesión implementada puede cruzar soap e intermediarios de transporte.
Cada elemento de enlace representa un paso de procesamiento al enviar o recibir mensajes. En tiempo de ejecución, los elementos de enlace crean los generadores de canales y los agentes de escucha necesarios para crear pilas de canales salientes y entrantes necesarias para enviar y recibir mensajes.
reliableSession proporciona una capa opcional en la pila que puede establecer una sesión confiable entre los puntos de conexión y configurar el comportamiento de esta sesión.
Para obtener más información, consulte Reliable Sessions.
Example
En el ejemplo siguiente se muestra cómo configurar un enlace personalizado con varios elementos de codificación de mensajes y transporte, especialmente habilitando sesiones confiables, que mantiene el estado del cliente y especifica garantías de entrega en orden. Esta característica se configura en los archivos de configuración de la aplicación para el cliente y el servicio. En el ejemplo se muestra la configuración del servicio.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
<!-- specify customBinding binding and a binding configuration to use -->
<endpoint address=""
binding="customBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!-- custom binding configuration - configures HTTP transport, reliable sessions -->
<bindings>
<customBinding>
<binding name="Binding1">
<reliableSession />
<security authenticationMode="SecureConversation"
requireSecurityContextCancellation="true">
</security>
<compositeDuplex />
<oneWay />
<textMessageEncoding messageVersion="Soap12WSAddressing10"
writeEncoding="utf-8" />
<httpTransport authenticationScheme="Anonymous"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard"
proxyAuthenticationScheme="Anonymous"
realm=""
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>