Aracılığıyla paylaş


UDP Etkinleştirme

UdpActivation örneği Aktarım: UDP örneğini temel alır. Aktarım: UDP örneğini, Windows İşlem Etkinleştirme Hizmeti (WAS) kullanarak işlem etkinleştirmeyi destekleyecek şekilde genişletir.

Örnek üç ana parçadan oluşur:

  • Udp Protokolü Etkinleştiricisi, etkinleştirilecek uygulamalar adına UDP iletileri alan tek başına bir işlemdir.

  • İleti göndermek için UDP özel aktarımını kullanan bir istemci.

  • UDP özel aktarımı üzerinden ileti alan bir hizmet (WAS tarafından etkinleştirilen bir çalışan işleminde barındırılır).

UDP Protokolü Etkinleştiricisi

UDP Protokolü Etkinleştiricisi, WCF istemcisi ile WCF hizmeti arasındaki bir köprüdür. Aktarım katmanındaki UDP protokolü aracılığıyla veri iletişimi sağlar. İki ana işlevi vardır:

  • Was Dinleyici Bağdaştırıcısı (LA), gelen iletilere yanıt olarak işlemleri etkinleştirmek için WAS ile birlikte kullanılır.

  • Etkinleştirilecek uygulamalar adına UDP iletilerini kabul eden UDP Protokolü Dinleyicisi.

Etkinleştiricinin sunucu makinesinde tek başına bir program olarak çalışıyor olması gerekir. Normalde WAS dinleyici bağdaştırıcıları (NetTcpActivator ve NetPipeActivator gibi) uzun süre çalışan Windows hizmetlerinde uygulanır. Ancak, basitlik ve netlik için, bu örnek tek başına bir uygulama olarak protokol etkinleştiricisini uygular.

WAS Dinleyici Bağdaştırıcısı

UDP için WAS Dinleyici Bağdaştırıcısı sınıfında UdpListenerAdapter uygulanır. UDP protokolü için uygulama etkinleştirme gerçekleştirmek üzere WAS ile etkileşim kuran modüldür. Bu, aşağıdaki Webhost API'leri çağrılarak elde edilir:

  • WebhostRegisterProtocol

  • WebhostUnregisterProtocol

  • WebhostOpenListenerChannelInstance

  • WebhostCloseAllListenerChannelInstances

başlangıçta çağrıldıktan WebhostRegisterProtocolsonra dinleyici bağdaştırıcısı, applicationHost.config dosyasında kayıtlı tüm uygulamalar için WAS'den geri ApplicationCreated çağırmayı alır (%windir%\system32\inetsrv konumunda bulunur). Bu örnekte, uygulamaları yalnızca UDP protokolü ("net.udp" olarak protokol kimliğiyle) etkin olarak işleriz. Bu tür uygulamalar uygulamadaki dinamik yapılandırma değişikliklerine yanıt verirse (örneğin, bir uygulama devre dışı durumdan etkine geçirildiğinde) diğer uygulamalar bunu farklı şekilde işleyebilir.

Geri ConfigManagerInitializationCompleted çağırma alındığında, WAS'nin protokolün başlatılması için tüm bildirimleri tamamlamış olduğunu gösterir. Şu anda, dinleyici bağdaştırıcısı etkinleştirme isteklerini işlemeye hazırdır.

Bir uygulama için ilk kez yeni bir istek geldiğinde, dinleyici bağdaştırıcısı WAS'yi çağırır WebhostOpenListenerChannelInstance ve bu da henüz başlatılmamışsa çalışan işlemini başlatır. Ardından protokol işleyicileri yüklenir ve dinleyici bağdaştırıcısı ile sanal uygulama arasındaki iletişim başlatılabilir.

Dinleyici bağdaştırıcısı bölümdeki %SystemRoot%\System32\inetsrv\ApplicationHost.config dizinine <listenerAdapters> aşağıdaki gibi kaydedilir:

<add name="net.udp" identity="S-1-5-21-2127521184-1604012920-1887927527-387045" />

Protokol Dinleyicisi

UDP protokolü dinleyicisi, sanal uygulama adına bir UDP uç noktasında dinleyen protokol etkinleştiricisinin içindeki bir modüldür. sınıfında UdpSocketListeneruygulanır. Uç nokta, bağlantı noktası numarasının sitenin protokol bağlamasından ayıklandığı şekilde IPEndpoint temsil edilir.

Denetim Hizmeti

Bu örnekte, etkinleştirici ile WAS çalışan işlemi arasında iletişim kurmak için WCF kullanıyoruz. Etkinleştiricide bulunan hizmete Denetim Hizmeti adı verilir.

