`

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

阅读更多

  引言

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

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

  服务层的职责

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

  服务层的目的是什么?

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

  

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

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

  

 

  合理的安排系统行为

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

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

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

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

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

  什么是服务?

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

  什么是面向服务?

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

  服务 vs. 类

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

  使用服务层的好处

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

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

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

分享到:
评论

相关推荐

    分层架构中的服务层

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

    介绍了N层架构(N-Tier Architecture)

    在N层架构中,每一层都可以视为一个服务提供者,向其他层提供特定的服务。例如,数据访问层可以为业务逻辑层提供数据查询和存储服务。 - **分层开发的方法** 采用分层的方法进行软件开发可以带来诸多好处,比如...

    三层架构简介pdf格式

    分层架构的主要目的是实现**高内聚、低耦合**的原则,即每一层都专注于其特定的功能职责,并且尽可能减少层间的依赖关系。这样的设计有助于提高系统的整体性能和稳定性,并简化了软件的开发和维护过程。 #### 三、...

    三层架构详细介绍

    - **开发成本**:分层架构的设计和实现需要更多的前期规划和开发工作。 #### 与MVC的区别 **MVC(Model-View-Controller)**是一种常用的设计模式,主要用于Web应用的开发。它将应用程序分为模型(Model)、视图...

    软件架构文档Software-Architecture-Document

    - 概述:给出系统在实际开发中的组织结构和分层设计,包括界面层、业务逻辑层和数据访问层等。 - 层:详细说明各层的职责和它们之间的依赖关系,以实现解耦和模块化。 6. 数据视图(可选): - 可能包含数据库...

    软件架构风格简介

    1. **分层架构**:这是一种非常普遍的架构风格,将软件系统划分为一系列垂直堆叠的层次。每一层都依赖于其下一层提供的服务,同时为上一层提供服务。例如,在一个三层架构中,最底层是数据层(如数据库),中间层是...

    C#三层架构实例

    在软件开发领域,为了提高代码的可维护性、可扩展性和可复用性,通常采用分层架构的设计模式。其中,“C#三层架构”是一种非常典型的分层设计方法,它将应用程序划分为表现层(UI层)、业务逻辑层(BLL层)和数据访问层...

    基于CS的4层架构概述

    在软件开发领域,特别是针对复杂的企业级应用,采用分层架构设计能够极大地提高系统的灵活性、可维护性和可扩展性。ESFramework介绍中的四层架构包括:客户端(Client)、应用服务器(Application Server, AS)、功能...

    利用动软生成工厂模式三层架构

    三层架构是一种分层的设计思想,主要由用户界面层(表现层)、业务逻辑层(应用服务层)和数据访问层(数据存储层)组成。表现层负责与用户交互,处理用户的请求并展示结果;业务逻辑层处理业务规则和流程;数据...

    04-三层技术-IP业务命令参考-整本手册.pdf

    - **三层技术**通常指的是在网络架构中涉及路由功能的技术,它是OSI七层模型中的第三层(网络层)。三层技术能够实现不同子网间的通信,主要通过路由器或具备路由功能的设备实现。 #### 1.2 IP业务特性概述 - **IP...

    三层架构

    ### 三层架构详解 ...总的来说,三层架构通过明确的分层设计,提高了软件系统的可维护性和扩展性,但也增加了系统的复杂性和潜在的性能开销。在实际项目中,需要根据具体需求权衡是否采用三层架构。

    微服务-技术分层图.pptx

    微服务技术分层图可以分为 五个层次:展示层、服务层、数据层、持久化层和基础设施层。 展示层 展示层是用户与系统之间的交互界面,负责将业务逻辑呈现给用户。常见的展示层技术有Flutter、Uni-app、Vue、Vant等。...

    JavaEE环境下各类开发架构简介

    分层架构将应用划分为多个逻辑层,如表示层、业务逻辑层、数据访问层等。每个层都有明确的职责,降低了组件之间的耦合。JavaEE的EJB(Enterprise JavaBeans)组件模型就是基于这种架构。 5. Model-View-Presenter ...

    三层架构的代码

    #### 一、三层架构简介 三层架构是一种常见的软件设计模式,它将应用程序划分为三个逻辑层:表示层(UI层)、业务逻辑层(BLL层)和数据访问层(DAL层)。这种分层结构有助于实现模块化开发,提高系统的可维护性和...

    基于.NET的N层分布式系统架构设计

    ### 基于.NET的N层分布式系统架构设计 #### 软件架构概述 软件架构,也称为软件体系结构,是指软件系统的基本组织结构及其设计原则,它涉及软件组件、组件之间的相互作用以及组件与外部环境之间的交互。在软件工程...

    网络运维简介.docx

    3. **后端分层多层**:除了基础的三层架构,后端可能还有更多的分层,如服务层、中间件层等,以应对复杂的应用场景和高并发需求。 在互联网环境中,物理视图的分层也很重要,尤其是对于大型互联网软件和网站,它们...

    网络运维简介(20210919110536).pdf

    多层架构是在三层架构基础上的扩展,可能包含额外的服务层、接口层等,以适应更复杂的业务需求和分布式系统的部署。 4.2 前端分层模式 在前端开发中,有多种分层模式用于管理应用程序的结构: 4.2.1 MVC(Model-...

    Struts开发指南之J2EE n层结构.doc

    在J2EE架构中,这一层通常由JavaBeans、Session Beans等组件实现,它们提供了与具体业务相关的服务。Struts框架虽然不直接涉及业务逻辑的实现,但它为业务逻辑的调用和数据的流转提供了便利。 #### 4. 数据访问层...

Global site tag (gtag.js) - Google Analytics