tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
2392
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    y0dA y0dA ist offline Mitglied Brokat
    Registriert seit
    Mar 2007
    Beiträge
    263
    Hi!
    Da ich mit beiden Themen nicht vertraut bin ich aber zumindest wissen möchte wann ich was benutze, hier meine Frage (vllt erbarmt sich ja einer):

    Wann benutze ich RMI?

    Wann benutze ich EJB?

    Die 3te Variante wäre dann bspw ein Webservice, hierbei weiß ich aber wann ich es als Technologie verwenden würde (Webservice benutzen wenn ich bspw verschiedene Programme welche wiederum in den unterschiedlichsten Sprachen geschrieben sind auf ein Service zugreifen solln --> sprich mit nem Webservice bin ich nicht an Java gebunden, also die Aufrufer des Services).

    mfg
     

  2. #2
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Im besten Fall nutzt du gar nichts davon . Martin Fowler hat mal geschrieben: "The first rule of distributing objects is: don't do it!" . Remotekommunikation ist ungefähr um den Faktor 1000 langsamer als lokale. Hinzu kommen die Themen Serialisierung usw.

    Grundsätzlich gehst du mit deiner Erklärung schon in die richtige Richtung. Wenn die erste Frage (Brauche ich remoting?) geklärt und mit "ja" beantwortet ist, stellt sich die Frage nach der einzusetzenden Technologie. Hierbei gibt es eine Reihe von Entscheidungskriterien. In welchen Sprachen sind die kommunizierenden Systeme implementiert? Gibt es eine heterogene Systemlandschaft setzt man meißt auf WebServices. Die sind sprachneutral und werden in den meisten Sprachen unterstützt. Allerdings gibt es hier auch Interoperabilitätsschwierigkeiten (v.a. zw. Java und C# z.B.). WebServices sind XML basiert und produzieren einen ordentlichen Overhead, so dass in performancekritischen Anwendungen durchaus nach Alternativen geschaut werden muss.

    Hier fallen dann schnell die Namen Hessian und Burlap. Burlap ist ein XML basiertes, sprachunabhängiges Protokoll mit weniger Overhead als WebServices. Hessian ist die binärvariante von Burlap, ebenfalls sprachunabhängig.

    RMI ist nur für Java 2 Java Kommunikation möglich, ist aber selbst von den Binärprotokollen das schnellste.

    Als wenn das nicht schon genug wirrwarr wäre, gilt es in vielen Fällen noch das Übertragungsprotokoll zu beachten. RMI basiert auf TCP, kann also in Umgebungen, wo Ports stark restriktiert sind Probleme bereiten, ebenso Hessian und Burlap. Weitaus entspannter gestalten sich Protokolle die auf HTTP aufsetzen, wie Springs HTTP Invoker (nur Spring <-> Spring). WebServices gehen sowohl über HTTP als auch über JMS und SMTP.

    Der große Vorteil von WebServices ist die enorme Flexibilität, gegen die man meist etwas Performance opfert.

    Genug Verwirrung gestiftet? Hier gibts noch nen netten Artikel zu dem meisten Technologien: http://daniel.gredler.net/2008/01/07...ol-benchmarks/

    Gruß
    Ollie

    PS: EJB ist unter der Haube RMI. Ich würde aber auf keinen Fall anfangen EJB einzuführen, nur um Remoting zu machen. Dazu ist der Kram (immernoch) zu schwergewichtig.
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    RMI und Webservices sind eine Remoting Technologie
    EJB ist ein Komponentenmodell.
    Also per se sind das erstmal zwei paar Schuhe.

    Ich kann mich der Erklärung von Ollie nur anschließen.

    RMI ist nur für Java 2 Java Kommunikation möglich, ist aber selbst von den Binärprotokollen das schnellste.
    Stimmt nicht ganz Mit IIOP.Net (http://iiop-net.sourceforge.net/rmiAdderDNClient.html)
    kann man auch mit einer Java Anwendung via RMI over IIOP kommunizieren und ist auch ziemlich schnell.

    PS: EJB ist unter der Haube RMI. Ich würde aber auf keinen Fall anfangen EJB einzuführen, nur um Remoting zu machen. Dazu ist der Kram (immernoch) zu schwergewichtig.
    Das ist zwar der default lässt sich aber in der Regel im Container konfigurieren.

    Nur weil Systeme in unterschiedlichen Sprachen geschrieben sind, muss man nicht gleich Webservices zur Kommunikation verwenden. Es lassen sich auch eigene binäre Kommunikation über TCP/UDP Sockets, XML RPC oder JMS (via JNI Bridge oder NMS mit ActiveMQ: http://activemq.apache.org/nms/).

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. wann Config-Datei, wann Registry?
    Von XtremeCJ im Forum Coders Talk
    Antworten: 1
    Letzter Beitrag: 27.11.10, 12:16
  2. Wann benutze ich welchen Listener?
    Von swas im Forum Java
    Antworten: 2
    Letzter Beitrag: 25.06.10, 08:01
  3. Wann sollte man DIV, wann TABLE einsetzen?
    Von trench140 im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 18.08.08, 12:14
  4. Antworten: 0
    Letzter Beitrag: 26.06.05, 15:01
  5. Wann Klassen und wann ID´s?
    Von Jan-Frederik Stieler im Forum CSS
    Antworten: 4
    Letzter Beitrag: 03.03.05, 21:13