SIMON


SIMON
SIMON
Entwickler root1.de - Software Engineering
Aktuelle Version 1.1.2
(1. Juli 2011)
Aktuelle Vorabversion 1.2.0-SNAPSHOT
Betriebssystem plattformunabhängig
Programmier­sprache Java
Kategorie RPC-Kommunikationsframework
Lizenz GPL 3.0 / root1.de Commercial License 1.1 [1]
http://dev.root1.de/projects/simon

SIMON ist eine dual lizenzierte Java API die einen alternativen RMI (Remote Method Invocation) Ansatz verfolgt, und im Vergleich zu RMI, deutlich einfacher in der Verwendung ist und besser mit netzwerkübergreifenden Verbindungen zurecht kommt.

SIMON ist ein Akronym für Simple Invocation of Methods Over Network

Inhaltsverzeichnis

Beschreibung

SIMON verfolgt prinzipiell die gleichen Ziele und Ansätze wie RMI: Die Kommunikation erfolgt im objektorientierten RPC Stil über eine TCP/IP Verbindung. Nach wenigen einleitenden API Aufrufen ist die Verbindung hergestellt und die weitere Entwicklung kann völlig unabhängig von der verwendeten Netzwerktechnologie verlaufen.

Bei der Entwicklung von SIMON wurde jedoch besonderes Augenmerk auf folgende Funktionen gelegt:

  • Skalierbarkeit
    Statt wie RMI auf Java IO (blocking IO) zu setzen, verwendet SIMON das Apache MINA Framework, welches primär auf Java NIO (non blocking IO) setzt. Der Vorteil liegt darin, dass man nicht mehr einen Thread pro verbundenen Client benötigt, sondern mit einer fixen Anzahl Threads arbeiten kann, was bei sehr vielen Clients Ressourcen spart.
  • Bidirektionale Methodenaufrufe über Netzwerke hinweg
    Hat ein Client eine Verbindung zu einem SIMON Server aufgebaut, so kann der Server den selben, bereits offenen Kommunikationskanal nutzen, um Methoden auf Clientseite aufzurufen.

Funktionen

Die aktuelle Version bietet unter anderem folgende Funktionen[2] :

  • Bidirektionales RPC
    Client kann Methoden auf dem Server aufrufen und Server kann Methoden auf dem Client aufrufen (Callback)
  • Proxy support
    Ein Client kann sich über einen Proxy-Server mit dem Server verbinden
  • SSL Unterstützung
    Verschlüsselung der gesamten Kommunikation mittels SSL
  • Austauschbares Protokoll
    Entwickler können ihr eigenes Protokoll schreiben
  • Connection loss detection
    Erkennt Verbindungsabbrüche in kürzester Zeit (Prüfintervall konfigurierbar)
  • Statistiken
    Zugriff auf Verbindungsstatistiken via API
  • RawDataChannel
    Transfer von Rohdaten vom Client zum Server und umgekehrt ohne zusätzlichen Reflection oder Serialisierungsoverhead.
  • PublishService
    Findet SIMON Server im lokalen Netzwerk automatisch

Unterschiede zu RMI

SIMON orientiert sich zwar am Vorbild RMI, jedoch gibt es deutliche Unterschiede[3] :

  • SIMON verwendet ein eigenes, angepasstes Protokoll, sowie ein RMI-inkompatibles API. RMI Anwendungen lassen sich jedoch recht einfach zu SIMON portieren. Es muss lediglich das Remote-Interface, sowie der Verbindungsaufbau angepasst werden.
  • SIMON verwendet über das Apache MINA Framework Java NIO statt wie RMI Java IO.
  • Bei RMI hat man nur indirekt Kontrolle über die Anzahl der Netzwerkverbindungen für die RPC Kommunikation zwischen Client und Server. Bei SIMON gibt es exakt eine Netzwerkverbindung, welche vom Client aus in Richtung Server aufgebaut wird, und für Kommunikation in beide Richtungen verwendet werden kann.
  • SIMON verwendet ein konfigurierbares Thread-Modell für die Abwicklung der Kommunikation und Methodenaufrufe. Entweder man überlässt der JVM die Entscheidung über die Anzahl der Threads, oder man legt eine fixe Anzahl Threads fest. Bei RMI hat man keinen direkten Einfluss.
  • RMI benötigt eine weitere Socket-Verbindung für Callbacks vom Server zurück zum Client. Befindet sich der Client hinter einem Router, wie er beispielsweise bei DSL-Anschlüssen die Regel ist, schlägt dieser Verbindungsaufbau ohne zuvor eingerichtete, manuelle Portweiterleitung im Router fehl. SIMON verwendet für Callbacks die bereits existierende Netzwerkverbindung die der Client aufgebaut hat. Es ist keine konfiguration des Netzwerks bzw. des Routers notwendig.
  • SIMON beherrscht die Verwendung von Proxies, was die Kommunikation beispielsweise aus Firmennetzwerken, wo Proxies üblich sind, erleichtert. RMI hingegen beherrscht nur das HTTP-Tunneling über den Umweg eines CGI-Scripts. Damit geht jedoch ein Großteil der Performance verloren.

Geschichte

