Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W przykładzie Ogłoszeń pokazano, jak używać funkcji Ogłoszenia w funkcji odnajdywania. Ogłoszenia umożliwiają usługom wysyłanie komunikatów zawierających metadane dotyczące usługi. Domyślnie, po uruchomieniu usługi wysyłane jest ogłoszenie powitalne, a po jej zamknięciu ogłoszenie pożegnalne. Te ogłoszenia mogą być przesyłane multicast lub punkt do punktu. Ten przykład składa się z dwóch projektów: serwisowego i klienckiego.
Usługa
Ten projekt zawiera samoobsługową usługę kalkulatora. W metodzie Main
jest tworzony host usługi i do niego dodawany jest punkt końcowy usługi. Następnie zostanie utworzony element ServiceDiscoveryBehavior . Aby włączyć anonsy, do elementu należy dodać punkt końcowy anonsu ServiceDiscoveryBehavior. W tym przypadku jako punkt końcowy ogłoszenia dodawany jest standardowy punkt końcowy, korzystający z multiemisji UDP. Spowoduje to emisję anonsów za pośrednictwem dobrze znanego adresu UDP.
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();
// ...
}
Klient
W tym projekcie należy pamiętać, że klient hostuje element AnnouncementService. Ponadto dwóch delegatów jest zarejestrowanych na wydarzenia. Te zdarzenia określają, co klient robi po odebraniu anonsów online i offline.
// Create an AnnouncementService instance
AnnouncementService announcementService = new AnnouncementService();
// Subscribe the announcement events
announcementService.OnlineAnnouncementReceived += OnOnlineEvent;
announcementService.OfflineAnnouncementReceived += OnOfflineEvent;
Metody OnOnlineEvent
i OnOfflineEvent
obsługują odpowiednio komunikaty anonsów hello i bye.
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);
}
Aby skorzystać z tego przykładu
W tym przykładzie użyto punktów końcowych HTTP, a do uruchomienia przykładu należy dodać odpowiednie ACL adresów URL. Aby uzyskać więcej informacji, zobacz Konfigurowanie protokołu HTTP i HTTPS. Wykonanie następującego polecenia z podwyższonym poziomem uprawnień powinno spowodować dodanie odpowiednich ACL. Jeśli polecenie nie działa, możesz zastąpić domenę i nazwę użytkownika następującymi argumentami.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
Skompiluj rozwiązanie.
Uruchom aplikację client.exe.
Uruchom aplikację service.exe. Zwróć uwagę, że klient otrzymuje ogłoszenie online.
Zamknij aplikację service.exe. Zwróć uwagę, że klient otrzymuje anons w trybie offline.