2009-11-21 12 views
0

Dans un autre question J'étais inquiet à propos de l'utilisation d'un service Web qui prend cinq minutes pour terminer. Je pensais à utiliser RMI au lieu de services Web pour ce cas d'utilisation.Est-ce que les services RMI et Web utilisent une connexion socket?

Mais en fin de compte, un service Web et RMI utilisent-ils un socket TCP pour la connexion sous-jacente? Y a-t-il une raison pour laquelle un appel de service Web prenant 5 minutes est moins stable qu'une demande RMI prenant le même temps?

Notez que dans notre cas, nous parlons de la communication interne des applications.


Mise à jour: Cette question vient de me inquiéter que nous courrions dans les connexions interrompues ou d'autres problèmes avec les services Web qui prennent 3-5 minutes. L'inquiétude peut-être totalement irrationnelle - répondeurs à mon autre question a indiqué que vous devriez être bien si vous contrôlez le client et le serveur. Mais je voulais juste comprendre plus en détail pourquoi une connexion interrompue pour un appel de 5 minutes n'est pas plus susceptible d'utiliser une implémentation de service Web qu'une implémentation RMI. Si elles s'appuient sur des connexions socket que cela pourrait expliquer pourquoi il n'y a aucune différence ...

+0

Qu'entendez-vous par moins stable? Qu'observez-vous? –

+0

Je n'avais rien remarqué - j'étais simplement * obsédée * par rapport à d'éventuels problèmes. Ajout d'une clarification à la question. –

Répondre

3

Si un seul appel distant prend 5 minutes, c'est probablement parce que l'opération implémentant cet appel est lente, et non parce que la couche de service Web elle-même est lente. Si vous deviez ré-emballer l'opération avec RMI, ce sera probablement aussi lent. L'avantage de performance de RMI sur SOAP ne sera vraiment évident que si vous avez un grand nombre d'opérations appelées, plutôt que pour la vitesse d'une seule opération, simplement parce que RMI est plus efficace que SOAP. Mais il ne sera pas magique d'aller plus vite. En ce qui concerne votre question concernant les sockets, oui, RMI et SOAP utilisent tous les deux des protocoles de socket lorsque vous descendez assez loin (IIOP ou JRMP dans le cas de RMI, HTTP dans le cas de SOAP). Ce n'est pas vraiment pertinent pour votre problème, cependant.

1

RMI est principalement utilisé sur JRMP (dans un contexte Java pur) ou IIOP (dans un contexte non-JVM), tandis que les messages SOAP sont généralement (mais pas exclusivement) envoyé via HTTP. Tous ces protocoles à trois fils utilisent TCP/IP, donc, à cet égard, il n'y a aucun avantage à choisir RMI sur un service Web.

+0

RMI n'est pas utilisé du tout dans un contexte non-JVM. RMI/IIOP est utilisé dans un contexte J2EE. – EJP