Gibt es also zwei Endpunkte in einem WCF-Dienst - den Standard- und einen Metadatenendpunkt?
Craig Schwarze
11
Sie können beliebig viele Endpunkte für denselben Vertrag haben, darunter mexHttpBinding, das Metadaten bereitstellt und in den meisten Fällen in der Produktion deaktiviert ist.
Otávio Décio
1
Es kann viele verschiedene Endpunkte in einem WCF-Dienst geben, mit verschiedenen Arten von Bindungen und verschiedenen Adressen.
Codekaizen
Metadatenendpunkte werden also durch die Adresse "mex" identifiziert?
Craig Schwarze
2
@CraigS: Die Endpunkte für den Metadatenaustausch sind solche mit einem Vertrag von IMetadataExchange- das ist der entscheidende Faktor. Es ist ein Systemvertrag, den WCF für den Metadatenaustausch bereitstellt. Die Adresse ist völlig irrelevant, "mex" ist nur eine häufig verwendete Best Practice, aber keineswegs eine Anforderung
marc_s
35
mexHTTPBinding ermöglicht die Verwendung von WS-MetadataExchange über HTTP. Sie benötigen es nur, wenn Sie Richtlinien implementiert haben, die sich im Laufe der Zeit ändern können, und Sie Ihren Dienst beispielsweise mit UDDI ermitteln müssen
Viele Leute sagen, dass es für die Erstellung clientseitiger Proxys erforderlich ist. Das ist nicht wahr. Für clientseitige Proxys müssen Sie WSDL veröffentlichen. Sie können dies tun, indem Sie in Ihrem Serviceverhalten angeben.
mexHttpBinding wird beim Hinzufügen einer neuen Dienstreferenz in einem Projekt in Visual Studio 2013 (DEBUG) verwendet, die Ihren WebService verbraucht (Bereitstellung der mexHttpBinding). Nachdem Sie die Dienstreferenz erfolgreich hinzugefügt haben, können Sie die mexHttpBinding deaktivieren.
Dies alles wird in der App.config beschrieben, wenn Sie ein WCF-Servicebibliotheksprojekt in Visual Studio 2013 erstellen (Lösung >> Neues Projekt hinzufügen >> Visual C # >> WCF >> WCF-Servicebibliothek).
IMetadataExchange
- das ist der entscheidende Faktor. Es ist ein Systemvertrag, den WCF für den Metadatenaustausch bereitstellt. Die Adresse ist völlig irrelevant, "mex" ist nur eine häufig verwendete Best Practice, aber keineswegs eine AnforderungmexHTTPBinding ermöglicht die Verwendung von WS-MetadataExchange über HTTP. Sie benötigen es nur, wenn Sie Richtlinien implementiert haben, die sich im Laufe der Zeit ändern können, und Sie Ihren Dienst beispielsweise mit UDDI ermitteln müssen
Viele Leute sagen, dass es für die Erstellung clientseitiger Proxys erforderlich ist. Das ist nicht wahr. Für clientseitige Proxys müssen Sie WSDL veröffentlichen. Sie können dies tun, indem Sie in Ihrem Serviceverhalten angeben.
Kurz, du weißt es nicht -> du brauchst es nicht.
quelle
mexHttpBinding wird beim Hinzufügen einer neuen Dienstreferenz in einem Projekt in Visual Studio 2013 (DEBUG) verwendet, die Ihren WebService verbraucht (Bereitstellung der mexHttpBinding). Nachdem Sie die Dienstreferenz erfolgreich hinzugefügt haben, können Sie die mexHttpBinding deaktivieren.
Dies alles wird in der App.config beschrieben, wenn Sie ein WCF-Servicebibliotheksprojekt in Visual Studio 2013 erstellen (Lösung >> Neues Projekt hinzufügen >> Visual C # >> WCF >> WCF-Servicebibliothek).
quelle