分层架构中的服务层-简介

引言

  服务层不直接执行任何任务。它所做的就是合理的安排一些列你提供的业务对象。服务层很清楚业务逻辑层,也很清楚领域模型。例如:你使用数据库表模型模式的业务逻辑层,服务层会通过DataSet来进行交互。

  很显然,服务层合理的安排业务组件,同时也合理的安排应用的服务、工作流和业务逻辑的其他组件。

  服务层的职责

  服务层是一个额外的层,是在两个层之间设置一个边界。

  服务层的目的是什么?

  在业界有很多的应用原则都很重要,在设计软件的时候要注意:分离关注、低耦合、高内聚。当我们讨论在修改一个已有对象的时候,如何才能使得它暴露低耦合,首先想到的是增加更多的抽象。在下图中我们看到了类Action依赖于具体类Strategy,因为Action的一个方法中引用了Strategy类。

  

  如何降低依赖呢?而且还有一条原则:针对接口编程,不要针对实现编程。在设计的时候,应该在Action类中隐藏Strategy类。为Strategy类定义一个接口,然后定义一个工厂类来创建具体的Strategy实例,这样Strategy的修改不再影响Action类,降低了Action类对Strategy类的依赖。

  除了高级别抽象的工厂模式,服务层还有很多模式。服务层位于一对接口层之间,保持他们的低耦合和相对的独立,但是可以很好的和他们进行通信。大多数时候,我们看到的服务层都是在表现层和业务逻辑层之间定义一个边界。这是常见的解决方案。

  

  合理的安排系统行为

  正如你在上图中看到的,服务层想表现层屏蔽了业务逻辑层的实现细节。但是,他不仅做了这些工作。上图是正确的,但不是全部。

  在他的核心中,每一次用户驱动的交互都有两个参与者:表现层实现的用户接口,服务层实现的响应用户行为的模块。这也证明了服务层不仅仅是合理的安排业务逻辑,而且它也和表现层打交道。

  任何来源于表现层的交互,在服务层都会找到一个响应。基于收到的输入数据,服务层控制业务组件,包括:服务、工作流、和领域模型,当然了访问数据库访问层也是必须的。

  是否服务层只是直接进行数据库操作呢?不是十分准确,业务逻辑会包括工作流和业务服务。业务逻辑应该独立于任何数据库细节。

  服务层是表现层和其它层之间的边界,它获取和返回数据传输对象,然后将数据传输对象转换为合适的领域模型类的实例。每一个通过服务层暴露的方法都整合了其他服务、工作流和通过ORM进行了数据库操作。

  什么是服务?

  抛开相关的技术,服务一词简单的代表一层发送给另外一层的软件请求。服务层,就是一系列服务的集合,在两个相互通信的层中间的一个层。

  什么是面向服务?

  面向服务是一种将业务处理看做是一系列相互连接的服务的设计方式。面向服务不是技术本身,只是一个完成描述业务如何操作的不同的方式。

  服务 vs. 类

  在应用的设计中,面向服务允许你使用固定接口的独立组件。这些组件随时可以替换,只要保持接口的协议不发生变化,都不会影响系统。

  使用服务层的好处

  服务层在用户接口和其它层之间提供了唯一的协议,使得你可以专注于应用逻辑。应用逻辑是业务逻辑的一部分,直接产生于用例。

  在服务端,被执行的服务层方法,合理的安排了需要的逻辑,通过协调领域模型、特殊的应用服务、工作流。

  没有服务层,表现层就会直接调用业务逻辑层。完成一个任务,就可能需要进行多次的远程调用。对于性能来说,这不是一件好事。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot框架的分层架构图可以大致分为以下几:View、Controller、Service、Mapper(又叫Dao)、Model。 View通常处理用户界面的展示和用户交互,负责渲染页面、显示数据等。它与用户直接交互,并将用户的请求传递给Controller进行处理。 Controller是应用程序的控制器,负责接收用户请求、处理请求参数、调用相应的Service方法,并根据业务逻辑进行处理。它作为连接View和Service的桥梁,负责决定返回给用户的数据和视图。 Service是应用程序的服务,负责实现业务逻辑和数据处理。它封装了具体的业务逻辑,通过调用Mapper(或Dao)提供的方法来访问数据库或其他外部资源。Service的方法可以被Controller调用,也可以被其他Service方法调用。 Mapper(或Dao)是数据访问,负责与数据库进行交互。它提供了一系列的接口和方法,用于对数据库进行增删改查操作。Mapper通常使用ORM(对象关系映射)框架将数据库表映射为Java对象,方便进行数据库操作。 Model是应用程序的领域模型,负责定义数据实体和业务逻辑。它包含了与业务相关的实体类、数据校验规则等。Model的对象被Service和Mapper使用,用于业务处理和数据存取。 这些次之间通过不同的方式进行交互和协作,形成了Spring Boot框架的分层架构图。通过清晰的分层架构,可以使应用程序的开发更加模块化、易于维护,并提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java的级说明(参考)](https://blog.csdn.net/qq_40971126/article/details/122103128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring Boot框架各作用及关系简介](https://blog.csdn.net/gow_lin/article/details/121869118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值