Aktivace UDP
Ukázka UdpActivation je založená na ukázce Transport: UDP . Rozšiřuje přenos: ukázka UDP pro podporu aktivace procesu pomocí služby aktivace procesu systému Windows (WAS).
Ukázka se skládá ze tří hlavních částí:
Aktivátor protokolu UDP, samostatný proces, který přijímá zprávy UDP jménem aplikací, které se mají aktivovat.
Klient, který k odesílání zpráv používá vlastní přenos UDP.
Služba (hostovaná v pracovním procesu aktivovaném službou WAS), která přijímá zprávy přes vlastní přenos UDP.
Aktivátor protokolu UDP
Aktivátor protokolu UDP je mostem mezi klientem WCF a službou WCF. Zajišťuje komunikaci dat prostřednictvím protokolu UDP v přenosové vrstvě. Má dvě hlavní funkce:
ADAPTÉR NASlouchacího procesu WAS (LA), který spolupracuje se systémem WAS, aby aktivoval procesy v reakci na příchozí zprávy.
Naslouchací proces protokolu UDP, který přijímá zprávy UDP jménem aplikací, které se mají aktivovat.
Aktivátor musí být spuštěný jako samostatný program na serverovém počítači. Adaptéry naslouchacího procesu WAS (například NetTcpActivator a NetPipeActivator) se obvykle implementují v dlouhotrvajících službách Windows. Pro jednoduchost a srozumitelnost však tato ukázka implementuje aktivátor protokolu jako samostatnou aplikaci.
Adaptér naslouchacího procesu WAS
Adaptér naslouchacího procesu WAS pro UDP je implementován ve UdpListenerAdapter
třídě. Jedná se o modul, který komunikuje s WAS k provedení aktivace aplikace pro protokol UDP. Toho dosáhnete voláním následujících rozhraní API webového hostitele:
WebhostRegisterProtocol
WebhostUnregisterProtocol
WebhostOpenListenerChannelInstance
WebhostCloseAllListenerChannelInstances
Po počátečním volání WebhostRegisterProtocol
přijímá adaptér naslouchacího procesu zpětné ApplicationCreated
volání ze systému WAS pro všechny aplikace zaregistrované v souboru applicationHost.config (nachází se v umístění %windir%\system32\inetsrv). V této ukázce zpracováváme pouze aplikace s povoleným protokolem UDP (s ID protokolu jako "net.udp"). Jiné implementace to mohou zpracovat jinak, pokud takové implementace reagují na dynamické změny konfigurace aplikace (například přechod aplikace ze zakázané na povolenou).
Po přijetí zpětného ConfigManagerInitializationCompleted
volání označuje, že WAS dokončila všechna oznámení pro inicializaci protokolu. V tuto chvíli je adaptér naslouchacího procesu připravený ke zpracování žádostí o aktivaci.
Když při prvním spuštění aplikace přijde nový požadavek, adaptér naslouchacího procesu volá WebhostOpenListenerChannelInstance
funkci WAS, která spustí pracovní proces, pokud ještě není spuštěný. Potom se načtou obslužné rutiny protokolu a spustí se komunikace mezi adaptérem naslouchacího procesu a virtuální aplikací.
Adaptér naslouchacího procesu je zaregistrovaný v adresáři %SystemRoot%\System32\inetsrv\ApplicationHost.config v <listenerAdapters>
následující části:
<add name="net.udp" identity="S-1-5-21-2127521184-1604012920-1887927527-387045" />
Naslouchací proces protokolu
Naslouchací proces protokolu UDP je modul uvnitř aktivátoru protokolu, který naslouchá koncovému bodu UDP jménem virtuální aplikace. Je implementována ve třídě UdpSocketListener
. Koncový bod je reprezentován tak, jak IPEndpoint
se číslo portu extrahuje z vazby protokolu pro lokalitu.
Řídicí služba
V této ukázce používáme WCF ke komunikaci mezi aktivátorem a pracovním procesem WAS. Služba, která se nachází v aktivátoru, se nazývá Řídicí služba.
Obslužné rutiny protokolu
Po volání WebhostOpenListenerChannelInstance
adaptéru naslouchacího procesu spustí správce procesů WAS pracovní proces, pokud není spuštěn. Správce aplikace uvnitř pracovního procesu pak načte obslužnou rutinu protokolu UDP (PPH) s požadavkem na to ListenerChannelId
. PPH se mění volání IAdphManager
.StartAppDomainProtocolListenerChannel
pro spuštění obslužné rutiny protokolu UDP AppDomain Protocol (ADPH).
HostedUDPTransportConfiguration
Informace jsou zaregistrovány v souboru Web.config následujícím způsobem:
<serviceHostingEnvironment>
<add name="net.udp" transportConfigurationType="Microsoft.ServiceModel.Samples.Hosting.HostedUdpTransportConfiguration, UdpActivation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6fa904d2da1848d6" />
</serviceHostingEnvironment>
Speciální nastavení pro tuto ukázku
Tuto ukázku lze sestavit a spustit pouze v systémech Windows Vista, Windows Server 2008 nebo Windows 7. Pokud chcete spustit ukázku, musíte nejprve správně nastavit všechny komponenty. K instalaci ukázky použijte následující postup.
Nastavení této ukázky
Pomocí následujícího příkazu nainstalujte ASP.NET 4.0.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Sestavte projekt v systému Windows Vista. Po kompilaci také provádí následující operace ve fázi po sestavení:
Nainstaluje vazbu UDP na výchozí web.
Vytvoří virtuální aplikaci ServiceModelSamples, která odkazuje na fyzickou cestu: %SystemDrive%\inetpub\wwwroot\servicemodelsamples.
Pro tuto virtuální aplikaci také povolí protokol net.udp.
Spusťte aplikaci uživatelského rozhraní "WasNetActivator.exe". Klikněte na kartu Instalační program, zaškrtněte následující políčka a potom je nainstalujte kliknutím na nainstalovat:
Adaptér naslouchacího procesu UDP
Obslužné rutiny protokolu UDP
Klikněte na kartu Aktivace aplikace uživatelského rozhraní "WasNetActivator.exe". Kliknutím na tlačítko Start spusťte adaptér naslouchacího procesu. Teď jste připraveni spustit program.
Poznámka:
Po dokončení této ukázky je nutné spustit Cleanup.bat, abyste odebrali vazbu net.udp z výchozího webu.
Ukázka použití
Po kompilaci se vygenerují čtyři různé binární soubory:
Client.exe: Kód klienta. App.config je zkompilován do konfiguračního souboru klienta Client.exe.config.
UDPActivation.dll: knihovna, která obsahuje všechny hlavní implementace UDP.
Service.dll: Kód služby. To se zkopíruje do adresáře \bin virtuální aplikace ServiceModelSamples. Soubor služby je Service.svc a konfigurační soubor je Web.config. Po kompilaci se zkopírují do následujícího umístění: %SystemDrive%\Inetpub\wwwroot\ServiceModelSamples.
WasNetActivator: Program aktivátoru UDP.
Ujistěte se, že jsou všechny požadované části správně nainstalované. Následující kroky ukazují, jak spustit ukázku:
Ujistěte se, že byly spuštěny následující služby systému Windows:
Služba aktivace procesu systému Windows (WAS).
Internetová informační služba (IIS): W3SVC.
Pak aktivátor spusťte WasNetActivator.exe. Na kartě Aktivace je v rozevíracím seznamu vybrán jediný protokol UDP. Kliknutím na tlačítko Start spusťte aktivaci.
Po spuštění aktivátoru můžete klientský kód spustit spuštěním Client.exe z příkazového okna. Následuje ukázkový výstup:
Testing Udp Activation. Start the status service. Sending UDP datagrams. Type a word that you want to say to the server: Hello, world! Sending datagram: Hello, world![0] Sending datagram: Hello, world![1] Sending datagram: Hello, world![2] Sending datagram: Hello, world![3] Sending datagram: Hello, world![4] Calling UDP duplex contract (ICalculatorContract). 0 + 0 = 0 1 + 2 = 3 2 + 4 = 6 3 + 6 = 9 4 + 8 = 12 Getting status and dump server traces: Operation 'Hello' is called: Hello, world![0] Operation 'Hello' is called: Hello, world![1] Operation 'Hello' is called: Hello, world![2] Operation 'Hello' is called: Hello, world![3] Operation 'Hello' is called: Hello, world![4] Operation 'Add' is called: 0 + 0 Operation 'Add' is called: 1 + 2 Operation 'Add' is called: 2 + 4 Operation 'Add' is called: 3 + 6 Operation 'Add' is called: 4 + 8 Press <ENTER> to complete test.