Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el ejemplo de Anuncios se muestra cómo usar la funcionalidad de anuncios de la función de Descubrimiento. Los anuncios permiten a los servicios enviar mensajes de anuncio que contienen metadatos sobre el servicio. De forma predeterminada, se envía un anuncio de hello cuando el servicio se inicia y se envía un anuncio de bye cuando el servicio se cierra. Estos anuncios pueden ser multidifusión o se pueden enviar de punto a punto. Este ejemplo consta de dos proyectos de servicio y cliente.
Servicio
Este proyecto contiene un servicio de calculadora autohospedado. En el Main método , se crea un host de servicio y se agrega un punto de conexión de servicio. A continuación, se crea un ServiceDiscoveryBehavior . Para habilitar anuncios, se debe agregar un endpoint de anuncio al ServiceDiscoveryBehavior. En este caso, se agrega como punto de conexión del anuncio un punto de conexión estándar que usa multidifusión UDP. Esto difunde los anuncios a través de una dirección UDP conocida.
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();
// ...
}
Cliente
En este proyecto, tenga en cuenta que el cliente hospeda un AnnouncementService. Además, se registran dos delegados con eventos. Estos eventos dictan lo que hace el cliente cuando se reciben anuncios en línea y sin conexión.
// Create an AnnouncementService instance
AnnouncementService announcementService = new AnnouncementService();
// Subscribe the announcement events
announcementService.OnlineAnnouncementReceived += OnOnlineEvent;
announcementService.OfflineAnnouncementReceived += OnOfflineEvent;
Los métodos OnOnlineEvent y OnOfflineEvent se encargan de los mensajes de anuncio de "hello" y "bye" respectivamente.
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 ejemplo
En este ejemplo se usan puntos de conexión HTTP y para ejecutar este ejemplo, se deben agregar ACL de dirección URL adecuadas. Para obtener más información, consulte Configuración de HTTP y HTTPS. Al ejecutar el siguiente comando con privilegios elevados, debe agregar las ACL adecuadas. Es posible que quiera sustituir el dominio y el nombre de usuario por los argumentos siguientes si el comando no funciona tal como está.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%Compile la solución.
Ejecute la aplicación client.exe.
Ejecute la aplicación service.exe. Tenga en cuenta que el cliente recibe un anuncio en línea.
Cierre la aplicación service.exe. Observe que el cliente recibe una notificación fuera de línea.