Quels sont les avantages et les inconvénients des services Web et de RMI dans un environnement exclusivement Java?

StackOverflow https://stackoverflow.com/questions/120791

Question

Lorsque vous développez des applications distribuées, toutes écrites en Java par la même entreprise, choisiriez-vous Web Services ou RMI? Quels sont les avantages et les inconvénients en termes de performances, de couplage lâche, de facilité d'utilisation, ...? Quelqu'un choisirait-il WS? Pouvez-vous créer une architecture orientée service avec RMI?

Était-ce utile?

La solution

J'essaierais d'y penser de cette façon:

Allez-vous utiliser des services indépendants s'exécutant l'un en dessous de l'autre et les services non java pourront y accéder à l'avenir? Ensuite, optez pour les services Web.

Voulez-vous simplement étendre des parties d’une application (attention au singulier) sur plusieurs serveurs? Ensuite, optez pour RMI et vous ne serez pas obligé de quitter l’univers Java pour que tout fonctionne ensemble et étroitement couplé.

Autres conseils

Je choisirais WS.

  • Il est peu probable que WS / RMI constitue votre goulot d'étranglement.
  • Pourquoi fermer la porte à d’autres technologies possibles à l’avenir?
  • RMI peut rencontrer un problème si la version des classes sur le client / serveur n’est plus synchronisée.

Et ... je choisirais très probablement les services REST.

Si vous n'en avez pas besoin (interopérabilité avec non Java) et que vous ne l'êtes probablement pas, RMI sera meilleur; moins de code, moins de configuration, moins de surcharge de bande passante.

Une option si vous craignez d’avoir besoin de vous est d’utiliser EJB3; Il utilise RMI, est très facile à configurer et à déployer, mais vous permet également de transformer facilement vos appels en services Web si vous en avez besoin.

Quoi que vous fassiez, ne créez pas votre propre chose; s'en tenir à une norme.

mes choix sont:

la sérialisation java standard - pros: imho offre le plus de performances, simple à mettre en œuvre (j'utilise Spring pour exposer une interface locale comme une interface distante); les inconvénients: la sérialisation ne fonctionne pas entre les différentes versions de JVM

sérialisation binaire (par exemple, hessian from jetty) - avantages: performances identiques à celles de la sérialisation java et fonctionne entre différentes versions de jvm

WS: uniquement si l'interopérabilité entre différentes plates-formes java + .net est nécessaire, sinon le poids est trop élevé.

RMI est un excellent moyen de transport pour le développement rapide, mais je vous déconseille de l’utiliser dans un environnement de production. Le problème de compatibilité de la sérialisation peut rendre les choses plus difficiles, vous devez donc coordonner vos déploiements avec le plus grand soin.

Les services Web sont inefficaces, certes, mais uniquement via le matériel. Vous pouvez également utiliser du XML sur HTTP simple et léger, plutôt que du SOAP / WSDL complet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top