Ajax Java Web应用程序体系结构讨论

Ajax Java Web应用程序体系结构讨论,ajax,jakarta-ee,servlets,web-applications,architecture,Ajax,Jakarta Ee,Servlets,Web Applications,Architecture,我有Java背景,几年来一直从事web开发工作。因为我没有从零开始学习web开发,所以我的技能有所提高,但没有那么干净和可靠。我所说的JavaWeb应用程序大约有8年的历史,由不是web开发专家的开发人员创建。结果:他们/我们做了很多你永远不应该做的事情。因为我们想在未来几年内更新我们的应用程序,所以我想尝试找到一个干净的策略/体系结构 我们的系统是这样工作的:服务器(而不是Webserver)存储了许多具有完全不同结构的不同对象,并基于数据仓库系统进行了大量数据分析。客户机通过套接字连接到服务

我有Java背景,几年来一直从事web开发工作。因为我没有从零开始学习web开发,所以我的技能有所提高,但没有那么干净和可靠。我所说的JavaWeb应用程序大约有8年的历史,由不是web开发专家的开发人员创建。结果:他们/我们做了很多你永远不应该做的事情。因为我们想在未来几年内更新我们的应用程序,所以我想尝试找到一个干净的策略/体系结构

我们的系统是这样工作的:服务器(而不是Webserver)存储了许多具有完全不同结构的不同对象,并基于数据仓库系统进行了大量数据分析。客户机通过套接字连接到服务器。一个客户机是J2EEWeb客户机。我们有servlet、操作、JSP、bean。。。我们必须在将被移动到服务器的客户机中添加许多业务逻辑。我们的软件是高度可配置的,并且发展得相当大。因为视图可以被计算出的数据显著地改变,它的状态等等,我们的JSP非常复杂,有太多的Scriptlet,这是不好的

我的想法是:

  • 每个控制操作/业务逻辑都将移动到服务器
  • 服务器用元数据发回数据,这样客户端就可以快速管理视图,而不用自己进行验证之类的工作。(例如元标记“无效”)

  • servlet和服务器之间的客户机在Freemarker或Mustache.java等模板引擎的帮助下创建HTML代码
  • 此HTML代码将响应为替换、填充或添加DOM节点
  • 我们将使用Ajax请求
你认为这种方法怎么样?有关于弱点或缺陷的提示吗?使用webservice而不是servlet有意义吗

因此,现在我不是在寻找一个框架(但是如果有一个你必须提到的框架,请不要犹豫),而是我希望在未来使用的通用架构

提前感谢您的建议和提示


看来我对我们目前结构的描述有点混乱。第二次尝试: 我们的软件最初是一个非web应用程序。我们有一个服务器,它管理数据、计算。。。连接的客户端呈现视图并获取用户交互。大约8年前,我的公司决定为客户开发一个web应用程序。我们的客户机实例(与服务器保持连接)存储在会话中,可由servlet、JSP等访问。因此,Web服务器实际上是我们系统中客户机的一部分


我希望这能有所帮助。

根据您自己开发的TCP/IP服务器实际返回的内容和处理的麻烦程度,我可以采用四种方法。不知道所有细节就很难知道哪一个是最好的

选项1(不使用TCP/IP服务器,仅重新开发webapplication):

  • 将自主开发的TCP/IP服务器或多或少地看作是一个临时的数据库服务器,保持原样。也就是说,我根本不会碰它

  • 我将把应用程序逻辑留在webapplication中,但将其从JSP移到servlet中。基本上,重写webapplication部分,将视图(JSP)与逻辑(servlet)分开

  • 我将使用JSP作为HTML模板,并使用Ajax请求将它们填充到逻辑所在的servlet中。(或者,使用Servlet作为控制器,设置请求属性并转发到jsp,而用户在地址栏中看不到.jsp。)Servlet反过来将以与普通Servlet访问数据库服务器大致相同的方式访问自制TCP/IP服务器

  • 选项2(将系统统一为一个,将其重新设计为一个Web应用程序):

  • 将所有代码从自主开发的TCP/IP服务器移动到webapplication中的servlet,并去掉自主开发的TCP/IP服务器。拥有两台服务器没有意义。如果你要花时间重写这个烂摊子,就把它写成一个系统

  • 我将把应用程序逻辑留在webapplication中,但将其从JSP移到servlet中。基本上,重写webapplication部分,将视图(JSP)与逻辑(servlet)分开

  • 我将使用JSP作为HTML模板,并使用Ajax请求将它们填充到逻辑所在的servlet中。(或者,使用servlet作为控制器,设置请求属性并转发到jsp,而用户永远不会在地址栏中看到.jsp。)

  • 或者,选项3(将TCP/IP服务器替换为cronjobs,以填充数据库以驱动webapplication):

  • 将自制的TCP/IP服务器更改为在服务器后台持续运行的服务器(而不是必须由客户端调用的服务器)。它可能类似于用C#.net编写的Windows服务,或者一组使用cronjobs在Linux中调度的java控制台程序。它将填充某种类型的数据库以供Web应用程序使用

  • 使Web应用程序仅读取该数据库。它不再需要访问服务器了

  • 关于视图和逻辑的分离,等等

  • 选项4(用Web服务替换TCP/IP服务器):

  • 用一个或一组Web服务替换自主开发的TCP/IP服务器

  • 与选项1相同

  • 与选项1相同,只是现在您正在从servlet而不是老式的TCP/IP服务器访问Web服务


  • “servlet和服务器之间的客户端”?“我们的系统是这样工作的:服务器(不是Web服务器)…”?这个不是要求您在Web服务器和服务器之间拥有“客户端”的Web服务器的服务器是什么?你真的需要解释一下。我编辑了这篇文章,希望它不再那么混乱。哇。非常感谢您的详细回答。我们肯定会选择选项1,因为服务器太大,三个开发人员需要大约2年的时间才能重新安装