Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Hirdetmények minta bemutatja, hogyan használhatja a Felderítő funkció Hirdetmények funkcióját. A közlemények lehetővé teszik a szolgáltatások számára, hogy a szolgáltatás metaadatait tartalmazó hirdetményi üzeneteket küldjenek. Alapértelmezés szerint a szolgáltatás indításakor a rendszer hello közleményt küld, és a szolgáltatás leállásakor a rendszer búcsújelentést küld. Ezek a bejelentések csoportos továbbításra vagy pontról pontra küldhetők. Ez a minta két projektszolgáltatásból és ügyfélből áll.
Szolgáltatás
Ez a projekt egy saját üzemeltetésű számológép szolgáltatást tartalmaz.
Main A metódusban létrejön egy szolgáltatásgazda, és hozzá lesz adva egy szolgáltatásvégpont. Ezután létrejön egy ServiceDiscoveryBehavior . A hirdetmények engedélyezéséhez hozzá kell adni egy hirdetményvégpontot a ServiceDiscoveryBehavior. Ebben az esetben egy szabványos végpontot ad hozzá az UDP-csoportos küldés használatával bejelentési végpontként. Ez egy jól ismert UDP-címen keresztül közvetíti a bejelentéseket.
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();
// ...
}
Ügyfél
Ebben a projektben figyeljen arra, hogy az ügyfél hosztol egy AnnouncementService. Emellett két meghatalmazott is regisztrálva van az eseményekben. Ezek az események határozzák meg, hogy az ügyfél mit tesz online és offline bejelentések fogadásakor.
// Create an AnnouncementService instance
AnnouncementService announcementService = new AnnouncementService();
// Subscribe the announcement events
announcementService.OnlineAnnouncementReceived += OnOnlineEvent;
announcementService.OfflineAnnouncementReceived += OnOfflineEvent;
Az OnOnlineEvent és OnOfflineEvent metódusok a hello és bye bejelentési üzeneteket kezelik.
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);
}
A minta használata
Ez a minta HTTP-végpontokat használ, és a minta futtatásához hozzá kell adni a megfelelő URL-hozzáférés-vezérlési listákat. További információ: HTTP és HTTPS konfigurálása. Ha a következő parancsot emelt szintű jogosultsággal hajtja végre, hozzá kell adnia a megfelelő ACL-eket. Ha a parancs nem működik, érdemes lehet a Domain és a felhasználónév helyett a következő argumentumokat használni.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%Hozza létre a megoldást.
Futtassa a client.exe alkalmazást.
Futtassa a service.exe alkalmazást. Vegye figyelembe, hogy az ügyfél online bejelentést kap.
Zárja be a service.exe alkalmazást. Vegye figyelembe, hogy az ügyfél offline értesítést kap.