这个架构定义好吗?多层(Spring / Multi DB)

时间:2011-01-12 03:17:17

标签: java spring architecture spring-mvc domain-driven-design

这是背景,也许有些条款不正确,因为我不是这方面的专家:

  几年前我申请了   以下架构,以便   获得代码重用和种类   关注点分离:

     
      
  • 表示层:将ASP.NET与C#结合使用。网页逻辑是   在这里编程,但业务   逻辑在单独的层中定义
  •   
  • 模型定义图层:对网站的所有业务实体进行分组   系统(即文档,用户,文件夹)。   没有动作(旁边的方法   在...上定义的getter和setter)   宾语。它只是一个记录   来自表格(或表格的连接)   数据库
  •   
  • 业务逻辑层:此处的条款名为“Engines”,它们   拥有所有业务规则   每个业务实体的交互   (即DocumentEngine拥有全部   代表业务的方法   处理文件的规则   系统,如添加,删除,   更新等)。这些方法使用(如   在许多情况下返回业务实体(在模型定义上定义),在其他情况下只返回使用/返回原语。
  •   
  • 数据访问层:此图层检索数据(使用数据   访问服务)来自数据库和   转换为业务实体(创建在MDL中定义的对象的实例,并使用从DB检索的相应字段值设置其属性值)。   与业务逻辑层一样,它使用   并返回业务实体或原语   以前提到的单身   对象或对象的集合   (使用泛型)
  •   
  • 数据访问服务:使用简单工厂模式创建   根据数据库连接   指定的参数,所以它可以   从多个检索信息   数据库引擎。
  •   
     

那么,当我需要时,例如文档列表,我打开网页,使用适当的参数调用业务规则(即本案例的文件夹ID)。然后,数据访问层使用DAS查询数据库并将检索到的记录转换为业务实体(在MDL中定义)。此业务实体(或实体集合)通过层返回到表示层。

现在,也许这不是最好的架构,但它对我来说非常好用,所以现在我尝试使用相同的方法,但使用Java和Spring MVC作为表示层,所以我会< / p>

  • 演示文稿(Spring MVC)
  • 模型定义层
  • 业务逻辑层
  • 数据访问层
  • 数据访问服务(使用JDBC的数据库工厂)

业务要求是“创建一个企业轻量级Web应用程序,可以轻松扩展,连接到多个数据库(Oracle,SQL Server,mySQL),只需极少的代码更改,I18N支持,记录用户活动的能力,具有多个演示文稿模式(Web,Mobile),看起来非常不错,就像Web2.0应用程序XD“

你怎么看?这是一个很好的架构定义吗?我是否应该更改某些内容以符合业务要求?

提前感谢您的合作

1 个答案:

答案 0 :(得分:0)

在70年代后期,在关系数据库开始获得牵引力之后,程序化编程就是要做的事情,这将是一个很好的架构,适合使用更新的Web表示层。

在八十年代早期,面向对象的引入表明,数据和行为的分离导致更多的耦合和更少的凝聚力。分离模型定义和业务逻辑是一个坏主意。它往往来自关系数据库驱动的体系结构,它往往没有管理行为的地方。

由于RDBMS占主导地位,这些架构出现了很多。这并不能使他们变得更好。出现的主要问题是:

  • 在多个层次中重复相同的问题;
  • 通过将验证功能与其运行的数据分开来
  • 错误的数据质量;
  • 由于连接性能不佳,
  • 规范化不足。

这些问题限制了此体系结构的可伸缩性。域驱动设计在这些方面表现更好。

此外,您的架构并未充分解决移动演示的后果。移动设备不仅仅是一个较小的屏幕,它还涉及触摸界面和有限的连接(长时间延迟,带宽和缓存很少,处理无连接)。