Sdílet prostřednictvím


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í WebhostRegisterProtocolpř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í WebhostOpenListenerChannelInstanceadapté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

  1. Pomocí následujícího příkazu nainstalujte ASP.NET 4.0.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. 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.

  3. 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

  4. 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:

  1. 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.

  2. 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.

  3. 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.