Yapılandırma Dosyasındaki Bir Keşfi Yapılandırma
Bulmada kullanılan dört ana yapılandırma ayarı grubu vardır. Bu konu başlığında her biri kısaca açıklanacak ve bunların nasıl yapılandırılacağına ait örnekler gösterilmektedir. Her bölümün takip edilmesi, her alan hakkında daha ayrıntılı belgelere bir bağlantı olacaktır.
Davranış Yapılandırması
Bulma, hizmet davranışlarını ve uç nokta davranışlarını kullanır. Bu ServiceDiscoveryBehavior davranış, bir hizmetin tüm uç noktaları için bulma olanağı sağlar ve duyuru uç noktalarını belirtmenize olanak tanır. Aşağıdaki örnek, öğesinin nasıl ekleneceğini ve bir duyuru uç noktası belirtmeyi ServiceDiscoveryBehavior gösterir.
<behaviors>
<serviceBehaviors>
<behavior name="helloWorldServiceBehavior">
<serviceDiscovery>
<announcementEndpoints>
<endpoint kind="udpAnnouncementEndpoint"/>
</announcementEndpoints>
</serviceDiscovery>
</behavior>
</serviceBehaviors>
</behaviors>
Davranışı belirttikten sonra, aşağıdaki örnekte gösterildiği gibi bir <service>
öğeden bu öğeye başvurun.
<system.serviceModel>
<services>
<service name="HelloWorldService" behaviorConfiguration="helloWorldServiceBehavior">
<!-- Application Endpoint -->
<endpoint address="endpoint0"
binding="basicHttpBinding"
contract="IHelloWorldService" />
<!-- Discovery Endpoints -->
<endpoint kind="udpDiscoveryEndpoint" />
</service>
</services>
</system.serviceModel>
Bir hizmetin bulunabilir olması için bir bulma uç noktası da eklemeniz gerekir. Yukarıdaki örnekte standart uç UdpDiscoveryEndpoint nokta eklenmelidir.
Duyuru uç noktalarını eklediğinizde, aşağıdaki örnekte gösterildiği gibi öğesine bir duyuru dinleyicisi hizmeti <services>
de eklemeniz gerekir.
<services>
<service name="HelloWorldService" behaviorConfiguration="helloWorldServiceBehavior">
<!-- Application Endpoint -->
<endpoint address="endpoint0"
binding="basicHttpBinding"
contract="IHelloWorldService" />
<!-- Discovery Endpoints -->
<endpoint kind="udpDiscoveryEndpoint" />
</service>
<!-- Announcement Listener Configuration -->
<service name="AnnouncementListener">
<endpoint kind="udpAnnouncementEndpoint" />
</service>
</services>
Bu EndpointDiscoveryBehavior davranış, belirli bir uç noktanın bulunmasını etkinleştirmek veya devre dışı bırakmak için kullanılır. Aşağıdaki örnek, biri bulmanın etkinleştirildiği, diğeri de bulmanın devre dışı olduğu iki uygulama uç noktası olan bir hizmet yapılandırılır. Her uç nokta için bir EndpointDiscoveryBehavior davranış eklenir.
<system.serviceModel>
<services>
<service name="HelloWorldService"
behaviorConfiguration="helloWorldServiceBehavior">
<!-- Application Endpoints -->
<endpoint address="endpoint0"
binding="basicHttpBinding"
contract="IHelloWorldService"
behaviorConfiguration="ep0Behavior" />
<endpoint address="endpoint1"
binding="basicHttpBinding"
contract="IHelloWorldService"
behaviorConfiguration="ep1Behavior" />
<!-- Discovery Endpoints -->
<endpoint kind="udpDiscoveryEndpoint" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="helloWorldServiceBehavior">
<serviceDiscovery />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="ep0Behavior">
<endpointDiscovery enabled="true"/>
</behavior>
<behavior name="ep1Behavior">
<endpointDiscovery enabled="false"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Davranış, EndpointDiscoveryBehavior hizmet tarafından döndürülen uç nokta meta verilerine özel meta veriler eklemek için de kullanılabilir. Aşağıdaki örnekte bunun nasıl yapıldığını gösterilmektedir.
<behavior name="ep4Behavior">
<endpointDiscovery enabled="true">
<extensions>
<CustomMetadata>This is custom metadata.</CustomMetadata>
<d:Types xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:i="http://printer.example.org/2003/imaging">i:PrintBasic</d:Types>
<CustomMetadata nested="true">
<NestedMetadata>This is a nested custom metadata.</NestedMetadata>
</CustomMetadata>
</extensions>
</endpointDiscovery>
</behavior>
Davranış, istemcilerin EndpointDiscoveryBehavior hizmetleri aramak için kullandığı kapsamları ve türleri eklemek için de kullanılabilir. Aşağıdaki örnek, bunun istemci tarafı yapılandırma dosyasında nasıl yapılacağını gösterir.
<behavior name="ep2Behavior">
<endpointDiscovery enabled="true">
<scopes>
<add scope="http://www.microsoft.com/building42/floor1"/>
<add scope="ldap:///ou=engineeringo=examplecomc=us"/>
</scopes>
<types>
<add name="test" namespace="http://example.microsoft.com/" />
<add name="additionalContract" namespace="http://example.microsoft.com/" />
</types>
</endpointDiscovery>
</behavior>
hakkında ServiceDiscoveryBehavior daha fazla bilgi için ve EndpointDiscoveryBehavior bkz . WCF Keşfine Genel Bakış.
Bağlama Öğesi Yapılandırması
Bağlama öğesi yapılandırması en çok istemci tarafında ilgi çekicidir. WcF istemci uygulamasından hizmetleri bulmak için kullanılan bulma ölçütlerini belirtmek için yapılandırmayı kullanabilirsiniz. Aşağıdaki örnek, kanalla DiscoveryClient özel bir bağlama oluşturur ve tür ve kapsam içeren bulma ölçütlerini belirtir. Ayrıca ve MaxResults özellikleri için Duration değerleri belirtir.
<bindings>
<customBinding>
<!-- Binding Configuration for the Application Endpoint -->
<binding name="discoBindingConfiguration">
<discoveryClient>
<endpoint kind="discoveryEndpoint"
address="http://localhost:8000/ConfigTest/Discovery"
binding="customBinding"
bindingConfiguration="httpSoap12WSAddressing10"/>
<findCriteria duration="00:00:10" maxResults="2">
<types>
<add name="IHelloWorldService"/>
</types>
<scopes>
<add scope="http://www.microsoft.com/building42/floor1"/>
</scopes>
</findCriteria>
</discoveryClient>
<textMessageEncoding messageVersion="Soap11"/>
<httpTransport />
</binding>
</customBinding>
</bindings>
Bu özel bağlama yapılandırmasına bir istemci uç noktası tarafından başvurulmalıdır:
<client>
<endpoint address="http://schemas.microsoft.com/discovery/dynamic"
binding="customBinding"
bindingConfiguration="discoBindingConfiguration"
contract="IHelloWorldService" />
</client>
Bulma ölçütleri hakkında daha fazla bilgi için bkz . Bulma Bulma ve BulmaCriteria. Bulma ve bağlama öğeleri hakkında daha fazla bilgi için bkz. WCF Bulma'ya Genel Bakış
Standart Uç Nokta Yapılandırması
Standart uç noktalar, bir veya daha fazla özellik (adres, bağlama veya sözleşme) veya değiştiremeyen bir veya daha fazla özellik değeri için varsayılan değerlere sahip önceden tanımlanmış uç noktalardır. .NET 4, bulmayla ilgili 3 standart uç noktayla birlikte sunulur: UdpDiscoveryEndpoint, UdpAnnouncementEndpointve DynamicEndpoint. UdpDiscoveryEndpoint, UDP çok noktaya yayın bağlaması üzerinden bulma işlemleri için önceden yapılandırılmış standart bir uç noktadır. UdpAnnouncementEndpoint, UDP bağlaması üzerinden duyuru iletileri göndermek için önceden yapılandırılmış standart bir uç noktadır. DynamicEndpoint, bulunan bir hizmetin uç nokta adresini çalışma zamanında dinamik olarak bulmak için bulma kullanan standart bir uç noktadır. Standart bağlamalar, eklenecek standart uç nokta türünü belirten kind özniteliği içeren bir <endpoint>
öğeyle belirtilir. Aşağıdaki örnekte ve 'nin nasıl ekleneceği UdpDiscoveryEndpoint gösterilmektedir UdpAnnouncementEndpoint.
<services>
<service name="HelloWorldService">
<!-- ... -->
<endpoint kind="udpDiscoveryEndpoint" />
</service>
<service name="AnnouncementListener">
<endpoint kind="udpAnnouncementEndpoint" />
</service>
</services>
Standart uç noktalar bir <standardEndpoints>
öğede yapılandırılır. Aşağıdaki örnekte ve öğesinin UdpDiscoveryEndpoint nasıl yapılandırılır gösterilmektedir UdpAnnouncementEndpoint.
<standardEndpoints>
<udpAnnouncementEndpoint>
<standardEndpoint
name="udpAnnouncementEndpointSettings"
multicastAddress="soap.udp://239.255.255.250:3703"
maxAnnouncementDelay="00:00:00.800">
<transportSettings
duplicateMessageHistoryLength="1028"
maxPendingMessageCount="10"
maxMulticastRetransmitCount="3"
maxUnicastRetransmitCount="2"
socketReceiveBufferSize="131072"
timeToLive="2" />
</standardEndpoint>
</udpAnnouncementEndpoint>
<udpDiscoveryEndpoint>
<standardEndpoint
name="udpDiscoveryEndpointSettings"
multicastAddress="soap.udp://239.255.255.252:3704"
maxResponseDelay="00:00:00.800">
<transportSettings
duplicateMessageHistoryLength="2048"
maxPendingMessageCount="5"
maxReceivedMessageSize="8192"
maxBufferPoolSize="262144"/>
</standardEndpoint>
</udpDiscoveryEndpoint>
</standardEndpoints>
Standart uç nokta yapılandırmasını ekledikten sonra, aşağıdaki örnekte gösterildiği gibi her uç nokta için öğesindeki <endpoint>
yapılandırmaya başvurun.
<services>
<service name="HelloWorldService">
<!-- ... -->
<endpoint kind="udpDiscoveryEndpoint" endpointConfiguration="udpDiscoveryEndpointSettings"/>
</service>
<service name="AnnouncementListener">
<endpoint kind="udpAnnouncementEndpoint" endpointConfiguration="udpAnnouncementEndpointSettings" />
</service>
</services>
Bulmada kullanılan diğer standart uç noktalardan farklı olarak, için DynamicEndpointbir bağlama ve sözleşme belirtirsiniz. Aşağıdaki örnekte, ekleme ve yapılandırma gösterilmektedir DynamicEndpoint.
<system.serviceModel>
<client>
<endpoint kind="dynamicEndpoint" binding="basicHttpBinding" contract="IHelloWorldService" endpointConfiguration="dynamicEndpointConfiguration" />
</client>
<standardEndpoints>
<dynamicEndpoint>
<standardEndpoint name="dynamicEndpointConfiguration">
<discoveryClientSettings>
<findCriteria scopeMatchBy="http://schemas.microsoft.com/ws/2008/06/discovery/rfc" duration="00:00:10" maxResults="2">
<types>
<add name="IHelloWorldService"/>
</types>
<scopes>
<add scope="http://www.microsoft.com/building42/floor1"/>
</scopes>
<extensions>
<CustomMetadata>This is custom metadata.</CustomMetadata>
</extensions>
</findCriteria>
</discoveryClientSettings>
</standardEndpoint>
</dynamicEndpoint>
</standardEndpoints>
</system.serviceModel>
Standart uç noktalar hakkında daha fazla bilgi için bkz. Standart Uç Noktalar.