Uç Noktası Adresleri

Her uç noktanın kendisiyle ilişkilendirilmiş olan ve uç noktayı bulmak ve tanımlamak için kullanılan bir adresi vardır. Bu adres öncelikli olarak uç noktanın konumunu belirten Tekdüzen Kaynak Tanımlayıcısı'nı (URI) oluşturur. Uç nokta adresi, sınıfı tarafından EndpointAddress Windows Communication Foundation (WCF) programlama modelinde temsil edilir. Bu, uç noktanın kendisiyle ileti alışverişi yapan diğer uç noktalar tarafından kimlik doğrulamasına olanak tanıyan isteğe bağlı Identity bir özellik ve hizmete ulaşmak için gereken diğer SOAP üst bilgilerini tanımlayan isteğe bağlı Headers özellikler kümesi içerir. İsteğe bağlı üst bilgiler, hizmet uç noktasını tanımlamak veya bunlarla etkileşime geçmek için ek ve daha ayrıntılı adresleme bilgileri sağlar. Uç noktanın adresi, tel üzerinde WS-Addressing uç noktası başvurusu (EPR) olarak temsil edilir.

Adresin URI Yapısı

Çoğu aktarım için adres URI'sinin dört bölümü vardır. Örneğin, URI'nin http://www.fabrikam.com:322/mathservice.svc/secureEndpoint dört bölümü aşağıdaki gibi öğelendirilebilir:

  • Düzeni: http:

  • Makine: www.fabrikam.com

  • (isteğe bağlı) Bağlantı noktası: 322

  • Yol: /mathservice.svc/secureEndpoint

Hizmet için Adres Tanımlama

Bir hizmetin uç nokta adresi, kod kullanılarak kesin olarak veya yapılandırma aracılığıyla bildirim temelli olarak belirtilebilir. Dağıtılan bir hizmetin bağlamaları ve adresleri genellikle hizmet geliştirilirken kullanılanlardan farklı olduğundan, kodda uç noktaları tanımlamak genellikle pratik değildir. Genellikle, kod yerine yapılandırma kullanarak hizmet uç noktalarını tanımlamak daha pratiktir. Bağlama ve adresleme bilgilerinin kod dışında tutulması, uygulamanın yeniden derlenmesine veya yeniden dağıtılmasına gerek kalmadan bunların değişmesine olanak tanır.

Yapılandırmada Adres Tanımlama

Yapılandırma dosyasında uç nokta tanımlamak için endpoint> öğesini kullanın<. Ayrıntılar ve örnek için bkz . Uç Nokta Adresi Belirtme.

Kodda Adres Tanımlama

Sınıfıyla EndpointAddress kodda bir uç nokta adresi oluşturulabilir. Ayrıntılar ve örnek için bkz . Uç Nokta Adresi Belirtme.

WSDL'deki uç noktalar

Bir uç nokta adresi, WSDL'de ilgili uç noktanın wsdl:port öğesi içinde WS-Addressing EPR öğesi olarak da gösterilebilir. EPR, uç noktanın adresini ve tüm adres özelliklerini içerir. Ayrıntılar ve örnek için bkz . Uç Nokta Adresi Belirtme.

.NET Framework 3.5'te Birden Çok IIS Bağlama Desteği

İnternet servis sağlayıcıları genellikle site yoğunluğunun artırılması ve toplam sahip olma maliyetinin düşmesi için aynı sunucu ve sitede birçok uygulama barındırıyor. Bu uygulamalar genellikle farklı temel adreslere bağlıdır. Internet Information Services (IIS) Web sitesi birden çok uygulama içerebilir. Bir sitedeki uygulamalara bir veya daha fazla IIS bağlaması aracılığıyla erişilebilir.

IIS bağlamaları iki bilgi parçası sağlar: bağlama protokolü ve bağlama bilgileri. Bağlama protokolü, iletişimin gerçekleştiği düzeni tanımlar ve bağlama bilgileri siteye erişmek için kullanılan bilgilerdir.

Aşağıdaki örnekte, IIS bağlamasında bulunabilecek bileşenler gösterilmektedir:

  • Bağlama protokolü: HTTP

  • Bağlama Bilgileri: IP Adresi, Bağlantı Noktası, Ana Bilgisayar üst bilgisi

IIS her site için birden çok bağlama belirtebilir ve bu da her düzen için birden çok temel adrese neden olur. .NET Framework 3.5'in öncesinde WCF bir şema için birden çok adresi desteklemedi ve belirtildiyse etkinleştirme sırasında bir ArgumentException attı.

.NET Framework 3.5, İnternet hizmet sağlayıcılarının aynı sitedeki aynı düzen için farklı temel adreslere sahip birden çok uygulamayı barındırmasına olanak tanır.

Örneğin, bir site aşağıdaki temel adresleri içerebilir:

  • http://payroll.myorg.com/Service.svc

  • http://shipping.myorg.com/Service.svc

.NET Framework 3.5 ile yapılandırma dosyasında AppDomain düzeyinde bir ön ek filtresi belirtirsiniz. Bunu, ön eklerin listesini içeren baseAddressPrefixFilters> öğesiyle <yaparsınız. IIS tarafından sağlanan gelen temel adresler, isteğe bağlı ön ek listesine göre filtrelenir. Varsayılan olarak, bir ön ek belirtilmediğinde tüm adresler geçirilir. Ön ekin belirtilmesi, geçirilecek düzen için yalnızca eşleşen temel adresle sonuçlanabilir.

Aşağıda, ön ek filtrelerini kullanan bir yapılandırma kodu örneği verilmiştir.

