用戶端組態
您可以使用 Windows Communication Foundation (WCF) 用戶端組態來指定位址、繫結、行為以及合約 (亦即用戶端端點的 "ABC" 屬性,用戶端會使用此屬性來連接至服務端點)。<client> 項目具有 <endpoint> 項目,其中的屬性可以用來設定端點 ABC。本主題的「設定端點」一節將討論這些屬性。
<endpoint> 項目同時包含 <metadata> 項目 (可用來指定匯入和匯出中繼資料的設定)、<headers> 項目 (包含自訂位址標頭的集合),以及 <identity> 項目 (可藉由相互交換訊息的其他端點來啟動端點的驗證)。<headers> 和 <identity> 項目都是 EndpointAddress 的一部分,將在端點位址主題中討論。本主題的「設定中繼資料」小節提供中繼資料擴充使用方式的說明主題連結。
設定端點
用戶端組態是設計用來允許用戶端指定一或多個端點,其中每個端點都有自己的名稱、位址和合約,而且每個都會參考用戶端組態中的 <bindings> 和 <behaviors> 項目,以便用來設定該端點。用戶端組態檔應該命名為 "App.config",因為這是 WCF 執行階段所預期的名稱。下列範例示範用戶端組態檔。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<client>
<endpoint
name="endpoint1"
address="https://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>
選擇性的 name 屬性會針對指定的合約唯一識別端點。ChannelFactory 或 ClientBase 會使用此端點來指定目前已指向用戶端組態中的哪個端點,並在建立提供服務的通道時,指定必須載入的端點。萬用字元端點組態名稱 "*" 可供使用,並指示 ApplyConfiguration 方法應該將任何端點組態載入檔案中 (前提是剛好有一個端點組態可以使用),否則將擲回例外狀況。如果省略這個屬性,就會使用對應端點做為與所指定合約類型相關聯的預設端點。name 屬性的預設值是空字串 (與任何其他名稱相符)。
每個端點都必須具有與其相關聯的位址,以便找出並識別端點。address 屬性可以用來指定 URL 以提供端點的位置。但是,您也可以使用其中一個 AddServiceEndpoint 方法,建立統一資源識別元 (URI) 並加入至 ServiceHost,以便在程式碼中指定服務端點的位址。如需詳細資訊,請參閱 端點位址. 如同簡介中所述,<headers> 和 <identity> 項目都是 EndpointAddress 的一部分,而且將在端點位址主題中詳細討論。
binding 屬性代表當端點連接至服務時,預期使用的繫結型別。型別必須具有註冊的組態區段,才能加以參考。在上一個範例中,<wsHttpBinding> 區段即是一例,代表端點使用 WSHttpBinding。不過,端點可以使用的特定繫結型別可能不只一種。每個繫結型別在 (繫結) 型別項目中都有自己的 <binding> 項目。bindingconfiguration 屬性可用來區分型別相同的繫結。它的值與 <binding> 項目的 name 屬性相符。如需詳細資訊 如需如何使用組態來設定用戶端繫結的詳細資訊,請參閱 HOW TO:指定組態中的用戶端繫結。
behaviorConfiguration 屬性可用來指定端點應該使用之 <endpointBehaviors> 的 <behavior>。它的值與 <behavior> 項目的 name 屬性相符。如需使用組態來指定用戶端行為的範例,請參閱設定用戶端行為。
contract 屬性會指定端點所公開的合約。這個值會對應至 ServiceContractAttribute 的 ConfigurationName。預設值是實作服務之類別的完整型別名稱。
設定中繼資料
<metadata> 項目可用來指定設定值,以便用來註冊中繼資料匯入擴充。如需詳細資訊 如需擴充中繼資料系統的詳細資訊,請參閱擴充中繼資料系統。