Compartir a través de


Activación UDP

Download sample

Este ejemplo se basa en el ejemplo Transporte: UDP. Extiende el ejemplo Transporte: UDP para admitir la activación del proceso usando el Servicio de activación de procesos de Windows (WAS).

El ejemplo está compuesto de tres partes principales:

  • Un activador del protocolo UDP, un proceso independiente que recibe los mensajes de UDP en nombre de las aplicaciones que se van a activar.

  • Un cliente que utiliza el transporte personalizado de UDP para enviar los mensajes.

  • Un servicio (hospedado en un proceso de trabajo activado por WAS) que recibe los mensajes sobre el transporte personalizado de UDP.

Activador del protocolo UDP

El activador del protocolo UDP es un puente entre el cliente WCF y el servicio WCF. Proporciona la comunicación de datos a través del protocolo UDP en el nivel de transporte. Tiene dos funciones principales:

  • El Adaptador del agente de escucha (LA) de WAS, que colabora con WAS para activar los procesos como respuesta a los mensajes entrantes.

  • El Agente de escucha del protocolo UDP, que acepta los mensajes de UDP en nombre de las aplicaciones que se van a activar.

El activador se debe estar ejecutando como un programa independiente en el equipo del servidor. Normalmente, los adaptadores del agente de escucha de WAS (como NetTcpActivator y NetPipeActivator) se implementan en servicios de Windows de ejecución prolongada. Sin embargo, por motivos de simplicidad y claridad, este ejemplo implementa el activador de protocolo como una aplicación independiente.

Adaptador del agente de escucha de WAS

El Adaptador del agente de escucha de WAS para UDP se implementa en la clase UdpListenerAdapter. Es el módulo que interactúa con WAS para realizar la activación de la aplicación para el protocolo UDP. Esto se logra llamando a las API de Webhost siguientes:

  • WebhostRegisterProtocol

  • WebhostUnregisterProtocol

  • WebhostOpenListenerChannelInstance

  • WebhostCloseAllListenerChannelInstances

Después de llamar inicialmente a WebhostRegisterProtocol, el adaptador del agente de escucha recibe ApplicationCreated de la devolución de la llamada desde WAS para todas las aplicaciones registradas en applicationHost.config (situado en %windir%\system32\inetsrv). En este ejemplo, administramos sólo las aplicaciones con el protocolo UDP (con el id. de protocolo como "net.udp") habilitado. Otras implementaciones pueden administrar esto de manera diferente si tales implementaciones responden a los cambios de configuración dinámicos en la aplicación (por ejemplo, una transición de la aplicación de deshabilitada a habilitada).

Cuando se recibe ConfigManagerInitializationCompleted de devolución de llamada, indica que WAS ha terminado todas las notificaciones para la inicialización del protocolo. En este momento, el adaptador del agente de escucha está listo para procesar las solicitudes de activación del proceso.

Cuando una nueva solicitud entra por primera vez para una aplicación, el adaptador del agente de escucha llama a WebhostOpenListenerChannelInstance en WAS, lo que inicia el proceso de trabajo si no se ha iniciado aún. A continuación, se cargan los controladores de protocolo y se puede iniciar la comunicación entre el adaptador del agente de escucha y la aplicación virtual.

El adaptador del agente de escucha se registra en %SystemRoot%\System32\inetsrv\ApplicationHost.config en la sección <listenerAdapters> de la siguiente manera:

<add name="net.udp" identity="S-1-5-21-2127521184-1604012920-1887927527-387045" />

Agente de escucha de protocolo

El agente de escucha del protocolo UDP es un módulo dentro del activador de protocolo que realiza escuchas en un extremo de UDP en nombre de la aplicación virtual. Se implementa en la clase UdpSocketListener. El extremo se representa como IPEndpoint para lo que el número de puerto se extrae del enlace del protocolo para el sitio.

Servicio de control

En este ejemplo, utilizamos WCF para comunicarse entre el activador y el proceso de trabajo de WAS. El servicio que reside en el activador se denomina "servicio de control".

Controladores de protocolo

Después de que el adaptador del agente de escucha llame a WebhostOpenListenerChannelInstance, el administrador del proceso de WAS inicia el proceso de trabajo si no comienza. El administrador de la aplicación dentro del proceso de trabajo carga a continuación el controlador de protocolo de proceso UDP (PPH) con la solicitud para ese ListenerChannelId. PPH a su vez llama a IAdphManager.StartAppDomainProtocolListenerChannel para iniciar el controlador de protocolo Appdomain de UDP (ADPH).

