【问题标题】:Designing a N-tier Java EE web application having views, webservice and scheduler with spring使用 Spring 设计具有视图、Web 服务和调度程序的 N 层 Java EE Web 应用程序
【发布时间】:2023-03-21 00:52:01
【问题描述】:

我有一个使用 Spring 和 Hibernate 的启动 Web 应用程序,目前有 3 层。查看、服务和 DAO。域对象也是分开隔离的。

为此,我想添加 webservice 和调度程序。现在我应该在哪些层添加这些类?或者我应该为这些创建新的包? n 层 Web 应用程序的最佳实践是什么?

请分享您的想法和经验。

【问题讨论】:

    标签: java web-services jakarta-ee architecture n-tier-architecture


    【解决方案1】:

    到网络和调度程序包?

    这个问题没有“正确”的答案,而且除了显示的内容之外,对你的包布局没有任何想法,很难更具体。

    只要它在上下文中有意义,并且是一致的,无论如何它真的无关紧要。您可能会发现,在您识别并重构原始功能和新功能之间的功能后,您现有的结构会发生变化。

    【讨论】:

      【解决方案2】:

      一些想法:

      1. 包不是层。层(或层)是相关功能集合的逻辑抽象,包是编译单元的物理分组工具。用于实现逻辑层的所有类可能都驻留在同一个源包中,但这并不一定是这种情况。

      2. 似乎webservice 很适合service 包,或者可能是service 中称为web 的子包。

      3. 对于调度程序,它也可能属于 service 包中的某个位置(特别是如果其他组件旨在通过服务 API 与调度程序交互)。如果没有,那么下一个最合适的做法是为其提供名为 scheduler 的自己的包。

      至于最佳实践,只需做 1) 有效且 2) 有意义的事情。 “n 层 Web 应用程序”是一个如此广泛的话题,以至于实际上并没有任何具体的答案适用于所有可能的情况。

      【讨论】:

      • 感谢您的帮助。如果在服务包中添加一个webservice(会消耗其他服务),会不会不利于层的干净分离?
      • 并非如此,层分离更多地与代码内部耦合的方式有关,而不是与源文件恰好驻留在哪个包中有关。例如,如果您的代码只是松散耦合(或根本不耦合)到其他服务实现,那么您就保持了层的干净分离。但是,如果它紧密耦合/依赖于另一个服务的实现才能运行,那么您就没有清晰的层分离,并且只是将代码重新定位到不同的包不会改变那个。
      猜你喜欢
      • 1970-01-01
      • 2014-09-23
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多