Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Exemplet Meddelanden visar hur du använder Meddelandefunktionen i upptäckningsfunktionen. Meddelanden gör det möjligt för tjänster att skicka meddelanden som innehåller metadata om tjänsten. Som standard skickas ett hello-meddelande när tjänsten startas och ett bye-meddelande skickas när tjänsten stängs av. Dessa meddelanden kan vara flersändningar eller skickas som punkt-till-punkt överföringar. Det här exemplet består av två projekt: tjänst och klient.
Tjänster
Det här projektet innehåller en lokalt installerad kalkylatortjänst.
Main I metoden skapas en tjänstvärd och en tjänstslutpunkt läggs till i den. Därefter skapas en ServiceDiscoveryBehavior. Om du vill aktivera meddelanden måste en slutpunkt för meddelanden läggas till i ServiceDiscoveryBehavior. I det här fallet läggs en standardslutpunkt till med UDP multicast som slutpunkt för meddelanden. Detta sänder meddelandena via en välkänd UDP-adress.
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
I det här projektet, observera att klienten är värd för en AnnouncementService. Dessutom registreras två ombud vid evenemang. Dessa händelser avgör vad klienten gör när online- och offlinemeddelanden tas emot.
// Create an AnnouncementService instance
AnnouncementService announcementService = new AnnouncementService();
// Subscribe the announcement events
announcementService.OnlineAnnouncementReceived += OnOnlineEvent;
announcementService.OfflineAnnouncementReceived += OnOfflineEvent;
Metoderna OnOnlineEvent och OnOfflineEvent hanterar meddelandena hello respektive 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);
}
Så här använder du det här exemplet
Det här exemplet använder HTTP-slutpunkter och för att köra det här exemplet måste rätt URL-ACL:er läggas till. Mer information finns i Konfigurera HTTP och HTTPS. Om du kör följande kommando med en förhöjd behörighet bör du lägga till lämpliga ACL:er. Du kanske vill ersätta domänen och användarnamnet med följande argument om kommandot inte fungerar som det är.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%Skapa lösningen.
Kör client.exe-programmet.
Kör service.exe-programmet. Observera att klienten får ett onlinemeddelande.
Stäng programmet service.exe. Observera att klienten får ett offlinemeddelande.