三层系统如何在Java中运行?

时间:2011-05-31 03:33:28

标签: java applet system

三层系统如何在Java中运行?

有人可以用一些简单的例子向我解释这个吗?

3 个答案:

答案 0 :(得分:11)

这是基本思想,实际上可以从第一原则中或多或少地得出,即Parnas规则模块应该隐藏一个秘密:

  • “前端”层拥有制作可见演示文稿的秘密

  • “中间层”拥有管理系统行为的秘密

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

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

前端

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

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

现在非常罕见的另一个选择是拥有一个在客户端计算机上运行的Java应用程序前端。

中间层

中间层用于为前端提供可用形式的数据。在Java世界中,这通常通过“应用程序服务器”来完成,该“应用程序服务器”向前端呈现“对象”。真正的核心解决方案叫做Enterprise Java Beans(EJB),但对于除了最大的系统之外的任何一个都是如此。现在更经常使用像Hibernate这样的持久层,它为中间层的其余部分提供Java数据访问对象。 (要了解有关此内容的更多信息,您需要查看所谓的“对象和关系数据库的阻抗不匹配问题”。)

后端

3层系统中通常的后端是一个现成的数据库,虽然它可以想象是从Hadoop和BigTable到使用Java序列化将状态存储为文本文件的东西。后端负责保持该状态,以便它可以持续存在并且可以再次找到。像Hibernate这样的工具本质上存在,为数据库提供了更清晰,更通用的接口,但是Java从第一个接口{井,几乎是第一个,Java 1.1'开始,使数据库可用。

n 层系统

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

另一方面,系统具有基于HTML的表示层或实现为直接与数据库后端通信的Java客户端应用程序并不罕见,在这种情况下,您有一个“双层系统”。 / p>

Java不是

的原因

这里要注意的最后一点是,Java不是2,3或5(或更多 - 浏览器本身是层?)层的原因或基础。相反,它是一个架构决策,因为您希望将可能一起更改的部件绑定到相同的组件中。在现实生活中,业务相当稳定;一旦你融入了领域模型,它就没有太大变化。当演示文稿发生变化时,域模型通常不会 - 因此将其分离为表示层。另一方面,您可以选择不同的数据库实现,而无需更改业务模型(域moel)演示文稿 - 因此请将其设置为单独的层。这导致了一个更强大的系统,因为更改并不意味着整个系统中的代码中断。

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

答案 1 :(得分:1)

这是一个非常模糊的问题。有一个相当古老但可读性很强的article from JavaWorld,它提供了一个例子。谷歌搜索java multi tier architecture出现了很多其他文章。你甚至可以在单词tutorial中输入一组不同的文章。 :)

答案 2 :(得分:1)

我知道这是一个古老的问题,但是我认为这将有助于显示JAVA的发展趋势,微服务正在改变Monolithic N-Tier结构。 enter image description here