从哪儿开始?具有多个前端的Java应用程序

时间:2009-02-27 16:15:17

标签: java

我在这里有一个我多年前写过的应用程序,它包含一个直接查询数据库服务器的重量级前端。该应用程序在大约7个专用工作站上运行。还有一个基于网络的前端,我用它来共享相同的功能集,还有一个基于Web的管理,用于管理和报告数据 - 它们都只是直接访问数据库。

应用程序非常简单,我理解它解决的问题非常好。它可以使用更新,我甚至无法访问在GUI上工作所需的工具。我最近一直在使用Java,看起来重写这个应用程序将是一个很好的项目开始。

所以我的问题是:

我想在Swing中,应用程序需要一个非Web GUI。这是非常特殊的原因所必需的。该应用程序还需要一个基于Web的GUI,其功能与Swing前端相同,可能部署为JSR-168 portlet,以及基于Web的管理工具(也是portlet)。在我之前的设计中,我最终得到了大量重复的代码,因为每个组件都有自己的代码库,我愚蠢地使用存储过程来帮助确保关键计算至少是一致的。

我应该从哪里开始?我很难想到这应该如何在Java世界中发挥作用。我想我最困难的是如何创建一个可以同时具有Swing(或其他)前端和基于Web的前端的应用程序,尽可能少复制?

编辑:我从概念上知道 的工作原理。我要问的是专门针对Java技术的建议。要考虑哪些框架等。

4 个答案:

答案 0 :(得分:6)

构建包含业务逻辑的Core。使用JDepend或类似工具确保它无处引用任何swing或任何web / jsp / servlet。

构建两个UI:对于Web版本,选择您选择的Web框架并从那里调用您的业务逻辑。

对于Swing框架,您有两个选择:通过webservices访问businesslogic(您可以使用RMI或其他任何东西,但我不会),即逻辑位于服务于webapp的同一个Web服务器上(我可能更喜欢那)。另一种方法是使用swing GUI发布weblogic。使编码和调试更容易,但现在您有多个访问数据库的点,当您想要使用缓存时会导致令人头疼的问题

在任何情况下,你应该只复制gui的东西,一次是在html / css / javascript中,一次是在摇摆中。

祝贺该项目,它将教会您大量的设计和软件架构

答案 1 :(得分:1)

使用中间层服务器。


Swing客户端 - >具有spring-remoting的中间服务器 - >数据库

网络客户端 - >具有spring-remoting的中间服务器 - >数据库


Web客户端编写一旦任何MVC框架将使用条纹,struts,甚至grails,如果你勇敢地记住它,以保持它变薄....


Swing Client使用miglayout和glazelist编写一次。

<强> http://www.miglayout.com/

<强> http://publicobject.com/glazedlists/glazedlists-1.8.0/

看一下这个帖子.....

<强> Java Swing: Libraries, Tools, Layout Managers


中间服务器使用jdbc写一次因为你已经有了db ..

<强> http://www.springsource.org/


数据库使用您喜欢的任何内容编写一次。它似乎已经有了......

答案 2 :(得分:1)

您应该拥有一个包含所有业务逻辑的项目。

然后,2个分离的项目,1个用于Web访问,1个用于Swing应用程序。这些项目都调用了业务逻辑API。 在这两个项目中,只有演示代码

答案 3 :(得分:-2)

显然从统一的代码库开始。您可能还想考虑是否确实需要多个接口。

您希望确保您的代码没有不必要的依赖项。例如,让UI尽可能浅,而不是通常的泥球。避免单身,因为它们会导致依赖地狱。

拥有中间层可能看起来非常商业化,但它也增加了很多工作。对于一个小团体来说,这完全没有意义。