Qualcuno è a conoscenza di problemi con l'utilizzo di WCF per esporre un'interfaccia SOAP per client non .NET?
-
01-07-2019 - |
Domanda
Qualcuno è a conoscenza di problemi con l'utilizzo di WCF per esporre un'interfaccia SOAP per client non .NET? Ad esempio incompatibilità con altre librerie SOAP?
In questo modo l'interfaccia SOAP può essere esposta per consentire a terzi di integrarsi con il nostro software.
Soluzione
Alcune delle aree problematiche che ho riscontrato con WCF:
- Genera WSDL che è diviso
su più URL. Cioè, uno
parte dello schema si trova in un URL,
un altro si trova su un URL diverso, ecc.
Il "principale" URL WSDL (quello con
solo "? WSDL " dopo il nome del servizio)
fa riferimento agli altri tramite
xsd: import
elementi. Molti client SOAP (ad es. Pre-NET Delphi) hanno enormi difficoltà con questo linguaggio. Quindi devi davvero " appiattire " il tuo WSDL per raggiungere l'interoperabilità nella pratica. Una soluzione è data qui . - WCF non genera spazi dei nomi XML allo stesso modo, diciamo, di ASMX web Servizi. WCF ha la tendenza a collocare qualsiasi contratto di servizio o dati in un suo spazio dei nomi scelta. Ancora una volta, alcuni client SOAP hanno difficoltà con questo. È possibile aumentare il livello di interoperabilità aggiungendo uno spazio dei nomi esplicito agli attributi ServiceContract e DataContract.
- Molti client SOAP non gestiranno guasti altrettanto bene dei client WCF. Per esempio, il codice di generazione proxy non lo farà creare oggetti lato client per guasti dichiarati nel WSDL. Il i guasti verranno comunque trasmessi a il cliente, ovviamente, ma il il cliente deve quindi lavorare di più capire che tipo di colpa è era.
Altri suggerimenti
Le versioni dello stack degli standard WS- * possono anche essere un problema di interoperabilità, ad esempio la versione di WS-Addressing (2003) supportata da alcune implementazioni Java come Oracle BPEL non è supportata da WCF che supporta le versioni successive di bozza e 1.0 ma non quello precedente del 2003
Generalmente tutto funziona bene. Ovviamente dipenderà dal client che stai utilizzando, non tutti implementano correttamente SOAP.
P.S. Potresti riformulare la tua domanda se speri in una risposta più specifica?