Compartir a través de


TCP del mismo nivel de red

Download sample

Este ejemplo muestra cómo utilizar el enlace NetPeerTcpBinding, que proporciona comunicación entre varias partes mediante un canal del mismo nivel. Este ejemplo es una variación de Ejemplo de introducción. Consulte Ejemplo de introducción para obtener una descripción general de Windows Communication Foundation (WCF).

En este ejemplo, las instancias de la aplicación son aplicaciones de consola autohospedadas.

A diferencia de otros ejemplos de enlace de transporte, este ejemplo utiliza la interfaz de contrato personalizada (IBroadcast) con el propósito de mostrar la comunicación entre varias partes. Todas las instancias implementan este contrato para recibir los mensajes y crear servidores proxy con el mismo contrato para enviar mensajes a la malla. Esto se muestra creando un canal dúplex a la malla.

Nota

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

Entender el proceso de configuración de enlace en el ejemplo implica los siguientes conceptos del canal del mismo nivel:

  • Una resolución del mismo nivel es responsable de resolver un id. de la malla en las direcciones del extremo de unos nodos en la malla.

  • Una malla es una colección con nombre de nodos del mismo nivel identificada por el id. de la malla.

  • Un nodo del mismo nivel es una instancia de una aplicación que participa en la malla.

  • Los id. de la malla identifican la parte del host de la dirección de un extremo en la malla. Los ejemplos de estas direcciones son "net.p2p://chatMesh/servicemodelsamples/chat" o "net.p2p://broadcastMesh/servicemodelsamples/announcements". chatMesh y broadcastMesh son los id. de la malla.

  • Todos los clientes que participan en una malla, utilizan el mismo id. de malla, aunque podrían utilizar rutas de acceso y servicios diferentes. Un mensaje enviado a una dirección de extremo concreta se entrega a todos los canales del mismo nivel que utilicen esa dirección.

Cuando se abre un nodo del mismo nivel (como resultado de abrir el canal del mismo nivel), utiliza una resolución del mismo nivel para resolver el id. de malla en las direcciones de algunos nodos del mismo nivel con el que conectarse. Esto crea una malla de nodos interconectados y permite que se propaguen mensajes por la malla.

El enlace se especifica en los archivos de configuración del remitente y los receptores. El tipo de enlace se especifica en el atributo binding del elemento del extremo tal y como se explica en el ejemplo siguiente.

<client>
    <endpoint name="BroadcastEndpoint"
        address=
        "net.p2p://broadcastMesh/servicemodelsamples/announcements"
                binding="netPeerTcpBinding"
                bindingConfiguration="Binding1"
                contract="Microsoft.ServiceModel.Samples.IBroadcast">
    </endpoint>
</client>

Si utiliza el enlace NetPeerTcpBinding con el comportamiento predeterminado, se habilita la seguridad basada en la contraseña. El elemento del enlace proporciona los atributos para establecer el puerto, la dirección IP de escucha, el tipo de resolución, el tamaño máximo del mensaje, el tamaño del grupo de búferes máximo, las cuotas del lector, el modo de autenticación de los nodos del mismo nivel, la autenticación de mensajes y los tiempos de espera (para cerrar, abrir, enviar y recibir).

Nota

Este ejemplo utiliza la resolución predeterminada del mismo nivel (PNRP), que no está disponible en Windows Server 2003. Por consiguiente, para ejecutar este ejemplo en Windows Server 2003, debe utilizar una resolución personalizada del mismo nivel. Consulte Chat del canal del mismo nivel para obtener un ejemplo que utiliza una resolución del mismo nivel personalizada, como se muestra en el código siguiente.

<netPeerTcpBinding>
    <binding configurationName="Binding1"> 
        <resolver mode="Custom">
            <customResolver type=
                "MyAppNameSpace.MyCustomPeerResolver, myApp"/>
        </resolver>
    </binding>
</netPeerTcpBinding>

El archivo que contiene MyCustomPeerResolver debe estar compilado con el remitente y los receptores. Tenga en cuenta que si el ejemplo se ejecuta en varios equipos con plataformas diferentes, deben usar la misma resolución.

Las implementaciones del receptor y el remitente también muestran cómo recuperar el nodo de mismo nivel asociado con el receptor o instancia del remitente y para registrar sus eventos en línea y sin conexión. Se inicia un evento en línea cuando el nodo del mismo nivel está conectado, al menos, a otro nodo del mismo nivel en la malla. Se inicia un evento sin conexión cuando un nodo del mismo nivel ya no está conectado a ningún otro nodo del mismo nivel en la malla.

En este momento, el canal del mismo nivel no se integra con la Service Model Metadata Utility Tool (Svcutil.exe). Por esta razón, Svcutil.exe no se puede utilizar para generar un canal con tipos para el remitente.

Cuando se ejecuta el remitente, se muestra un mensaje que indica que está listo para enviar mensajes. Presione ENTRAR para enviar el mensaje de chat del ejemplo. Este mensaje se muestra en cualquiera de las ventanas de la consola del cliente del receptor actualmente en ejecución. Para finalizar los clientes, presione de nuevo Entrar en las ventanas de la consola de ese cliente (remitente o receptor).

Si habilita el seguimiento o el registro de mensajes, puede supervisar la actividad del remitente y del receptor en un nivel más profundo. Los procedimientos siguientes describen cómo habilitar el seguimiento y el registro de los mensajes.

Nota

Es importante tener en cuenta que el ejemplo no administra actualmente todas las posibles excepciones que la infraestructura puede producir. Si está utilizando estos ejemplos en un entorno comercial o de producción, siga los consejos recomendados para la gestión correcta de las excepciones.

Para configurar, generar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el Procedimiento de instalación único para ejemplos de Windows Communication Foundation.

  2. Para generar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.

  3. Para ejecutar el ejemplo en una configuración de equipos única, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation.

  4. Para instalar PNRP en Windows XP SP2 (instalación única):

    1. En el Panel de control, haga doble clic en Agregar o quitar programas.

    2. En el cuadro de diálogo Agregar o quitar programas, haga clic en Agregar o quitar componentes de Windows.

    3. En el Asistente para componentes de Windows, seleccione la casilla de verificación "Servicios de red" y haga clic en "Detalles".

    4. Marque la casilla "Entre iguales" y haga clic en "Aceptar".

    5. Haga clic en "Siguiente" en el Asistente para componentes de Windows.

    6. Cuando la instalación termine, haga clic en "Finalizar".

    7. En un símbolo de shell de sistema, inicie el servicio PNRP con el comando siguiente: net start pnrpsvc.

  5. En este ejemplo, siempre que el paso 3 se refiera al cliente y al servicio, esos pasos se aplicarán al remitente y al receptor.

  6. Inicie el receptor (o varios receptores) y el remitente. Cuando las instancias conectan, presione Entrar en la consola de la aplicación del remitente para que los receptores se envíen el mensaje de ejemplo entre sí. Todos los receptores reciben los mensajes de chat enviados por el remitente.

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.