Desconexión de módulos de red

Un par adjunto de módulos de red se separan cuando el módulo cliente o el módulo proveedor se dan de baja con el Registrador de módulos de red (NMR). Un módulo cliente anula el registro con NMR llamando a la función NmrDeregisterClient, y un módulo de proveedor anula el registro con NMR llamando a la función NmrDeregisterProvider. En el diagrama siguiente se muestran los módulos de red que inician la anulación del registro.

Diagrama que muestra los módulos de red que inician el proceso de desregistro.

Cuando cualquiera de los módulos de red se anula el registro con el NMR, el NMR llama a la función de devolución de llamada ClientDetachProvider del módulo cliente y a la función de devolución de llamada ProviderDetachClient del módulo proveedor para iniciar la desconexión del módulo de red. En el diagrama siguiente se ilustra cómo el NMR inicia el desprendimiento.

Diagrama que muestra que NMR inicia el desprendimiento de módulos de red.

Si el módulo cliente no puede desasociarse del módulo de proveedor inmediatamente, llama a la función NmrClientDetachProviderComplete después de completar la desasociación del módulo de proveedor. Del mismo modo, si el módulo de proveedor no se puede desasociar del módulo cliente inmediatamente, llama a la función NmrProviderDetachClientComplete después de completar la desasociación del módulo cliente. El siguiente diagrama ilustra los módulos de red que completan la desconexión.

Diagrama que muestra los módulos de red que completan el proceso de desconexión.

Después de que el módulo cliente y el módulo proveedor se hayan desvinculado completamente el uno del otro, el NMR llama a la función de devolución de llamada ClientCleanupBindingContext del módulo cliente y a la función de devolución de llamada ProviderCleanupBindingContext del módulo proveedor para que los módulos de red puedan limpiar sus respectivos contextos de enlace para la conexión. En el diagrama siguiente se muestra el nmR que inicia la limpieza.

Diagrama que muestra la limpieza iniciada por NMR tras la desconexión de los módulos de red.

Si el módulo cliente se ha desregistrado del NMR, la desvinculación del módulo cliente no se completa hasta que el módulo cliente se haya desasociado completamente de todos los módulos de proveedor a los que se había adjuntado anteriormente y todos esos módulos de proveedor se hayan desasociado completamente del módulo cliente. El módulo cliente espera a que se complete la desregistración llamando a la función NmrWaitForClientDeregisterComplete . Del mismo modo, si el módulo de proveedor se ha desregistrado con el NMR, la desregistración del módulo de proveedor no está completa hasta que el módulo de proveedor se haya desasociado completamente de todos los módulos cliente a los que estaba previamente adjunto y todos esos módulos cliente se hayan desasociado completamente del módulo de proveedor. El módulo de proveedor espera a que se complete la desregistración llamando a la función NmrWaitForProviderDeregisterComplete . En el diagrama siguiente se muestran los módulos de red que esperan a que se complete la desregistración.

Diagrama que muestra los módulos de red que esperan la finalización de la baja.