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:
Kodda, sınıfını AddressHeader kullanarak özel adres üst bilgileri oluşturun ve ardından bir EndpointAddressderlemesinde kullanın.
Yapılandırmada, özel <üst bilgiler> uç nokta> öğesinin <alt öğeleri olarak belirtilir.
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.