Cosa devo sapere quando lo sviluppo di servizi Web WCF interoperabile?
-
29-09-2019 - |
Domanda
sto iniziando questo Wiki per raccogliere le migliori pratiche sulla creazione di servizi interoperabili web (non clienti) in WCF. Si prega di condividere la vostra esperienza se sapete qualsiasi caratteristica che in genere non è interoperabile o che non è interoperabile con la piattaforma specifica.
Soluzione
abbastanza semplice:
-
evitare eventuali specifiche .NET come eccezioni (li trasformano in errori SOAP)
-
Non utilizzare alcun legame che iniziano con
net
come netTcp, netNamedPipes, netMsmq e così via - l'usowsHttpBinding
per WS- * sicuro servizi ebasicHttpBinding
per la massima portata / compatibilità anche con le piattaforme client più strane -
non utilizzare il NetDataContractSerializer
Altri suggerimenti
Vi consiglio WCF REST esporre più formati di serializzazione, sicuramente xml per cominciare.
interoperabilità generale:
- Solo HTTP e HTTPS canali di trasporto sono interoperabili
- La negoziazione delle credenziali di sicurezza non è interoperabile (negotiateServiceCredential in sicurezza dei messaggi). Esso utilizza i protocolli TLSNego o SPNEGO che non sono sempre supportati da altre piattaforme.
- streaming HTTP possono causare problemi così
- di codifica binaria tramite HTTP canale non è interoperabile
- OleTransactions non sono interoperabili
- Usa contesto di sicurezza di servizio con cura (estabilishSecurityContext in sicurezza dei messaggi). Esso utilizza WS-Secure Conversation protocollo che non è disponibile su alcune piattaforme
Modifica
- WSDualHttpBinding e CompositeDuplexBindingElement non sono interoperabili