Sie bedeuten buchstäblich entfernt? Wie in einer anderen Umgebung mit unterschiedlichen Verfügbarkeitsmerkmalen? Mit Netzwerk-Gemeinkosten?
Angenommen, "Ja" wäre mein erster Schritt, einen Service-Ansatz zu nehmen, die Aufruf-Technologie für einen Moment beiseite zu legen. Denken Sie nur über das Design und die Bedeutung Ihrer Dienste nach. Sie wissen, dass sie vergleichsweise teuer zu nennen sind, daher sind kleine beschäftigte Schnittstellen eher eine schlechte Sache. Sie wissen, dass das Dienstsystem zwischen den Aufrufen fehlschlagen kann, sodass Sie statusfreie Dienste bevorzugen. Möglicherweise müssen Sie die Anforderungen nach einem Fehler erneut versuchen, sodass Sie idempotente Service-Designs bevorzugen.
Dann berücksichtigen Sie Verfügbarkeitsbeziehungen. Kann Ihr Client ohne das Remote-System arbeiten? In einigen Fällen können Sie einfach nicht fortschreiten, wenn das Remote-System nicht verfügbar ist (z. B. kann der Mitarbeiter nicht aktiviert werden, wenn Sie nicht zum HR-System gelangen). In anderen Fällen können Sie ein "Feuer-und-Sagen" -Verfahren durchführen "Ich bin später" Philosophie; Warteschlange die Anfragen und verarbeiten Antworten später.
Wo es eine Verfügbarkeitssteigung gibt, scheint es einfach zu sein, eine synchrone Schnittstelle freizugeben. Sie können dies mit SLSB EJBs tun, wenn alles Java EE ist, das funktioniert. Ich neige dazu zu verallgemeinern und erwarte, dass, wenn meine Dienste nützlich sind, auch Nicht-Java-EE-Clients sie wollen. Daher ist SOAP (oder REST) nützlich. Heutzutage ist das Hinzufügen einer Web-Service-Schnittstelle zu Ihrem SLSB ziemlich trivial.
Aber meine Haustier-Theorie ist, dass jedes ausreichend große IT-System benötigt aynch Kommunikation: Sie müssen die Verfügbarkeit Einschränkungen zu entkoppeln.Also würde ich eher nach einer JMS-ähnlichen Beziehung suchen. Eine MDB-Fassade vor Ihren Diensten oder SOAP/JMS ist nicht schwer zu tun. Solch ein Ansatz neigt dazu, die Fehlerfalldesignprobleme hervorzuheben, die wahrscheinlich sowieso lauern würden. JMS neigt dazu, Sie zum Nachdenken zu bringen: "Angenommen, ich bekomme keine Antwort? Angenommen, meine Antwort kommt zu spät?"
Wir verwenden dies in einem System mit HTTP von Client zu Server (aus Sicherheitsgründen erforderlich) und verwenden sowohl JMS als auch EJB für Service-Anrufe. – Robin