Clientconfiguratie
U kunt de WCF-clientconfiguratie (Windows Communication Foundation) gebruiken om het adres, de binding, het gedrag en het contract op te geven, de 'ABC'-eigenschappen van het clienteindpunt, die clients gebruiken om verbinding te maken met service-eindpunten. Het <clientelement> heeft een <eindpuntelement> waarvan de kenmerken worden gebruikt om de eindpunt-ABC's te configureren. Deze kenmerken worden besproken in de sectie Eindpunten configureren.
Het <eindpuntelement> bevat ook een <metagegevenselement> dat wordt gebruikt om instellingen op te geven voor het importeren en exporteren van metagegevens, een< headers-element> dat een verzameling aangepaste adreskoppen bevat en een< identiteitselement> dat de verificatie van een eindpunt mogelijk maakt door andere eindpunten die berichten uitwisselen. De headers> en identiteitselementen> maken deel uit van de EndpointAddress en <worden besproken in het artikel Adressen.< Koppelingen naar onderwerpen waarin het gebruik van metagegevensextensies wordt uitgelegd, vindt u in de sectie Metagegevens configureren.
Eindpunten configureren
De clientconfiguratie is ontworpen om de client toe te staan een of meer eindpunten op te geven, elk met een eigen naam, adres en contract, waarbij elk verwijst naar de <bindingen> en< gedragselementen> in de clientconfiguratie die moeten worden gebruikt om dat eindpunt te configureren. Het clientconfiguratiebestand moet de naam App.config hebben, omdat dit de naam is die de WCF-runtime verwacht. In het volgende voorbeeld ziet u een clientconfiguratiebestand.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<client>
<endpoint
name="endpoint1"
address="http://localhost/ServiceModelSamples/service.svc"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IHello"
behaviorConfiguration="IHello_Behavior"
contract="IHello" >
<metadata>
<wsdlImporters>
<extension
type="Microsoft.ServiceModel.Samples.WsdlDocumentationImporter, WsdlDocumentation"/>
</wsdlImporters>
</metadata>
<identity>
<servicePrincipalName value="host/localhost" />
</identity>
</endpoint>
<!-- Add another endpoint by adding another <endpoint> element. -->
<endpoint
name="endpoint2">
//Configure another endpoint here.
</endpoint>
</client>
<!-- The bindings section references by the bindingConfiguration endpoint attribute. -->
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IHello"
bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard">
<readerQuotas maxDepth="32"/>
<reliableSession ordered="true"
enabled="false" />
<security mode="Message">
<!-- Security settings go here. -->
</security>
</binding>
<binding name="Another Binding"
<!-- Configure this binding here. -->
</binding>
</wsHttpBinding>
</bindings>
<!-- The behavior section references by the behaviorConfiguration endpoint attribute. -->
<behaviors>
<endpointBehaviors>
<behavior name=" IHello_Behavior ">
<clientVia />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Het optionele name
kenmerk identificeert een eindpunt voor een bepaald contract op unieke wijze. Het wordt gebruikt door of ChannelFactory<TChannel> door het ClientBase<TChannel> opgeven van welk eindpunt in de clientconfiguratie het doel is en moet worden geladen wanneer een kanaal wordt gemaakt voor de service. Er is een configuratienaam voor het jokertekeneindpunt *beschikbaar en geeft aan welke ApplyConfiguration methode er een eindpuntconfiguratie in het bestand moet worden geladen, mits er precies één beschikbaar is en anders een uitzondering genereert. Als dit kenmerk wordt weggelaten, wordt het bijbehorende eindpunt gebruikt als het standaardeindpunt dat is gekoppeld aan het opgegeven contracttype. De standaardwaarde voor het name
kenmerk is een lege tekenreeks die overeenkomt met elke andere naam.
Aan elk eindpunt moet een adres zijn gekoppeld om het eindpunt te zoeken en te identificeren. Het address
kenmerk kan worden gebruikt om de URL op te geven die de locatie van het eindpunt biedt. Het adres voor een service-eindpunt kan echter ook worden opgegeven in code door een URI (Uniform Resource Identifier) te maken en wordt toegevoegd aan het ServiceHost adres met behulp van een van de AddServiceEndpoint methoden. Zie Adressen voor meer informatie. Zoals de inleiding aangeeft, maken de <headers> en< identiteitselementen> deel uit van de EndpointAddress en worden ook besproken in het onderwerp Adressen.
Het binding
kenmerk geeft het type binding aan dat het eindpunt verwacht te gebruiken bij het maken van verbinding met een service. Het type moet een geregistreerde configuratiesectie hebben als ernaar moet worden verwezen. In het vorige voorbeeld is dit de <sectie wsHttpBinding> , die aangeeft dat het eindpunt gebruikmaakt van een WSHttpBinding. Er kunnen echter meer dan één binding zijn van een bepaald type dat door het eindpunt kan worden gebruikt. Elk van deze elementen heeft een eigen <bindingselement> binnen het element (bindingstype). Het bindingconfiguration
kenmerk wordt gebruikt om onderscheid te maken tussen bindingen van hetzelfde type. De waarde wordt vergeleken met het name
kenmerk van het <bindingselement> . Zie How to: Specify a Client Binding in Configuration (Een clientbinding opgeven in configuratie) voor meer informatie over het configureren van een clientbinding met behulp van configuratie.
Het behaviorConfiguration
kenmerk wordt gebruikt om op te geven welk <gedrag> van de< endpointBehaviors> het eindpunt moet gebruiken. De waarde ervan wordt vergeleken met het name
kenmerk van het <gedragselement> . Zie Clientgedrag configureren voor een voorbeeld van het gebruik van configuratie om clientgedrag op te geven.
Het contract
kenmerk geeft aan welk contract het eindpunt beschikbaar maakt. Deze waarde wordt toegewezen aan de ConfigurationNameServiceContractAttribute. De standaardwaarde is de volledige typenaam van de klasse waarmee de service wordt geïmplementeerd.
Metagegevens configureren
Het <metagegevenselement> wordt gebruikt om instellingen op te geven die worden gebruikt voor het registreren van extensies voor het importeren van metagegevens. Zie Het metagegevenssysteem uitbreiden voor meer informatie over het uitbreiden van het metagegevenssysteem.