Sdílet prostřednictvím


Ukázka oznámení

Ukázka Oznámení ukazuje, jak používat funkci Oznámení funkce Zjišťování. Oznámení umožňují službám odesílat zprávy s oznámením, které obsahují metadata o službě. Ve výchozím nastavení se při spuštění služby odešle oznámení hello a při vypnutí služby se odešle oznámení bye. Tato oznámení můžou být vícesměrová nebo mohou být odeslána typu point-to-point. Tato ukázka se skládá ze dvou projektů služby a klienta.

Služba

Tento projekt obsahuje službu kalkulačky v místním prostředí. Main V metodě se vytvoří hostitel služby a do něj se přidá koncový bod služby. V dalším kroku se vytvoří.ServiceDiscoveryBehavior Chcete-li povolit oznámení, musí být do koncového ServiceDiscoveryBehaviorbodu oznámení přidán . V tomto případě se jako koncový bod oznámení přidá vícesměrové vysílání UDP. Tím se oznámení vysílají přes dobře známou 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

V tomto projektu si všimněte, že klient hostuje .AnnouncementService Kromě toho jsou dva delegáti zaregistrovaní u událostí. Tyto události určují, co klient dělá při přijetí online a offline oznámení.

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

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

OnOfflineEvent Metody OnOnlineEvent zpracovávají zprávy s oznámením hello a 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);
}

Použití této ukázky

  1. Tato ukázka používá koncové body HTTP a ke spuštění této ukázky je nutné přidat správné seznamy ACL adres URL. Další informace najdete v tématu Konfigurace PROTOKOLU HTTP a HTTPS. Spuštěním následujícího příkazu se zvýšenými oprávněními by se měly přidat příslušné seznamy ACL. Pokud příkaz nefunguje tak, jak je, může být vhodné nahradit doménu a uživatelské jméno následujícími argumenty. netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Sestavte řešení.

  3. Spusťte aplikaci client.exe.

  4. Spusťte aplikaci service.exe. Všimněte si, že klient obdrží online oznámení.

  5. Zavřete aplikaci service.exe. Všimněte si, že klient obdrží oznámení offline.