4

Visual Studioのクライアントプロジェクトが、mexバインディングを持たないWCFサービスをどのように参照できるのか疑問に思いました。サンプルのWCFサービスでデフォルトのmexバインディングを削除すると、クライアントアプリはサービスを見つけることができず、自動生成されたコメントで、本番環境ではmexバインディングを削除することをお勧めします。では、クライアントアプリはどのようにしてサービスを見つけて参照するのでしょうか。

4

2 に答える 2

10

サービスコントラクト、オペレーション、およびデータコントラクトを定義するタイプを含むアセンブリにアクセスできる場合は、を使用してその場でプロキシを作成できますChannelFactory。この場合、サービスを呼び出すために必要なすべての情報にすでにアクセスできるため、サービスのメタデータを取得する必要はありません。

例えば

// Create service proxy on the fly
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile");
var proxy = factory.CreateChannel();

// Create data contract
var requestDataContract = new MyDataContract();

// Call service operation.
var responseDataContract = proxy.MyServiceOperation(requestDataContract);

また、サービス側の構成ファイルにアクセスできる場合にも役立ちます。これにより、エンドポイントの詳細をそこからクライアント構成にコピーできます。

于 2012-01-15T13:03:55.497 に答える
0

mexエンドポイントは、WCFSOAPサービスの必要な部分です。これにより、クライアントツールキットがWSDLをプルダウンし、プロキシクラスを自動生成できるようになります。ご指摘のとおり、これがないと、クライアントはサービスを利用するための情報を取得する方法がありません。クライアントがサービスを利用して見つけられるようにする場合は、サービスが本番環境にあるときにサービスを利用できるようにしておく必要があります。

于 2012-01-15T03:06:23.560 に答える