Im Dezember 2007 begann Alexander Christian, angetrieben durch die Nachteile, die RMI bei der Verbindung über das Internet mit all seinen Hürden wie Router, Gateways, Firewalls etc. eine alternative RMI Lösung zu implementieren.

Bedingt durch den etwas erweiterten Funktionsumfang gegenüber RMI und Auslegung der Netzwerkkommunikation, war es nicht möglich das Protokoll und die Programmierschnittstelle kompatibel zum RMI zu halten.

Die erste Version 0.1 alpha, wurde am 18. Januar 2008 in einer deutschsprachugen Java Entwickler Community veröffentlicht.[4]

Mitte 2008 begann die Umstellung von blocking-IO zu non-blocking-IO mit Hilfe der Java Programmierschnittstellen für NIO, was am 15. Oktober 2008 zu Version 0.2 führte. Da die Implementierung der Netzwerkschicht in SIMON jedoch noch nicht optimal war, begann kurz darauf die Umstellung der Netzwerkschicht auf Apache MINA, was eine nochmal bessere Performance versprach.

Bereits im Oktober 2008 gab es eine erste "MINA powered" Version 0.3 alpha von SIMON. Bis zur stabilen Version 1.0.0 sollte es jedoch noch bis 1. Februar 2010 dauern. In der zwischenzeit wurde das Build-System von Apache ANT auf Apache MAVEN umgestellt, was auch die Änderung des Versionsschema von einer zweistelligen, auf eine dreistellige Version umfasste.[5]

Siehe auch

Einzelnachweise

  1. Alexander Christian: root1.de Commercial License Version 1.1. root1.de Software Engineering, 26. Januar 2011, abgerufen am 28. April 2011 (englisch).
  2. Alexander Christian: Features. root1.de Software Engineering, 28. April 2011, abgerufen am 28. April 2011 (englisch).
  3. Alexander Christian: Comparison to RMI. root1.de Software Engineering, 28. April 2011, abgerufen am 28. April 2011 (englisch).
  4. Alexander Christian: RMI vs. SIMON. java-forum.org, 18. Januar 2008, abgerufen am 28. April 2011 (deutsch).
  5. Alexander Christian: History. root1.de Software Engineering, 28. April 2011, abgerufen am 28. April 2011 (englisch).

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Simon — (Variante: Simeon) ist ein männlicher Vorname. Die weibliche Form lautet Simone. Inhaltsverzeichnis 1 Herkunft und Bedeutung des Namens 2 Namenstag 3 Varianten 3.1 …   Deutsch Wikipedia

  • SIMON (C.) — Claude Simon n’a commencé à publier qu’après la guerre (Le Tricheur , 1945); sa – relative – célébrité date du Vent (1957) et surtout de La Route des Flandres (1960), publiés aux éditions de Minuit, qui font paraître à la même époque les romans… …   Encyclopédie Universelle

  • SIMON (R.) — SIMON RICHARD (1638 1712) Né à Dieppe, fils d’artisan, Richard Simon fit ses études chez les oratoriens de Dieppe, puis chez les jésuites de Rouen. Après un bref essai au noviciat de l’Oratoire (1658), il poursuivit à la Sorbonne des études de… …   Encyclopédie Universelle

  • Šimon — (Old Norse: Sigmundr ) was a Varangian (Viking) whose story is related in the Kievan Patericon and his story concerns the creation of the Kievan cave monastery, where he is reported to have been its most important donor.toryŠimon was the son of… …   Wikipedia

  • Simon, S.A. — Simon, S.A. Tipo Sociedad Anónima Fundación 1916 Sede Barcelona, España Productos Instalaciones eléctricas …   Wikipedia Español

  • Simon Kjær — Kjær 2009 Spielerinformationen Voller Name Simon Thorup Kjær Geburtstag 26. März 1989 Geburtsort Horsens, …   Deutsch Wikipedia

  • SIMON (M.) — SIMON FRANÇOIS dit MICHEL (1895 1975) De nationalité suisse (il est né à Genève), Michel Simon est le plus grand «monstre sacré» qu’ait connu le cinéma français. C’est au théâtre qu’il débute en 1921, avec Androclès et le lion de Bernard Shaw; on …   Encyclopédie Universelle

  • Simon — Simon1 [sī′mən] n. [ME < LL(Ec) < Gr(Ec) Simōn, Seimōn < Heb shimʼ on, lit., heard: see SIMEON] 1. a masculine name: dim. Si 2. Bible a) Simon Peter one of the twelve Apostles, called Peter or Simon Peter: see PETER1 …   English World dictionary

  • SIMON — SIMON, family of U.S. entrepreneurs. MELVIN SIMON (1926– ) and his brother, HERBERT (1934– ), the sons of a tailor, were born in Brooklyn, N.Y., and raised in the Bronx. Mel earned an accounting degree from the City College of New York and later… …   Encyclopedia of Judaism

  • SIMON (H. A.) — SIMON HERBERT ALEXANDER (1916 ) Prix Nobel d’économie en 1978, Herbert A. Simon, né aux États Unis en 1916, a introduit l’analyse du comportement humain dans la science économique. Son apport fondamental réside dans la critique de la vision de… …   Encyclopédie Universelle


We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.