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 WebhostRegisterProtocol
sonra 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 UdpSocketListener
uygulanı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ı WebhostOpenListenerChannelInstance
yaptı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 ListenerChannelId
isteğ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
Aşağıdaki komutu kullanarak ASP.NET 4.0'ı yükleyin.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
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.
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
"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:
Aşağıdaki Windows hizmetlerinin başlatıldığından emin olun:
Windows İşlem Etkinleştirme Hizmeti (WAS).
Internet Information Services (IIS): W3SVC.
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.
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.