【问题标题】:Should there be a separate project per tier?每层应该有一个单独的项目吗?
【发布时间】:2010-10-05 11:10:41
【问题描述】:

在过去一年左右的时间里,我一直在编写一个 Web 应用程序,我觉得我的结构很糟糕,但我不确定它应该是什么样子。

应用程序模型物流因此目前有两个主要部分 - 地理和网络。

领域+业务层

我在 2 个独立的项目中分离了网络和地理,包含它们的域、持久性和业务逻辑。还有一个服务层将事务包装在对 DAO 的调用周围,以便以后可以被 Web 服务调用。

表示层

我有一个项目包含控制器、JSP、javascript、css 等。我不确定这是否是正确的做法。 javascript 使用 DWR 调用 Web 服务层。

网络服务层

我认为这是我真正出错的地方。 Web 服务有一个项目,其中包含来自网络和地理项目的服务层对象的实例。

为什么我认为我错了

我即将向应用程序添加另一个部分,该部分从遗留系统查询薪水并在 Web 前端显示数据。最初我打算继续使用与上述相同的方法:

  1. 实施域/dao/服务项目
  2. 将网络服务添加到网络服务项目以查询新的域项目
  3. 在表示层项目中创建视图。

我觉得它是应用程序的一个独立部分,应该更加松散耦合。我读过有关 SOA 的文章,这些原理听起来非常好,但我不知道如何到达那里。我的想法是为这个新部分创建一个包含所有层的单个项目,因此它是完全独立的。这是我一直应该做的吗?

任何建议将不胜感激。

【问题讨论】:

    标签: java web-services web-applications


    【解决方案1】:

    一种相当传统的 EAR 结构,它包含您的表示层(这将是您的 WAR,如果您愿意,它可以是一个单独的项目)和您的核心业务逻辑/DAO 层(您的单个 JAR)。

    Web 服务变得更加有趣,因为您确实提供了一个公共 API 供其他人访问。例如,您可能希望将 Web 服务层拆分到一个单独的项目中,这样您就可以发布 1.2 版的 Web 服务以与您的 1.1 版并驾齐驱,两者都与您的 1.1 核心兼容。

    总而言之,它实际上只取决于(不是双关语)您希望这些不同部分彼此之间具有什么依赖关系。如果您最终将它们分开,我可以推荐 Maven 或 ANT/Ivy 来帮助您构建它。

    【讨论】:

    • 是的。如果有实际需要,我只会拆分单独的项目,而不仅仅是将项目与自身隔离。我认为公开发布的 Web 服务 api 是这样做的正当理由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2011-12-24
    • 2019-11-17
    • 2010-12-10
    • 2016-01-14
    • 1970-01-01
    • 2020-02-09
    相关资源
    最近更新 更多