【问题标题】:Where to start? Java application with multiple front ends从哪儿开始?具有多个前端的 Java 应用程序
【发布时间】:2010-10-10 08:57:09
【问题描述】:

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

该应用程序非常简单,我非常了解它解决的问题。它可以使用更新,我什至无法再访问在 GUI 上工作所需的工具。我最近开始接触 Java,似乎重写这个应用程序将是一个很好的开始项目。

那么我的问题是:

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

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

编辑:我从概念上知道这个可以是如何工作的。我要问的是专门与 Java 技术相关的建议。考虑哪些框架等。

【问题讨论】:

    标签: java


    【解决方案1】:

    构建一个包含业务逻辑的核心。使用 JDepend 或类似工具确保它不会在任何地方引用任何 swing 或任何 web/jsp/servlet。

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

    对于 Swing 框架,您有两个选择:通过 web 服务访问业务逻辑(您可以使用 RMI 或其他什么,但我不会),即逻辑位于为 webapp 提供服务的同一网络服务器上(我可能更喜欢那)。另一种方法是使用 Swing GUI 发布 weblogic。使编码和调试更容易,但是现在您有多个点可以访问数据库,这在您想使用缓存时会引起头痛

    在任何情况下,您都应该只复制 gui 的东西,一次在 html/css/javascript 中,一次在 swing 中。

    恭喜你完成了这个项目,它将教会你大量关于设计和软件架构的知识

    【讨论】:

      【解决方案2】:

      使用中间层服务器。


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

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


      Web Client 编写一次,任何 MVC 框架都可以使用 stripe、struts 甚至 grails,如果你勇敢地提醒它保持精简的话......


      Swing 客户端使用 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/


      使用你喜欢的任何方式写入一次数据库。好像已经有了这个....

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2017-03-27
            • 2012-03-08
            • 1970-01-01
            • 2012-04-12
            • 2012-11-23
            • 1970-01-01
            • 2011-05-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多