HostedUDPTransportConfiguration

La información se registra en Web.config de la siguiente manera:

<serviceHostingEnvironment>
<add name="net.udp" transportConfigurationType="Microsoft.ServiceModel.Samples.Hosting.HostedUdpTransportConfiguration, UdpActivation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6fa904d2da1848d6" />
</serviceHostingEnvironment>

Uso del ejemplo

Después de la compilación, se han generador cuatro binarios diferentes:

  • Client.exe: el código de cliente. App.config está compilado en el archivo de configuración del cliente Client.exe.config.

  • UDPActivation.dll: la biblioteca que contiene todas las implementaciones de UDP principales.

  • Service.dll: el código de servicio. Se copia en el directorio \bin de ServiceModelSamples de la aplicación virtual. El archivo de servicio es Service.svc y el archivo de configuración es Web.config. Después de la compilación, se copian en la ubicación siguiente: %SystemDrive%\Inetpub\wwwroot\ServiceModelSamples.

  • WasNetActivator: el programa activador de UDP.

  • Asegúrese de que todas las piezas necesarias se instalan correctamente. Los pasos siguientes muestran cómo ejecutar el ejemplo:

  1. Asegúrese que se hayan iniciado los siguientes servicios de Windows:

    • Servicio de activación de procesos de Windows (WAS).

    • Internet Information Service (IIS): W3SVC.

  2. A continuación, inicie el activador, WasNetActivator.exe. En la ficha Activación, el único protocolo, UDP, está seleccionado en la lista desplegable. Haga clic en el botón Iniciar para iniciar el activador.

  3. Una vez iniciado el activador, puede ejecutar el código de cliente ejecutando Client.exe desde una ventana de comandos. A continuación, se incluye la salida del ejemplo.

    Testing Udp Activation.
    Start the status service.
    Sending UDP datagrams.
    Type a word that you want to say to the server: Hello, world!
        Sending datagram: Hello, world![0]
        Sending datagram: Hello, world![1]
        Sending datagram: Hello, world![2]
        Sending datagram: Hello, world![3]
        Sending datagram: Hello, world![4]
    Calling UDP duplex contract (ICalculatorContract).
        0 + 0 = 0
        1 + 2 = 3
        2 + 4 = 6
        3 + 6 = 9
        4 + 8 = 12
    Getting status and dump server traces:
        Operation 'Hello' is called: Hello, world![0]
        Operation 'Hello' is called: Hello, world![1]
        Operation 'Hello' is called: Hello, world![2]
        Operation 'Hello' is called: Hello, world![3]
        Operation 'Hello' is called: Hello, world![4]
        Operation 'Add' is called: 0 + 0
        Operation 'Add' is called: 1 + 2
        Operation 'Add' is called: 2 + 4
        Operation 'Add' is called: 3 + 6
        Operation 'Add' is called: 4 + 8
    Press <ENTER> to complete test.
    

Instalación especial para este ejemplo

Este ejemplo sólo se puede generar y ejecutar en Windows Vista. Para ejecutar el ejemplo, debe tener primero todos los componentes configurados correctamente. Utilice los siguientes pasos para instalar el ejemplo:

  1. Genere el proyecto en Windows Vista. Después de la compilación, realiza también las operaciones siguientes en la fase posterior a la generación:

    • Instala el enlace de UDP para "Sitio Web predeterminado" del sitio.

    • Crea "ServiceModelSamples" de la aplicación virtual para señalar a la ruta de acceso física: "%SystemDrive%\inetpub\wwwroot\servicemodelsamples."

    • También habilita el protocolo "net.udp" para esta aplicación virtual.

  2. Inicie "WasNetActivator.exe" de la aplicación de interfaz de usuario. Haga clic en la ficha Programa de instalación, marque las casillas siguientes y, a continuación, haga clic en Instalar para instalarlos:

    • Adaptador del agente de escucha de UDP

    • Controladores de protocolo UDP

  3. Haga clic en la ficha Activación de "WasNetActivator.exe" de la aplicación de interfaz de usuario. Haga clic en el botón Iniciar para iniciar el adaptador del agente de escucha. Ahora ya está listo para ejecutar el programa.

    Nota

    Cuando haya finalizado con este ejemplo, debe ejecutar Cleanup.bat para quitar el enlace net.udp del "Sitio Web predeterminado".

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.