Ejemplo de anunciosAnnouncements Sample

En este ejemplo se muestra cómo utilizar la funcionalidad de anuncio de la característica de detección.This sample shows how to use the Announcement functionality of the Discovery feature. Los anuncios permiten a los servicios enviar mensajes de anuncio que contienen metadatos del servicio.Announcements allow services to send out announcement messages that contain metadata about the service. De forma predeterminada, se envía un anuncio de saludo cuando el servicio se inicia y otro de despedida al cerrarse.By default a hello announcement is sent when the service starts up and a bye announcement is sent when the service shuts down. Estos anuncios pueden ser de multidifusión o se pueden enviar de punto a punto.These announcements can be multicast or they can be sent point-to-point. Este ejemplo está compuesto de dos proyectos: servicio y cliente.This sample consists of two projects service and client.

ServicioService

Este proyecto contiene un servicio de calculadora autohospedado.This project contains a self-hosted calculator service. En el método Main, se crea un host de servicio y se le agrega un extremo de servicio.In the Main method, a service host is created and a service endpoint is added to it. Después, se crea un ServiceDiscoveryBehavior.Next, a ServiceDiscoveryBehavior is created. Para habilitar los anuncios, se debe agregar un extremo de anuncio a ServiceDiscoveryBehavior.To enable announcements, an announcement endpoint must be added to the ServiceDiscoveryBehavior. En este caso, se agrega como extremo del anuncio un extremo estándar que usa multidifusión UDP.In this case a standard endpoint, using UDP multicast is added as the announcement endpoint. De esta forma se difunden los anuncios a través de una dirección UDP conocida.This broadcasts the announcements over a well-known UDP address.

Uri baseAddress = new Uri("http://localhost:8000/" + Guid.NewGuid().ToString());  

// Create a ServiceHost for the CalculatorService type.  
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))  
{  
     serviceHost.AddServiceEndpoint(typeof(ICalculatorService), new WSHttpBinding(), String.Empty);  

     ServiceDiscoveryBehavior serviceDiscoveryBehavior = new ServiceDiscoveryBehavior();  

     // Announce the availability of the service over UDP multicast  
    serviceDiscoveryBehavior.AnnouncementEndpoints.Add(new UdpAnnouncementEndpoint());  

    // Make the service discoverable over UDP multicast.  
    serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior);                  
    serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint());  
    serviceHost.Open();  
    // ...  
}  

ClienteClient

En este proyecto, observe que el cliente hospeda un AnnouncementService.In this project, note that the client hosts an AnnouncementService. Además, se registran dos delegados con eventos.Furthermore, two delegates are registered with events. Estos eventos dictan lo que el cliente hace cuando se reciben anuncios en línea y sin conexión.These events dictate what the client does when online and offline announcements are received.

// Create an AnnouncementService instance  
AnnouncementService announcementService = new AnnouncementService();  

// Subscribe the announcement events  
announcementService.OnlineAnnouncementReceived += OnOnlineEvent;  
announcementService.OfflineAnnouncementReceived += OnOfflineEvent;  

Los métodos OnOnlineEvent y OnOfflineEvent administran los mensajes de anuncio de saludo y despedida, respectivamente.The OnOnlineEvent and OnOfflineEvent methods handle the hello and bye announcement messages respectively.

static void OnOnlineEvent(object sender, AnnouncementEventArgs e)  
{  
    Console.WriteLine();              
    Console.WriteLine("Received an online announcement from {0}:", e.AnnouncementMessage.EndpointDiscoveryMetadata.Address);  
PrintEndpointDiscoveryMetadata(e.AnnouncementMessage.EndpointDiscoveryMetadata);  
}  

static void OnOfflineEvent(object sender, AnnouncementEventArgs e)  
{  
    Console.WriteLine();  
    Console.WriteLine("Received an offline announcement from {0}:", e.AnnouncementMessage.EndpointDiscoveryMetadata.Address);  
            PrintEndpointDiscoveryMetadata(e.AnnouncementMessage.EndpointDiscoveryMetadata);  
}  

Para utilizar este ejemploTo use this sample

  1. Este ejemplo utiliza los extremos HTTP y para ejecutar este ejemplo, correcto ACL de dirección URL debe agregarse vea configurar HTTP y HTTPS para obtener más información.This sample uses HTTP endpoints and to run this sample, proper URL ACLs must be added see Configuring HTTP and HTTPS for details. Al ejecutar el siguiente comando con privilegios elevados, se deberían agregar las ACL adecuadas.Executing the following command at an elevated privilege should add the appropriate ACLs. Puede que desee sustituir su dominio y nombre de usuario para los siguientes argumentos si el comando no funciona como debería.You may want to substitute your Domain and Username for the following arguments if the command does not work as is. netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Compile la solución.Build the solution.

  3. Ejecute la aplicación client.exe.Run the client.exe application.

  4. Ejecute la aplicación service.exe.Run the service.exe application. Observe que el cliente recibe un anuncio en línea.Note the client receives an online announcement.

  5. Cierre la aplicación service.exe.Close the service.exe application. Observe que el cliente recibe un anuncio sin conexión.Note the client receives an offline announcement.

Importante

Puede que los ejemplos ya estén instalados en su equipo.The samples may already be installed on your machine. Compruebe el siguiente directorio (predeterminado) antes de continuar.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Si no existe este directorio, vaya a la página Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 [Ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) para .NET Framework 4] para descargar todos los ejemplos de Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) y WFWF .If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Este ejemplo se encuentra en el siguiente directorio.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Discovery\Announcements

Vea tambiénSee Also