L'interoperabilità tra servizi Web WCF e Java sembra sorprendentemente problematica. Qualche buona risorsa?

13

Con un progetto recente, il nostro team di sviluppo basato su .Net è stato incaricato di integrarsi con un'intera serie di servizi web basati su Java in tutto il mondo, e abbiamo davvero avuto sorprendentemente (beh, di certo non ci sorprende) grandi quantità di problemi perché l'XML generato da WCF non è accettato dai servizi java.

Sembra anche che non ci siano davvero tante buone informazioni da trovare sull'argomento, abbiamo ricevuto alcuni buoni consigli dall'eccellente blog di WCF di Yaron Nave, link e anche sul forum MSDN .

C'è qualcuno qui che sente davvero di aver capito tutto e conosce la risorsa definitiva sull'argomento? Sarebbe interessato a consigli su libri, blog o altri siti web.

Modifica:
Sono stravolto nell'impostare la risposta accettata su questo thread, perché ognuna delle due migliori risposte ha qualche valore:
1. Ci ritroveremo probabilmente a fare più implementazioni di richieste Web HTTP invece di combattere la WCF.
2. Ma anche il WCF Express Interop Bindings 1.0 è stato un suggerimento molto sensato.

    
posta Bjørn 04.05.2012 - 09:59
fonte

3 risposte

14

Ah sì ... SOAP, il celebre Sacro Graal dell'informatica. Una lingua franca che prometteva un'interoperabilità tra i sistemi di tutto il mondo.

E poi si entra nelle differenze tra le implementazioni SOAP su Java e PHP e .NET. O anche tra il servizio WebSphere SOAP e il client SOAP Apache. Non preoccuparti di gestire diversi standard di compatibilità WS-I. Ora dimmi perché hai bisogno di uno standard di compatibilità per un protocollo che è stato costruito per compatibilità , parla di ironico (e intendo vera ironia, non il marchio di ironia di Alanis Morrissette ).

L'unica volta in cui non si incontrano problemi nel comunicare due endpoint SOAP che comunicano è quando entrambi sono sulla stessa piattaforma e nella maggior parte dei casi la piattaforma avrà un protocollo di operazione remota più efficiente.

Quello che sto dicendo qui è che per la maggior parte, SOAP è inutile. Ora sapone per le lettere minuscole, lo uso tutti i giorni e sono grato che la maggior parte delle persone faccia lo stesso.

Detto questo, se insisti a battere la testa contro un muro di mattoni. Ecco un buon posto per start Microsoft ha una serie di collegamenti per abilitare l'interoperabilità con la maggior parte dei principali server Java. La parte divertente del corso è scoprire quali funzionano con i servizi che stai integrando.

    
risposta data 04.05.2012 - 18:35
fonte
9

Secondo me, la tua osservazione è abbastanza accurata. Le implementazioni di alto livello della comunicazione basata su XML di solito non sono compatibili con piattaforme diverse, anche se sono entrambe chiamate "SOAP". Sottili differenze nell'implementazione, probabilmente entrambe nell'ambito dello standard implementato, creano problemi nella vita reale.

I miei consigli per i fornitori di servizi: Utilizzare un'implementazione semplice piuttosto che un'implementazione molto complessa e teoricamente migliore. Ad esempio, non includere schemi di autenticazione estremamente complessi se non ne hai bisogno.

Le mie raccomandazioni per i consumatori di servizi (presumo tu): Quando comunichi a un'implementazione di alto livello su una piattaforma diversa dalla tua, degradati a un'implementazione di livello inferiore. Diventa improvvisamente piuttosto semplice se si individua semplicemente quale sia l'effettivo XML da inviare e quindi si utilizzano le normali buone pratiche di codifica per ottenerlo, in alternativa a insistere sull'utilizzo dell'implementazione di alto livello della propria piattaforma.

Spero che non fosse troppo astratto. In breve , quando sei sulla piattaforma .NET che si connette a una piattaforma Java, potresti semplicemente assemblare le intestazioni e gli xml in un HttpWebRequest e inviarlo in questo modo.

    
risposta data 04.05.2012 - 14:43
fonte
4

Avrai gli stessi problemi anche a consumare servizi web PHP.

La nostra unica risposta a questo era cambiare il tipo di protocollo in REST piuttosto che SOAP. Non abbiamo mai reso interoperabile la roba SOAP, tanto per Simple!

    
risposta data 04.05.2012 - 12:35
fonte

Leggi altre domande sui tag