Was soll ich wissen, wann Interoperabilität WCF Webservice zu entwickeln?
-
29-09-2019 - |
Frage
Ich beginne dieses Wiki Best Practices zur Erstellung interoperable Web Services (nicht Clients) in WCF zu sammeln. Bitte teilen Sie Ihre Erfahrungen, wenn Sie irgendeine Funktion kennen, die im Allgemeinen nicht kompatibel ist oder die nicht kompatibel mit bestimmten Plattform.
Lösung
Ziemlich einfach:
-
vermeiden Sie alle .NET Besonderheiten wie Ausnahmen (verwandeln sie in SOAP-Fehler)
-
verwenden Sie keine Bindung, den Start mit
net
wie NetTcp, netNamedPipes, NetMsmq usw. - VerwendungwsHttpBinding
für die sicheren WS- * Dienstleistungen undbasicHttpBinding
für maximale Reichweite / Kompatibilität selbst mit den seltsamsten Client-Plattformen -
nicht die NetDataContractSerializer verwenden
Andere Tipps
empfehle ich WCF REST mehrere Serialisierungsformaten aussetzt, auf jeden Fall xml für den Anfang.
Allgemeine Interoperabilität:
- Es werden nur HTTP und HTTPS-Transportkanäle sind vollständig kompatibel
- Verhandlung von Sicherheitsdaten ist nicht kompatibel (negotiateServiceCredential in Nachrichtensicherheit). Es verwendet TLSNego oder SPNego Protokolle, die von anderen Plattformen nicht immer unterstützt werden.
- HTTP-Streaming kann Probleme verursachen als auch
- binäre Codierung über HTTP-Kanal ist nicht kompatibel
- OleTransactions sind nicht kompatibel
- Verwenden Service Sicherheitskontext mit Sorgfalt (estabilishSecurityContext in Nachrichtensicherheit). Es verwendet WS-Secure Conversation-Protokoll, das auf einigen Plattformen nicht verfügbar ist
Edit:
- WSDualHttpBinding und CompositeDuplexBindingElement sind nicht kompatibel