Share via


Resolución personalizada del mismo nivel de canal del mismo nivel

Download sample

El ejemplo de resolución personalizada del mismo nivel muestra cómo implementar una resolución personalizada que puede usarse con las aplicaciones de canal del mismo nivel.

Este ejemplo se basa en el ejemplo Host automático. Además, consulte Ejemplo de introducción para obtener información general de alto nivel de Windows Communication Foundation (WCF).

Nota

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

Conceptos clave:

Un canal del mismo nivel es una tecnología de comunicaciones de punto a punto (P2P) entre varias partes en WCF. Permite una mensajería segura, escalable y confiable. Un ejemplo común de una aplicación con varias partes que se puede beneficiar del canal del mismo nivel es el caso de las aplicaciones colaborativas como el chat, donde un grupo de personas conversan entre ellas de la misma manera que de punto a punto sin la necesidad de servidores. Un canal del mismo nivel permiten los escenarios de consumidor y de empresa alrededor de la colaboración de P2P, la distribución de contenido, el equilibrio de carga y el procesamiento distribuido.

El canal del mismo nivel introduce los nuevos conceptos siguientes:

  • Una malla es una colección con nombre (un gráfico interconectado) de nodos del mismo nivel que pueden comunicarse entre ellos y que se identifican por un id. de malla único.

    Nota

    Los nodos activos en la malla publican sus nombres de malla de manera que otros puedan encontrarlos. Una malla tiene las características siguientes: ajusta para cambiar la pertenencia, tiene la conectividad elástica en un entorno en el que los nodos se combinan constantemente y dejan la malla y se optimiza dinámicamente según los modelos de tráfico.

  • Un nodo del mismo nivel es un extremo en una malla. Una aplicación puede tener varios nodos del mismo nivel que participan en mallas diferentes.

  • Un canal del mismo nivel es un canal que se construye utilizando el enlace netPeerTcpBinding o un enlace personalizado que utiliza PeerTransportBindingElement.

  • Una resolución del mismo nivel es responsable de resolver un id. de malla en las direcciones de extremo de los nodos en la malla. Cuando se abre un nodo del mismo nivel, utiliza una resolución del mismo nivel para resolver el id. de la malla como una lista de direcciones de otros nodos del mismo nivel en la malla. Esto crea una malla de nodos interconectados que permite propagar los mensajes a lo largo de la malla.

El ejemplo muestra cómo escribir un servicio web personalizado de la resolución de mismo nivel y cómo autoalojar el servicio desde dentro de una aplicación ejecutable. El cliente no es una aplicación independiente, pero está compilado con otras aplicaciones de canal del mismo nivel que utilizan una resolución del mismo nivel personalizada. Consulte el ejemplo Chat del canal del mismo nivel para ver cómo las aplicaciones de canal del mismo nivel pueden utilizar el lado de cliente de una resolución del mismo nivel personalizada.

Un servicio de resolución del mismo nivel personalizado es un servicio de singleton que almacena en caché los id. de malla y las direcciones de extremo en un diccionario y responde al registro, a la eliminación del registro y resuelve las solicitudes de los clientes.

Se espera que los id. de malla sean únicos. Si varias aplicaciones utilizan la misma resolución, deberían elegir los id. de malla diferentes para evitar conflictos.

El ejemplo implementa una función principal estática para crear un ServiceHost para el tipo CustomPeerResolverService determinado. El host también es responsable de proporcionar una dirección base al host de servicio, que se ha configurado en los valores de la aplicación en el archivo de configuración (App.config).

<appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress"
     value=" net.tcp://localhost/servicemodelsamples/peerResolverService" />
</appSettings>

El servicio implementa el contrato, que expone las operaciones RegisterMeshId, UnregisterMeshId y ResolveMeshId. El cliente realiza solicitudes sincrónicas a una operación determinada y el servicio responde con el resultado.

El servicio expone un extremo único para comunicarse con el servicio, definido mediante el archivo de configuración (App.config). El enlace se configura con un NetTcpBinding estándar, que proporciona la comunicación de TCP.

<services>
    <service 
       service="Microsoft.ServiceModel.Samples. CustomPeerResolverService">
       <!-- use base address provided by the host -->
       <endpoint address=""
            binding=" netTcpBinding "
             contract="Microsoft.ServiceModel.Samples. ICustomPeerResolver" />
    </service>
</services>

Tal y como se ha configurado, un cliente puede tener acceso al servicio en net.tcp://localhost/servicemodelsamples/peerResolverservice en el mismo equipo. Para que los clientes en equipos remotos tengan acceso al servicio, se debe especificar un nombre de dominio completo en lugar del host local.

Al ejecutar el ejemplo, el registro de la operación y los mensajes que no son de registro se muestran en la ventana de la consola de servicio. Si se constituyen varios registros para el mismo id. de malla, sólo el primer registro y la última anulación de registro provocan que los mensajes se muestren en la ventana de la consola. Presione ENTRAR en la ventana de la consola para cerrar el servicio (después de cerrar las aplicaciones de canal del mismo nivel que usan este servicio).

Nota

Este 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#, 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 o cruzada, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation. Si utiliza este ejemplo como una resolución para la aplicación de chat, asegúrese de iniciar el servicio antes de iniciar la aplicación Chat del canal del mismo nivel.

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.