<system.serviceModel>  
  <serviceHostingEnvironment>  
     <baseAddressPrefixFilters>  
        <add prefix="net.tcp://payroll.myorg.com:8000"/>  
        <add prefix="http://shipping.myorg.com:8000"/>  
    </baseAddressPrefixFilters>  
  </serviceHostingEnvironment>  
</system.serviceModel>  

Yukarıdaki örnekte net.tcp://payroll.myorg.com:8000 ve http://shipping.myorg.com:8000 geçirilen ilgili düzenleri için tek temel adreslerdir.

baseAddressPrefixFilter joker karakterleri desteklemez.

IIS tarafından sağlanan temel adreslerin, listede bulunmayan baseAddressPrefixFilters diğer şemalara bağlı adresleri olabilir. Bu adresler filtrelenmez.

.NET Framework 4 ve sonraki sürümlerinde birden çok IIS Bağlama Desteği

.NET 4'te başlayarak, 'nin ayarını true olarak ayarlayarak ServiceHostingEnvironmenttek bir temel adres seçmek zorunda kalmadan IIS'de MultipleSiteBindingsEnabled birden çok bağlama desteğini etkinleştirebilirsiniz. Bu destek HTTP protokol şemalarıyla sınırlıdır.

Aşağıda, serviceHostingEnvironment üzerinde <multipleSiteBindingsEnabled kullanan bir yapılandırma kodu örneği verilmiştir>.

<system.serviceModel>  
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" >  
  </serviceHostingEnvironment>  
</system.serviceModel>  

Bu ayar kullanılarak birden çok site bağlaması etkinleştirildiğinde, hem HTTP hem de HTTP olmayan protokoller için baseAddressPrefixFilters ayarları yoksayılır.

Ayrıntılar ve örnekler için bkz . Birden Çok IIS Site Bağlamasını Destekleme ve MultipleSiteBindingsEnabled.

WCF Hizmetlerinde Adresleme'yi Genişletme

WCF hizmetlerinin varsayılan adresleme modeli, aşağıdaki amaçlar için uç nokta adresi URI'sini kullanır:

  • Hizmet dinleme adresini, uç noktanın iletileri dinlediği konumu belirtmek için,

  • SOAP adres filtresini belirtmek için, bir uç noktanın SOAP üst bilgisi olarak beklediği adres.

Bu amaçların her birine yönelik değerler ayrı ayrı belirtilebilir ve yararlı senaryoları kapsayan çeşitli adresleme uzantılarına olanak tanıyabilir:

  • SOAP aracıları: İstemci tarafından gönderilen bir ileti, son hedefine ulaşmadan önce iletiyi işleyen bir veya daha fazla ek hizmet arasında geçiş sağlar. SOAP aracıları, iletilerde önbelleğe alma, yönlendirme, yük dengeleme veya şema doğrulaması gibi çeşitli görevleri gerçekleştirebilir. Bu senaryo, yalnızca nihai hedefi hedefleyen bir mantıksal adrese (via) değil aracıyı hedefleyen ayrı bir fiziksel adrese (wsa:To) ileti gönderilerek gerçekleştirilir.

  • Uç noktanın dinleme adresi özel bir URI'dir ve özelliğinden listenURI farklı bir değere ayarlanır.

öğesinin via belirttiği aktarım adresi, hizmetin bulunduğu parametre tarafından to belirtilen başka bir uzak adrese başlangıçta ileti gönderilmesi gereken konumdur. Çoğu İnternet senaryosunda via URI, hizmetin son to adresinin özelliğiyle aynıdırUri. Bu iki adresi yalnızca el ile yönlendirme yapmanız gerektiğinde ayırt edebilirsiniz.

Üst Bilgileri Adresleme

Bir uç nokta, temel URI'sine ek olarak bir veya daha fazla SOAP üst bilgisi tarafından ele alınabilir. Bunun yararlı olduğu senaryolardan biri, bir uç noktanın istemcilerinin aracılara hedeflenen SOAP üst bilgilerini içermesini gerektirdiği bir dizi SOAP aracı senaryodur.

Kod veya yapılandırma kullanarak özel adres üst bilgilerini iki şekilde tanımlayabilirsiniz:

Yapılandırma genellikle kod için tercih edilir, dağıtımdan sonra üst bilgileri değiştirmenize olanak tanır.

Özel Dinleme Adresleri

Dinleme adresini uç noktanın URI'sinden farklı bir değere ayarlayabilirsiniz. Bu, kullanıma sunulacak SOAP adresinin genel SOAP aracısının adresi olduğu, uç noktanın aslında dinlediği adres ise özel bir ağ adresi olduğu ara senaryolarda kullanışlıdır.

Kod veya yapılandırma kullanarak özel bir dinleme adresi belirtebilirsiniz:

  • Kodda, uç noktanın davranış koleksiyonuna bir sınıf ekleyerek özel bir ClientViaBehavior dinleme adresi belirtin.

  • Yapılandırmada, hizmet <uç noktası> öğesinin ListenUri özniteliğiyle özel bir dinleme adresi belirtin.

Özel SOAP Adres Filtresi

Uri, bir uç noktanın SOAP adres filtresini (AddressFilter ) tanımlamak için herhangi Headers bir özellik ile birlikte kullanılır. Varsayılan olarak, bu filtre gelen bir iletinin uç noktanın URI'sine uyan bir To ileti üst bilgisine sahip olduğunu ve gerekli tüm uç nokta üst bilgilerinin iletide mevcut olduğunu doğrular.

Bazı senaryolarda, uç nokta yalnızca uygun To üst bilgisine sahip olan iletileri değil, temel alınan aktarıma ulaşan tüm iletileri alır. Bunu etkinleştirmek için kullanıcı sınıfını MatchAllMessageFilter kullanabilir.

Ayrıca bkz.