2013-01-05 103 views
1

下面有一個配置文件示例。有許多可用的結合就像WCF和多個端點有混淆

**basicHttpBinding,netTcpBinding,wsDualHttpBinding** basicHttpBinding,netTcpBinding,wsDualHttpBinding 

我在WCF是新記那麼多的困惑arries,而這些都是----

因此人們如何從客戶端創建代理連接WCF服務。當然它們都使用MEX端點地址的http:// YourServer /服務/爲MyService/MEX

如果一個MEX終結點就足夠了,然後客戶端如何發出指令給他的客戶端應用程序使用連接到WCF服務NetTcpBinding的或wsDualHttpBinding

請與我分享知識: 1)如果我使用客戶端的mex端點地址創建代理,那麼綁定我的應用將用於連接到wcf服務?

2)如何從客戶端連接到wcf服務使用netTcpBinding或wsDualHttpBinding是否有任何使用代碼的技巧?

尋找深入discussion.Thanks

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Default"> 
      <serviceMetadata httpGetEnabled="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="YourNamespace.YourService" behaviorConfiguration="Default"> 
     <endpoint name="Default" 
      address="http://YourServer/Services/MyService" 
      binding="basicHttpBinding" 
      contract="YourNamespace.IYourService"/> 
     <endpoint name="TCP" 
      address="net.tcp://YourServer/ServicesTCP/MyService" 
      binding="netTcpBinding" 
      contract="YourNamespace.IYourService"/> 
     <endpoint name="mex" 
      address="http://YourServer/Services/MyService/mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange"/> 
     <endpoint name="Dual" 
      address="http://YourServer/Services/MyService/Dual" 
      binding="wsDualHttpBinding" 
      clientBaseAddress="http://localhost:8001/client/" 
      contract="YourNamespace.IYourDualService"/> 
     </service> 
    </services> 
    </system.serviceModel> 

回答

2

如果你有多個端點服務創建的代理包含暴露在服務合同的每個單獨類型的客戶端類。如果您有多個端點具有相同的合同,那麼這些端點將在客戶端的配置文件中進行定義,並且每個端點都會指定一個名稱。當你想用某種特定的綁定來調用服務時,你只需將端點配置的名稱傳遞給代理構造函數。

0

如何從客戶端使用netTcpBinding或wsDualHttpBinding連接到wcf服務有沒有使用代碼的技巧?

這可以通過命名所有的配置來完成,並通過這些名字的一成clientproxy:

public class SomeServiceClient : ClientBase<ISomeService>, ISomeService 
{ 

    public SomeServiceClient() { } 

    public SomeServiceClient(string endpointConfigurationName) : 
     base(endpointConfigurationName) { } 

    public void Do() 
    { 
     Channel.Do(); 
    } 
} 

這種方式,你可以改變端點(從而綁定)運行。 有關工作示例,請查看(https://www.box.com/shared/n4unt3mtjx)的一個很好的實現Peter Bernhardt(http://peterbernhardt.wordpress.com/2008/09/17/security-和身份在wcf部分4授權 - 自定義聲明/)