1

以下に1つの設定ファイルのサンプルがあります。のような利用可能な多くのバインディングがあります

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

私はWCFを初めて使用するので、多くの混乱を念頭に置いています。

つまり、クライアント側からプロキシを作成してwcfサービスに接続する方法です。当然、すべてのユーザーはmexエンドポイントアドレスhttp:// YourServer / Services / MyService/mexを使用します。

1つのmexエンドポイントで十分な場合、クライアントは、 netTcpBindingまたはwsDualHttpBindingを使用してwcfサービスに接続するようにクライアントアプリに指示を与えることができます。

次の知識を私と共有してください:1)クライアント側からmexエンドポイントアドレスを使用してプロキシを作成する場合、アプリがwcfサービスに接続するために使用するバインディングはどれですか?

2) netTcpBindingまたはwsDualHttpBindingを使用してクライアント側からwcfサービスに接続するにはどうすればよいですか?コードを使用して利用できるトリックはありますか?

詳細な議論を探しています。ありがとう

<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>
4

2 に答える 2

2

複数のエンドポイントを持つサービスがある場合、作成されたプロキシには、サービスで公開されるコントラクト タイプごとに個別のクライアント クラスが含まれます。同じコントラクトを持つ複数のエンドポイントがある場合、それらのエンドポイントはクライアントの構成ファイルで定義され、これらの各エンドポイントには指定された名前があります。特定のバインドでサービスを呼び出したい場合は、エンドポイント構成の名前をプロキシ コンストラクターに渡すだけです。

于 2013-01-07T12:08:55.680 に答える
0

How can I connect to wcf service from client side using netTcpBinding or wsDualHttpBinding is there any trick available using code ?

This can be done by naming all the configurations and pass one of those names into the clientproxy:

public class SomeServiceClient : ClientBase<ISomeService>, ISomeService
{

    public SomeServiceClient() { }

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

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

This way, you can change endpoints (and thus bindings) runtime. For a working example, check out (https://www.box.com/shared/n4unt3mtjx) a nice implementation by Peter Bernhardt (http://peterbernhardt.wordpress.com/2008/09/17/security-and-identity-in-wcf-part-4-authorizing-custom-claims/)

于 2013-01-07T12:36:15.420 に答える