2009-08-29 28 views
7

Come confrontare i servizi Web Java RPC vs Java. Ho poche mani sull'esperienza con i servizi Web. Ora ho bisogno di sapere come RPC si confronta con i servizi Web. Come funziona RPC?Confronta servizi Java RPC vs Web

Aggiunta: Quando andiamo per una delle opzioni?

+0

Forse cercavi RMI vs servizi web? RPC è una soluzione indipendente dal linguaggio. Mi interessa Java usando RPC (non RMI/REST/etc.) Ma potrebbe non essere quello che intendevi. –

risposta

1

La mia ipotesi è che intendi RMI con Java RPC. L'invocazione del metodo remoto è molto specifica per Java e quindi abbastanza semplice da gestire nei programmi Java nativi (Java su entrambi i lati). Utilizza un formato binario per trasferire dati e non funziona su HTTP, quindi è probabilmente più veloce della soluzione webservice.

I servizi Web utilizzano invece (in generale) un formato generico come XML o JSON che può essere richiesto e letto da qualsiasi altra applicazione remota. Il sovraccarico è più grande (effettuando una richiesta http e serializzando/deserializzando i dati), ma il client che utilizza un servizio web non si preoccupa di come il webservice abbia generato quei dati e non si affidi a un determinato linguaggio di programmazione purché sia ​​in un formato specificato

Quindi la tecnologia che si desidera utilizzare dipende dalla presenza di client diversi da Java che desiderano utilizzare il servizio.

7

Come afferma Daff, lo stesso RMI Java è rilevante solo per le comunicazioni Java-to_Java. In termini di facilità di sviluppo in questi giorni il grado di codifica dal punto di vista del fornitore di servizi è abbastanza simile.

Tuttavia, oltre a problemi di prestazioni, in cui il divario tra i WebServices e RMI è piuttosto variabile (per alcuni formati messaggio non ci può essere differenza trascurabile,) c'è un altro aspetto da considerare: la resilienza.

In genere, RMI è facile da configurare quando un client parla con un server e non si cura della disponibilità del client accoppiato a quello del singolo server. Server down, client down, tale è la vita.

Nel caso del Servizio Web è possibile distribuire il servizio in modo semplice a un cluster di server e, dato che si sta richiamando il servizio Web su HTTP, è possibile sfruttare facilmente tutte le normali tecniche di routing e irrorazione di rete utilizzate su più ampia scala siti web Nessuna codifica speciale necessaria nel server o nel client.

Ora è possibile ottenere lo stesso livello di resilienza con RMI, ma ciò richiede un'infrastruttura di provisioning di servizi leggermente migliore e questo è il punto in cui il modello di programmazione EJB di Java EE (o framework come Spring) entra in gioco. EJB utilizza RMI su IIOP, un protocollo che consente chiamate resilienti alle istanze del server, gestendo in modo trasparente le interruzioni del server. [Ne fa anche molto di più, come la sicurezza e le transazioni, ma anche i Servizi Web. Interessante ma non parte di questa discussione.]

Bottom line: per la fornitura di servizi di qualità di produzione, di solito inizio creando un oggetto di servizio. Mi capita di utilizzare Java EE EJB 3, altri usano Spring. È possibile esporre tale oggetto di servizio come un servizio Web o come RMI/IIOP con alcune configurazioni/annotazioni molto semplici. È davvero poco sforzo scegliere uno o entrambi. Il mio mondo è importante per l'interoperabilità, quindi tendo ad esporre i servizi Web. Se si ha solo Java da considerare potrebbe dare qualche miglioramento delle prestazioni nell'uso di RMI/IIOP ma questo non è garantito, è necessario misurare la perfromance per essere sicuri.

0

Se stai guardando i servizi web RPC vs Document, questa domanda e le risposte potrebbero essere ciò che stai cercando.

http://www.coderanch.com/t/443021/Web-Services-Certification-SCDJWS/certification/Difference-between-RPC-Document-web#1971102

potevo spiegarlo, ma quando qualcuno ha una discussione, con esempi di codice, da guardare, la mia risposta sarebbe pallido in confronto.

Inoltre, non sono sicuro di cosa si stia chiedendo, penso che la terminologia potrebbe essere un problema qui.

0

RPC viene utilizzato solo quando viene utilizzata la stessa piattaforma su entrambe le estremità. EJB viene utilizzato solo per Java.

Q: Cosa succede se qualsiasi app non Java vuole accedere al mio servizio?

A: Thats dove vengono introdotti i servizi Web Web Services può essere non Java così e utilizzato anche per sincrona così come la comunicazione asincrona