2009-07-07 4 views
4

Ich bin derzeit auf der Suche nach einer Client/Server-Anwendung. Ich habe vor, die Clients als Swing Thin Client zu schreiben. Ich bin nicht wirklich sicher, wie ich die Server-Seite-Anwendung einrichten sollte.Java Server Anwendungsarchitektur mit Swing Thin Client

Die Java-Server-Seite Anwendung würde die Anwendung Geschäftslogik, Datenbankzugriff, etc. Ich sehe eine Menge Informationen im Web über die Einstellung Java-Server-Side-Anwendungen, die Web-Frontends verwenden. Ich sehe also viele Informationen auf Tomcat und vollen Anwendungsservern wie JBOSS usw. Da ich kein Web-Frontend verwenden werde, weiß ich nicht genau, wie ich den Server einrichten soll. Ich habe sowohl Frühling als auch Java EE betrachtet.

Sind das meine besten Optionen? Gibt es andere Möglichkeiten, an die ich nicht denke? Soll ich sie zusammen verwenden oder kann ich das separat nutzen?

Wenn ich nur Java EE benutzen werde, brauche ich einen vollen Anwendungsserver wie JBOSS, Weblogic, Websphere, etc oder ist das über Kill? Wenn ich auch JMS verwenden möchte, sollte ich dann auch einen Anwendungsserver verwenden oder gibt es Alternativen? Meine ersten Gedanken sind, dass ein Anwendungsserver irgendwie über tötet, aber ich bin mir nicht genau sicher.

Vielen Dank im Voraus für alle Ihre Gedanken!

+0

Nicht ein Idiot sein, aber "Swing" und "Thin" werden sehr selten nebeneinander in einem Satz platziert. :) Hast du GWT angeschaut? Es hat das Programmiergefühl eines nativen Clients mit der wirklich dünnen Natur eines Webclients. –

Antwort

1

Ein Anwendungsserver ist ein Over-Kill, wenn Sie die bereitgestellten Funktionen nicht verwenden. Wenn Ihre Anwendung nur JSP und Servlets hat, ist Tomcat eine bessere Wahl. Wenn Sie EJBs verwenden, benötigen Sie einen Anwendungsserver wie Jboss.

Als erstes müssen Sie entscheiden, wie Ihr Swing-Client mit Ihrem Server interagieren soll. Verwenden Sie das HTTP-Protokoll, die EJB-Suche, die einfache RMI usw.?

Wenn Ihr Client von Personen verwendet wird, die sich außerhalb Ihres Server-Netzwerks befinden, sollten Sie das HTTP-Protokoll verwenden, damit Servlets die beste Wahl sind. Sie können Ihren Server auch als Webservice bereitstellen. Wenn sich die Client-Benutzer im Server-Netzwerk befinden, können Sie auch EJB- oder Socket-Programmierung oder sogar http verwenden.

Sie können Spring in Ihrem Server und Client verwenden. Der Frühling ist ein großer Rahmen, Sie müssen entscheiden, welche Funktionen Sie verwenden möchten. Spring kann in Servlet-Umgebungen, EJB-Umgebungen oder anderen Umgebungen verwendet werden.

+1

Die Verwendung von HTTP/HTTPS ist sicherlich eine gute Wahl für die Kommunikation, da Sie viel weniger Probleme mit Firewalls und Proxies haben. In einer ähnlichen Situation (SWT 'Thin' Anwendung + Tomcat) verwenden wir Spring httpinvoker für die Kommunikation zwischen den Clients und dem Server. –

0

http ist ein gutes, aber einfaches Protokoll, das wahrscheinlich tun kann, was Sie brauchen.

Um sich inspirieren zu lassen, spielen Sie mit dem Jetty-Server (eine Alternative zu Tomcat) - er hat einen einfachen Ajax-basierten Chat-Client als eine der Demo-Anwendungen, die eine Grundlage für alles sein könnten, was Sie tun müssen.

Get Version 6 von http://dist.codehaus.org/jetty/jetty-6.1.19/

würde ich empfehlen, es einfach zu halten, so dass Sie nicht eine große Anzahl von architektonischen Bibliotheken benötigen, die Sie alle lernen müssen.

0

Vielleicht sollten Sie einen Blick auf CaptainCasa werfen - ich sah dies einmal auf der JAX-Konferenz. Sie scheinen einen gut aussehenden Swing-Client zu bieten, behandeln aber alle logischen Dinge im Backend. Ich habe keine persönlichen Erfahrungen mit dem Produkt, aber von dem, was sie vorstellten, sah es ziemlich interessant für "dumme" Kunden aus.

3

Ich denke, ich bin ziemlich in der gleichen Situation wie deine. Ich plane, mit Swing + Spring + JPA weiterzumachen. Das Remoting soll durch Spring Http Invoker erfolgen. Der einzige Nachteil ist, dass Sie einen Servlet-Container wie Tomcat oder Jetty benötigen, um die HTTP-Anfragen an die Spring-Beans weiterzuleiten.Aber Server wie Winstone (die Hudson CI verwenden) sind recht leicht und können in die Anwendung eingebettet werden.

Wenn Sie ein Spring-Backend verwenden, benötigen Sie keinen Anwendungsserver. Sollten Sie jedoch in Zukunft einen Anwendungsserver benötigen, kann Spring dies auch nahtlos unterstützen.

0

Ein Anwendungsserver wird wahrscheinlich die einfachste Lösung sein. Sie könnten in Erwägung ziehen, auf der Serverseite eine REST-konforme API zu erstellen, was mit Spring auf einem Anwendungsserver geschehen kann. Dann können Sie eine einfache HTTP-Client-Bibliothek auf der Client-Seite verwenden.