2

私のサービスにはsvcファイルがありません。configエントリを参照して、1つのtcpエンドポイントに対して1つのmexエンドポイントが宣言されていることに間違いなく気づきます。

だから私の質問は、私のサービスにwshttp、wsDualhttp、tcp、m smqなどの多くのエンドポイントがある場合、異なるエンドポイントのタイプごとにmexエンドポイントを宣言する必要がありますか?

これが、サービスがホストされているサービス構成の詳細です。

<services>
  <service name="ChatService.ChatHandler" behaviorConfiguration="behaviorConfig">
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:1648/ChatService/" />
        <add baseAddress="http://localhost:1647/ChatService/" />
      </baseAddresses>
    </host>
    <endpoint address="tcp"
                      binding="netTcpBinding"
                      bindingConfiguration="tcpBinding"
                      contract="ChatService.IChat"/>

    <endpoint address="net.tcp://localhost:1645/ChatService/mex"
                      binding="mexTcpBinding"
                      contract="IMetadataExchange"/>
  </service>
</services>

編集部

したがって、Marc_Sの回答について理解できることから、MEXエンドポイントがなくても、私のサービスは完全に機能します。

誰かがあなたのサービスとインターフェースしたい場合は、他の方法で関連情報を提供する必要がありますが、それらのクライアントはMEXを介してサービスを「自動検出」および検査できないため、たとえばダウンロードを提供する必要があります誰かがサービスのMEXエンドポイントをインタラクティブに照会せずにクライアントを構築できるようにWSDLと付随するXSDファイルの..私は正しいですか?

mexが無効になるときに、クライアントが私のサービスのプロキシを作成する他の方法はありますか?

次に、サービスの終了時に、クライアントがサービスを呼び出すために使用するプロトコルを判別する方法はありますか?wshttp、wsdualhttp、tcp、msmqなどの複数のエンドポイントがあるとしますか?

4

2 に答える 2

3

MEXエンドポイント(名前はMetadata EXchangeが意味します)は、サービスを検出可能にするために使用されます。たとえば、サービスのクライアントを作成しようとしている人は、ブラウザーや開発ツール(Visual Studioなどsvcutil)をこのエンドポイントに向けることができます。定義されたデータ交換により、クライアントはサービスメソッドとデータ構造の観点からサービスが提供するものを見つけることができます。

これは便利で便利ですが、実際にはクライアント側のプロキシコードを作成するためにのみ必要です。通常は1回だけです。

MEXエンドポイントを用意する必要はありません。セキュリティを重視している場合は、その情報を誰もが見たり調べたりできるように明示的に公開しないことを決定できます。MEXエンドポイントがなくても、サービスは完全に機能します。誰かがあなたのサービスとやり取りしたい場合は、他の方法で関連情報を提供する必要がありますが、それらのクライアントはMEXを介してサービスを「自動検出」および検査できないため、たとえばダウンロードを提供する必要があります。誰かがサービスのMEXエンドポイントにインタラクティブにクエリを実行せずにクライアントを構築できるように、WSDLと付随するXSDファイルの

そのため、サポートする予定のプロトコル( 、 )ごとに1つのMEXエンドポイントを公開する必要はありません。異なるプロトコルを使用して5つの異なるエンドポイントを非常に簡単に作成できますが、最も頻繁に使用されるHTTP MEXエンドポイントのみを公開します(これにより、クライアントと開発者はブラウザーでMEXエンドポイントを参照して、「ヘルプページ」を取得し、 WSDL = Webサービス記述サービスを記述する言語ファイル)net.tcphttp

于 2012-12-30T16:48:45.117 に答える
3

メタデータ交換エンドポイントは必要ありません。1つのエンドポイントを宣言するか、メタデータ交換エンドポイントなしでサービスを作成できます。

于 2012-12-30T15:37:42.573 に答える