有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    这是一个相当模糊的问题。有一个相当古老但可读性很强的article from JavaWorld提供了一个例子。在谷歌上搜索java multi tier architecture会发现很多其他文章。你甚至可以在另一组文章中加入tutorial这个词

  2. # 2 楼答案

    这是基本思想,实际上或多或少可以从第一原理中衍生出来,即帕纳斯的规则,即模块应该隐藏一个秘密:

    • “前端”层掌握着制作可视演示文稿的秘密

    • “中间层”掌握着管理系统行为的秘密

    • “后端”掌握着数据如何持久保存的秘密

    在基于Java的系统中,这意味着

    前端

    有一个web服务器,演示文稿由HTML、CSS和Javascript构成。有几种技术可以实现这一点,但最以Java为中心的技术是Java服务器页面,它可以从嵌入Java的脚本中有效地生成HTML。在更高级别上管理JSP的一种众所周知的方法是Struts

    有很多工具可以简化这个过程;也许最常见的是Spring。(Spring还提供了一些更适用于中间层的功能。)

    另一种选择是在客户机上运行Java应用程序前端,这在当今非常少见

    中层

    中间层用于以可用的形式为前端提供数据。在Java世界中,这通常是通过一个“应用服务器”来完成的,它向前端呈现“对象”。解决这个问题的真正核心解决方案是企业Java Beans(EJB),但事实证明,除了最大的系统之外,这对于任何系统来说都太复杂了;现在,它更多地是通过像Hibernate这样的持久层来完成的,它为中间层的其余部分提供Java数据访问对象。(要了解更多信息,您需要研究所谓的“对象和关系数据库的阻抗不匹配问题”。)

    后端

    三层系统中常见的后端是现成的数据库,尽管可以想象它可以是任何东西,从Hadoop和BigTable到使用Java序列化将状态存储为文本文件的东西。后端负责保持该状态,以便它继续存在并可以再次找到。Hibernate等工具的存在本质上是为了提供一个更清晰、更通用的数据库接口,但Java从第一个(几乎是第一个,Java 1.1)开始就有了JDBC接口,以使数据库可用

    n分层系统

    在大型系统中,这种细分可以进一步细分。例如,“前端”可以被视为两层:浏览器中的表示层和服务器中的表示支持层。在这种情况下,服务器端可能会管理会话和身份验证。类似地,您可以将中间层和后端之间的接口视为一个层本身,一个“阻抗匹配层”。现在,Hibernate有了自己的层

    另一方面,对于系统来说,具有生成HTML的表示层或实现为直接与数据库后端对话的Java客户端应用程序的情况并不少见,在这种情况下,您有一个“两层系统”

    Java不是原因

    最后要注意的是,Java并不是拥有2、3或5的理由或基础(浏览器本身是不是一个层次?)分层。相反,这是一个架构决策,因为您希望将可能发生变化的部分连接到同一组件中。在现实生活中,业务相当稳定;一旦你收敛于一个领域模型,它不会有太大的变化。当表示发生变化时,域模型通常不会如此分离,以致于无法划分为表示层。另一方面,您可以选择不同的数据库实现,而无需更改业务模型(domain moel)演示文稿,从而使其成为一个单独的层。这将导致一个更健壮的系统,因为一个更改并不意味着整个系统的代码都会中断

    这种期望的健壮性是多层系统的原因

  3. # 3 楼答案

    我知道这是一个老问题,但我认为展示JAVA现在的发展方向会很有帮助,微服务正在改变单一的N层结构。 enter image description here