Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Beispiel "Ankündigungen" zeigt, wie Sie die Ankündigungsfunktion des Discovery-Features verwenden. Ankündigungen ermöglichen es Diensten, Ankündigungsnachrichten zu senden, die Metadaten zum Dienst enthalten. Standardmäßig wird eine Hello-Ankündigung gesendet, wenn der Dienst gestartet wird und eine Bye-Ankündigung gesendet wird, wenn der Dienst heruntergefahren wird. Diese Ankündigungen können Multicast sein oder sie können Punkt-zu-Punkt gesendet werden. Dieses Beispiel besteht aus einem Service- und einem Kundenprojekt.
Dienstleistung
Dieses Projekt enthält einen selbst gehosteten Rechnerdienst. In der Main Methode wird ein Diensthost erstellt und ein Dienstendpunkt hinzugefügt. Danach wird ein ServiceDiscoveryBehavior erstellt. Um Ankündigungen zu aktivieren, muss ein Ankündigungsendpunkt hinzugefügt werden.ServiceDiscoveryBehavior In diesem Fall wird ein Standardendpunkt mit UDP Multicast als Ankündigungsendpunkt hinzugefügt. Dadurch werden die Ankündigungen über eine bekannte UDP-Adresse übertragen.
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();
// ...
}
Kunde
Beachten Sie in diesem Projekt, dass der Kunde ein AnnouncementService hostet. Darüber hinaus sind zwei Delegierte bei Veranstaltungen registriert. Diese Ereignisse diktieren, was der Client tut, wenn Online- und Offlineankündigungen empfangen werden.
// Create an AnnouncementService instance
AnnouncementService announcementService = new AnnouncementService();
// Subscribe the announcement events
announcementService.OnlineAnnouncementReceived += OnOnlineEvent;
announcementService.OfflineAnnouncementReceived += OnOfflineEvent;
Die OnOnlineEvent-Methode und die OnOfflineEvent-Methode behandeln jeweils die Hello- und Bye-Ankündigungsmeldungen.
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);
}
So verwenden Sie dieses Beispiel
In diesem Beispiel werden HTTP-Endpunkte verwendet und zum Ausführen dieses Beispiels müssen die richtigen URL-ACLs hinzugefügt werden. Weitere Informationen finden Sie unter Konfigurieren von HTTP und HTTPS. Wenn Sie den folgenden Befehl mit erhöhten Rechten ausführen, sollten Sie die entsprechenden ACLs hinzufügen. Möglicherweise möchten Sie Ihre Domäne und Ihren Benutzernamen durch die folgenden Argumente ersetzen, wenn der Befehl nicht wie folgt funktioniert.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%Erstellen Sie die Lösung.
Führen Sie die client.exe Anwendung aus.
Führen Sie die service.exe Anwendung aus. Beachten Sie, dass der Client eine Onlineankündigung erhält.
Schließen Sie die service.exe Anwendung. Beachten Sie, dass der Client eine Offlineankündigung erhält.