建筑关注

时间:2009-10-27 18:25:55

标签: java architecture separation-of-concerns

我的域类和持久性逻辑(Hibernate)在一个名为model的项目中。这个jar包含在我的所有应用程序中 打包的com.company.model& com.company.persistance

另一个Utils.jar - 包含DateTime,String,Thread等一般助手类。这也包含在我的所有应用程序中 打包的com.company.utils

我有一个CXF / Spring应用程序,它公开了用于操作我的数据的服务。 CRUD功能,所有其他常用功能。对于任何设计的应用,这都是我的数据库的“方式” 打包的com.company.services并在Glassfish应用服务器上运行

我有其他应用程序使用Web服务(Spring注入)来操纵我的数据。包括将使用YUI小部件的Web应用程序和来自Web服务的XML / JSON,以获得流畅的UI。

我明白这不是一个问题!我想我正在寻找确认这是其他人如何设计他们的软件。如果我的架构具有良好的逻辑意义!显然存在安全问题 - 我希望一些应用程序只允许访问服务x。我稍后会解决这些问题。

3 个答案:

答案 0 :(得分:2)

听起来不错。

这还取决于您正在开发的应用程序类型及其具体要求(必须每周部署,必须部署在多个位置等)

但到目前为止听起来还不错。

看起来您可以在将来针对某些特定情况制定问题。

由于这不是一个问题,我的答案并不是真的。 CW

答案 1 :(得分:0)

我唯一的评论是将持久性和Hibernate类放入一个单独的模块中;以便model模块可以是纯bean / POJO /您的域类。

以下是我在

之前组织了一些多模块项目的方法
  • project-data - 包含域类和DAO(仅限接口)
  • project-services - “业务逻辑”层服务,使用DAO接口。
    • 取决于project-data
  • project-hibernate - DAO接口的Hibernate实现。
    • 取决于project-data

可以想象,如果我使用其他类型的数据访问方法,我只会为此创建一个单独的模块。然后,客户端应用程序可以选择要依赖的模块。

答案 2 :(得分:0)

我建议的唯一建议是,当您创建服务/模型时,按子包名称对它们进行分组。即

com.company.model.core com.company.service.core

com.company.model.billing com.company.service.billing

另外,请注意确保服务中没有控制器代码(操作UI)。