2009-02-27 6 views
0

J'ai ici une application que j'ai écrite il y a de nombreuses années et qui consiste en un frontal lourd qui interroge directement un serveur de base de données. Cette application fonctionne sur environ 7 stations de travail dédiées. Il y a aussi une interface Web que j'ai créée pour partager les mêmes fonctionnalités et une administration basée sur le Web pour la gestion et la génération de rapports sur les données - elles viennent toutes directement sur la base de données.Par où commencer? Application Java avec plusieurs frontaux

L'application est assez simple et je comprends très bien le problème qu'elle résout très bien. Il pourrait utiliser une mise à jour, et je n'ai même plus accès aux outils nécessaires pour travailler sur l'interface graphique. Je viens d'entrer dans Java récemment, et il semble que la réécriture de cette application serait un bon projet pour commencer.

Ma question est donc la suivante:

L'application nécessite une interface graphique non-web, je suppose que dans Swing. Ceci est nécessaire pour des raisons très particulières. L'application nécessitera également une interface graphique Web avec les mêmes caractéristiques que le front de Swing qui sera probablement déployé en tant que portlet JSR-168 et un outil d'administration basé sur le Web (portlet également). Avec ma conception précédente, je me suis retrouvé avec beaucoup de code en double parce que chaque composant avait sa propre base de code, et j'ai bêtement utilisé des procédures stockées pour aider à s'assurer que les calculs critiques étaient au moins cohérents.

Où dois-je commencer? J'ai du mal à comprendre comment cela devrait fonctionner dans le monde Java. Je suppose que ce que je suis le plus dur avec est comment puis-je créer une application qui peut avoir un front-end Swing (ou autre) et un front-end Web avec aussi peu de duplication que possible?

Éditer: Je sais conceptuellement comment ce peut fonctionner. Ce que je demande, c'est un conseil spécifiquement lié aux technologies Java. Les frameworks à prendre en compte, etc.

Répondre

6

Créer un core contenant la logique métier. Utilisez JDepend ou un outil similaire pour vous assurer qu'il ne fait nulle part référence à quelque chose de swing ou quoi que ce soit web/jsp/servlet.

Créez les deux interfaces: Pour la version Web, choisissez un cadre Web de votre choix et appelez votre logique métier à partir de là. Pour le framework Swing, vous avez deux options: accéder au businesslogic via les webservices (vous pouvez utiliser RMI ou autre, mais je ne le ferais pas), c'est-à-dire que la logique est sur le même serveur web que la webapp (je serais probablement préfère que). L'alternative est d'expédier le weblogic avec une interface graphique swing. Rend le codage et le débogage plus facile, mais maintenant vous avez plusieurs points qui accèdent à la db qui provoque des maux de tête lorsque vous voulez utiliser la mise en cache

Dans tous les cas, vous devez seulement dupliquer les trucs de l'interface, une fois en html/css/javascript et une fois en balançoire.

Félicitations pour ce projet, il vous en apprendra beaucoup sur le design et l'architecture logicielle

1

Utilisez un serveur de niveau intermédiaire.


swing client -> middle-serveur avec ressort Remoting -> Base de données

Web Client -> Moyen-serveur avec ressort Remoting -> base de données


écriture client Web une fois tout framework MVC fonctionnera rayures, jambes de force, même si vous êtes Grails rememder courageux pour garder mince ....


Swing Client écrit une fois en utilisant miglayout, et liste de couleurs.

http://www.miglayout.com/

http://publicobject.com/glazedlists/glazedlists-1.8.0/

un coup d'oeil à cette annonce .....

Java Swing: Libraries, Tools, Layout Managers


Middle-server écrit une fois en utilisant jdbc parce que vous avez déjà la base de données.

http://www.springsource.org/


base de données

écrire à l'aide une fois que vous voulez. Il semble déjà avoir cela ....

+0

oui. Le but est d'arrêter la duplication de code et de réduire le bug .... –

1

Vous devriez avoir un projet avec toute la logique métier. Puis, 2 projets séparés, 1 pour l'accès Web et 1 pour l'application Swing. ces projets appelant l'API de logique métier. dans ces 2 projets, ont seulement le code de présentation

-2

Commencer évidemment avec une base de code unifiée. Vous pourriez également vouloir déterminer si vous avez réellement besoin de plusieurs interfaces.

Vous voulez vous assurer que votre code n'a pas de dépendances inutiles. Par exemple, faites en sorte que votre interface utilisateur soit aussi peu profonde que possible, plutôt que la boule habituelle de boue. Évitez les singletons, car ils causent l'enfer de la dépendance.

Il peut sembler très entreprenant d'avoir un niveau intermédiaire, mais cela ajoute aussi beaucoup de travail. Pour un petit groupe, c'est totalement inutile.

Questions connexes