Java: RMI vs services Web
J'ai besoin de créer une application distribuée composé de plusieurs clients qui envoient des fichiers (plus d'infos sur les fichiers) à un serveur, également interroger le serveur.
Les Clients doivent accéder à ce Serveur Web de l'intérieur de l'entreprise pour l'envoi de fichiers. Mais, parfois, certaines requêtes spécifiques doivent s'exécuter en dehors de la société.
Je pense que, compte tenu de ce que je sais, que le RMI est un plus rapide(performance opérationnelle) de façon à connecter le client de bureau avec le moteur d'indexation de plus le moteur de stockage. Et je crois que la création d'un Service Web qui fournissent une couche d'accès au moteur de recherche est également une bonne décision, car il sera exécuté à l'extérieur de réseau de la société.
Qu'en pensez-vous? Est une bonne approche ou avez-vous des alternatives doivent être envisagées.
Vous en remercie d'avance.
source d'informationauteur Sheldon
Vous devez vous connecter pour publier un commentaire.
RMI peut être glissé sur HTTP (voir ici), donc ne vous laissez pas influencer votre décision trop.
Si les deux extrémités peuvent parler RMI, puis le RMI est probablement ce que vous devez utiliser; il est beaucoup plus facile à travailler qu'un service web.
Être prudent ici, j'ai développé une solution similaire récemment et a constaté que les sockets ont été les plus efficaces et perfomant façon de transférer des fichiers, tandis que le RMI était bon pour de simples appels de méthode (comme les requêtes). J'ai également eu un dur temps la mise en place du RMI, la configuration peut être parfois difficile et il n'y a pas beaucoup de documentation sur le sujet.
Je crois certainement RMI vous donnera de meilleures performances sur les web services; mais les services web sera probablement plus facile à gérer et flexible pour répondre aux exigences futures.
Ce qui vous fait penser que le RMI est le plus rapide? De mon expérience, elle peut être lente, difficile à configurer, difficiles à obtenir et généralement désagréable de travailler avec.
Depuis les services web sont généralement juste du XML sur HTTP, vous pouvez généralement architecte une solution à l'échelle de mieux.
Si l'API vous voulez soutenir avec le service n'a pas la carte joliment HTTP, je serais probablement choisir pour le RMI (mais méfiez-vous des allers-retours inutiles.)
Si elle ne carte sur HTTP gentiment, j'aurais choisi d'aller avec le RESTE qui est essentiellement HTTP Servlets de l'application de votre API comme des actions. Si la plupart du trafic est le téléchargement des fichiers que vous mentionnez combiné avec quelques appels de l'API, c'est probablement la voie à suivre.
Btw, votre expérience de RMI est plus rapide que les services web coïncide avec la mienne. (Les deux peuvent être mis en œuvre avec le ralentissement des performances comme un résultat, principalement à faire avec des allers-retours dans une mauvaise conception de l'API.)
C'est de ne jamais se terminant le débat de toute façon. Voici mon humble avis:
Si vous envisagez d'EJB comme plus adaptée pour des applications de serveur de l'environnement et de la plus simple à la comparer avec la WS et CORBA selon votre article, EJB (prend en charge la gestion des transactions, le haricot de gestion; WS ont WS+ extensions (la sécurité, les transactions)):
(Ce sont des problèmes à partir de mon expérience, peut-être que d'autres personnes ont été plus chanceux)
Je voudrais conclure qu'WebServices sont plus souples, d'utiliser moins de réflexion et, espérons-le, plus rapide est conçu avec soin. Si Reposante est utilisé dans MVC contrôleur comme résultat, ESB peut contribuer à l'offre de transformations (moins de code, juste de la transformation) et de la sécurité des injections directement dans les en-têtes HTTP (par exemple, ivheader, ivgroup - si vous utilisez ibm web sceau, Tivoli access manager). À l'aide de SAML XACML est possible que lors de l'utilisation de WS que les assertions de travailler avec XML. Donc pour la distribution et disloqué applications d'entreprise WS sont plus souple en raison mentionnée ci-dessus.
Article vous référer dit que les WS ont pas de transactions, mais seulement des propositions. L'article est mal ou trop vieux. Voir OASIS WSAT 1.0 et WSAT 2.0. Microsoft, JBoss, Oracle et quelques autres, le soutien de la technologie de la boîte dans leurs serveurs d'application. Apache Métro semble soutenir que c'était bien (veuillez vérifier).
RMI est essentiellement pour les petites applications . Oui, il est plus rapide, mais au fil du temps, vous vous sentirez que, dans le but de faire plus d'amélioration dans votre application lorsque le trafic augmente , webservice est plus facile à gérer que le RMI et si vous choisissez de Détente webservice qui sera la meilleure option.
Grâce