j2ee多层软件体系结构_多层体系结构(4)–基础结构层

j2ee多层软件体系结构

介绍

什么是基础架构 ? 如果我们在建筑物上考虑, 基础设施就是带来光与水的要素。 您可以建造一栋很棒的房子,但是如果您不将其连接到城市基础设施,您将永远无法住在其中。 最后,该建筑物能够接收水和光,但未与任何特定的水或光分配器链接。 我可以与能源公司A签订合同,并在需要时更改为能源公司B。

如果我们回到软件工程,则软件基础架构就是为我们的系统提供能量的数据库技术,网络协议或文件系统实现 。 它是软件体系结构的一部分,但是对于构建而言,应该采用与供应商无关的原则 ,这意味着将软件体系结构与任何特定的基础结构实现分离开,以便能够轻松地从一种技术切换到另一种技术。

持久层

基础结构层最重要的部分之一是持久层持久性是指能够独立于软件生存的任何对象。 通常, 数据库是某些数据集的持久性表示。 如域层中所述,域对象通常需要保留。 但是持久性并不直接属于业务文档! 您从来没有与业务专家谈论数据库表,而是谈论对象。 因此,将两个问题分开是非常重要的:

  1. 业务对象的定义是域层的一部分
  2. 业务对象到持久性模型的映射是持久性层(基础结构层)的一部分

可能的实现

以我的经验,我学习了一种实现持久层的方法 。 作为基本思想,仅通过接口公开业务对象 。 这些业务对象的纯实现不会公开,只能通过工厂使用,也可以通过接口公开,并通过LookupServiceLoader收集。 最后,要使用ORM将持久层定义为HibernateEclipseLinkXML映射是首选。

我知道你们中的大多数人都会抱怨使用XML而不是Annotations ,但是对于已被前缀用来将业务对象与其持久性基础结构技术区分开的范围而言,注释的介入性太大。 批注将持久性元数据放入域对象中,但是如果那些对象需要由另一个应用程序以完全不同的方式进行持久化,又该如何使用呢? 将这两个问题分开的原则促进了域层的可重用性。

多种基础设施

Hibernate可能只是我们要提供给业务对象的可能的持久表示形式之一。 如果我们还希望能够将它们编组为XML怎么办? 因此,我们可以考虑实现几个基础结构实现,并在运行时动态选择或在集成时静态选择所有这些实现。 范围是, 无论我们使用哪种实施方式,系统都必须以确切的方式继续工作 。 它只是接收数据源,如果该源是XML存储库,数据库或文件系统,则从应用程序的角度来看,什么都没有改变。

因此,多层架构的一种完美实现是对基础架构的更改不会对其他层产生任何影响的实现。

结论

基础架构层为系统提供能量,这意味着没有该系统,您将无法运行软件。 因此,即使将其设计为最后一个阶段,也可以很快实现。 当域层将被完全实现时,也有可能实现一些虚假的基础设施技术并推迟最终实现; 这样可以避免每次需要更改业务对象时就不断更改基础结构实现的风险。

参考: 多层体系结构(4)–来自我们的JCG合作伙伴 Marco Di Stefano在“ 重构思想”博客中的基础结构层

翻译自: https://www.javacodegeeks.com/2013/06/multilayered-architecture-4-the-infrastructure-layer.html

j2ee多层软件体系结构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值