Protokol İşleyicileri

Dinleyici bağdaştırıcısı çağrısı WebhostOpenListenerChannelInstanceyaptıktan sonra, başlatılmamışsa WAS işlem yöneticisi çalışan işlemini başlatır. Çalışan işleminin içindeki uygulama yöneticisi, udp İşlem Protokolü İşleyicisi'ni (PPH) bu ListenerChannelIdisteğiyle yükler. içindeki PPH, öğesini çağırır IAdphManager.StartAppDomainProtocolListenerChannel udp AppDomain Protokol İşleyicisi'ni (ADPH) başlatmak için.

HostedUDPTransportConfiguration

Bilgiler Web.config'de aşağıdaki gibi kaydedilir:

<serviceHostingEnvironment>
<add name="net.udp" transportConfigurationType="Microsoft.ServiceModel.Samples.Hosting.HostedUdpTransportConfiguration, UdpActivation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6fa904d2da1848d6" />
</serviceHostingEnvironment>

Bu Örnek için Özel Kurulum

Bu örnek yalnızca Windows Vista, Windows Server 2008 veya Windows 7 üzerinde derlenebilir ve çalıştırılabilir. Örneği çalıştırmak için önce tüm bileşenlerin doğru şekilde ayarlanması gerekir. Örneği yüklemek için aşağıdaki adımları kullanın.

Bu örneği ayarlamak için

  1. Aşağıdaki komutu kullanarak ASP.NET 4.0'ı yükleyin.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Projeyi Windows Vista'da derleyin. Derlemeden sonra, derleme sonrası aşamasında aşağıdaki işlemleri de gerçekleştirir:

    • UDP bağlamasını "Varsayılan Web Sitesi" sitesine yükler.

    • Fiziksel yola işaret etmek için "ServiceModelSamples" sanal uygulamasını oluşturur: "%SystemDrive%\inetpub\wwwroot\servicemodelsamples".

    • Ayrıca bu sanal uygulama için "net.udp" protokollerini etkinleştirir.

  3. Kullanıcı arabirimi uygulamasını "WasNetActivator.exe" başlatın. Kurulum sekmesine tıklayın, aşağıdaki onay kutularını işaretleyin ve ardından yüklemek için Yükle'ye tıklayın:

    • UDP Dinleyici Bağdaştırıcısı

    • UDP Protokolü İşleyicileri

  4. "WasNetActivator.exe" kullanıcı arabirimi uygulamasının Etkinleştirme sekmesine tıklayın. Dinleyici bağdaştırıcısını başlatmak için Başlat düğmesine tıklayın. Artık programı çalıştırmaya hazırsınız.

    Not

    Bu örneği tamamladığınızda, net.udp bağlamasını "Varsayılan Web Sitesinden" kaldırmak için Cleanup.bat çalıştırmanız gerekir.

Örnek Kullanımı

Derlemeden sonra dört farklı ikili dosya oluşturulur:

  • Client.exe: İstemci kodu. App.config, Client.exe.config istemci yapılandırma dosyasında derlenmiş.

  • UDPActivation.dll: Tüm önemli UDP uygulamalarını içeren kitaplık.

  • Service.dll: Hizmet kodu. Bu, ServiceModelSamples sanal uygulamasının \bin dizinine kopyalanır. Hizmet dosyası Service.svc, yapılandırma dosyası ise Web.config dosyasıdır. Derlemeden sonra şu konuma kopyalanır: %SystemDrive%\Inetpub\wwwroot\ServiceModelSamples.

  • WasNetActivator: UDP etkinleştirici programı.

  • Gerekli parçaların tümünün doğru yüklendiğinden emin olun. Aşağıdaki adımlarda, örneğin nasıl çalıştırılacakları gösterilmektedir:

  1. Aşağıdaki Windows hizmetlerinin başlatıldığından emin olun:

    • Windows İşlem Etkinleştirme Hizmeti (WAS).

    • Internet Information Services (IIS): W3SVC.

  2. Ardından etkinleştiriciyi başlatın WasNetActivator.exe. Etkinleştirme sekmesinin altında, açılan listede tek protokol olan UDP seçilir. Etkinleştiriciyi başlatmak için Başlat düğmesine tıklayın.

  3. Etkinleştirici başlatıldıktan sonra, bir komut penceresinden Client.exe çalıştırarak istemci kodunu çalıştırabilirsiniz. Örnek çıktı aşağıda verilmiştir:

    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.