首页 > 其他分享 >课程笔记整理 面向服务的软件设计与开发方法

课程笔记整理 面向服务的软件设计与开发方法

时间:2023-03-03 12:55:27浏览次数:36  
标签:逻辑 服务 软件设计 业务 笔记 开发方法 划分 接口 应用服务

服务层次结构

编程思想发展史

面向对象 → 面向组件 → 面向服务

  • 抽象程度越来越高(粒度越来越大)
  • 耦合程度越来越松
  • 应用范围越来越大
    从程序应用到企业业务
  • 通信范围越来越大
    从本机扩展到网络
SO 与 OO 的对比
对比角度 SO OO
耦合程度 松耦合 紧耦合
预期范围 范围大,变化大 范围小,变化小
接口粒度 粗粒度接口 细粒度接口
状态 尽可能无状态
stateless
将数据与逻辑绑定到带状态的对象中
stateful

OO 支持组件化,但是允许类间继承
这样的好处是复用了一部分代码,坏处是代码之间耦合程度过高
在低抽象层次是好用的,高抽象层次就不好用了
个人感觉是因为高抽象本身已经屏蔽了足够多的差异,高抽象层次之间显现出的差异明显,通过类间继承实现复用带来耦合的副作用往往大于复用本身带来的好处

OO 基于预定类依赖关系,造成紧密耦合处理逻辑
按照个人理解,OO 的设计思想就是希望通过 对象 + 消息 的形式描述整套业务逻辑,从这个出发点就计划让处理逻辑本身要由对象来承担,而 SO 通过引入抽象层的方式将业务逻辑交由高层服务来承担,底层对象不再承担具体的业务逻辑,而是承担粒度更小的通用具体操作

SOA

按照个人理解,SOA 先指导我们将业务逻辑和应用逻辑(包含组件和遗存系统)分离,再通过引入服务来实现依赖倒转(楔形抽象)

服务层次结构应该怎么划分?

个人理解 SOA 的思路就是将业务逻辑和应用逻辑分离,再引入服务接口桥接,这种三层(如果应用逻辑再进一步划分成组件层和遗存系统则分为四层),这种大划分结构是不变的,所以最终问题是服务接口层应该怎么划分

层次结构

  • 业务过程层
  • 服务接口层
    • 服务编排层(可选)
    • 业务服务层
      • 以任务为中心的业务服务层(面向过程)
      • 以实体为中心的业务服务层(面向对象)
    • 应用服务层
      • 混合应用服务层(包含一部分业务逻辑)
      • 工具(utility)应用服务层
  • 应用层

具体问题具体分析,合适的划分方式才是最好的划分方式,下面给出引入服务抽象层要解决的问题,用于作为划分的考虑维度

  • 1W3H
    • What:待服务化的对象是什么?
    • How:面向业务逻辑的服务化何以最优?
    • How:面向遗存系统的服务化何以最优?
    • How:如何部署服务以促进敏捷性?(即快速部署何以实现?)
应用服务层

功能

  • 表达技术依赖的功能
  • 提供可复用的数据相关(上下文相关)的方法

三层架构中的正统 Service 层

组成

  • 公共服务:用于提供通用服务
  • 包装服务:用于集成,用作服务适配器

特点

  • 上下文相关
  • 资源可识读
  • 方案无关
  • 普适可复用
  • 实现应用服务间的点对点连接
  • 接口粒度不一致
  • 服务来源广
业务服务层

功能

仅涉及表示业务逻辑的服务

三层架构中的 Controller 层

划分

  • 以业务为中心
  • 以实体为中心

本质上对应两种不同的视角,个人认为可以理解为 面向过程 和 面向对象 在业务服务层的划分

服务编排层

功能

保证执行顺序,按照个人理解,服务编排层的一个 Entity 对应 一组 Task

编排服务层由一个或多个流程服务组成,这些流程服务根据流程定义中嵌入的业务规则和业务逻辑 组成(动词) 业务和应用程序服务

编排层将业务规则和服务执行序列从其他服务中抽象出来,提高了灵活性和可重用性
也就是说编排层承担了按规则排序的职责

引入抽象层的感受

之所以引入抽象层,是希望在不同的层次上有人专事专办,引入抽象层必然带来协调问题,但是好处是实现职责的分离
换句话说,引入抽象层之前先想明白自己希望将什么职责分离出来让新引入的抽象层来承担,否则没必要给自己找麻烦(结合个人 Python 实验一的经验教训)

服务不可知

个人对其定位:一种提高(保障)可复用的思维倾向

个人不是很喜欢服务不可知的说法,按照个人理解,更喜欢将其称为服务独立性,这种独立性服务于服务的复用需求,与越多的具体事项无关,就越易于复用,这种无关理解成不可知也未尝不可,服务不可知某种程度上也体现了服务自治(自己有意识地维持难得糊涂),但是相较于服务独立性的理解方式可能稍微拐了点弯

功能

与解决方案无关的服务层与多个业务流程和自动化解决方案相关联,并将其绑定在在一起

这些服务层促进重用,但也模糊了单个解决方案的架构边界(个人感觉是因为引入了绑定)

服务配置方案

本质上就是服务层次结构应该怎么划分的问题

  • 服务接口层只分为一层(其实就是没划分)
    • 混合应用服务层
  • 服务接口层划分为两层
    • 混合应用服务层
    • 工具(utility)应用服务层
  • 服务接口层划分为两层
    • 以任务为中心的业务服务层
    • 工具(utility)应用服务层
  • 服务接口层划分为三层
    • 以任务为中心的业务服务层
    • 以实体为中心的业务服务层
    • 工具应用服务层
  • 服务接口层划分为三层
    • 编排服务层
    • 混合应用服务层
    • 工具(utility)应用服务层
  • 服务接口层划分为三层
    • 编排服务层
    • 以任务为中心的业务服务层
    • 工具(utility)应用服务层
  • 服务接口层划分为四层
    • 编排服务层
    • 以任务为中心的业务服务层
    • 以实体为中心的业务服务层
    • 工具(utility)应用服务层

面向服务原则

基于 Web Service 的简化 SOA

服务消费者、服务注册中心、服务提供者三角架构

SOA 中的逻辑组件
  • Message = units of communication
  • Operation = units of work
  • Service = units of processing logic
  • Processes = units of automation logic
    自动化逻辑,但个人认为也可以理解为事件驱动
面向服务原则之间的关系

标签:逻辑,服务,软件设计,业务,笔记,开发方法,划分,接口,应用服务
From: https://www.cnblogs.com/ba11ooner/p/17175217.html

相关文章

  • 课程笔记整理 RESTful Web Service
    RESTfulWebService基本概念REST伪全称:RepresentationalStateTransferREST真实全称:ApplicationStatesTransferamongtheresource'srepresentation资源表示(名......
  • docker学习笔记1(在线安装及离线安装)
    Centos7安装docker引擎官方安装文档https://docs.docker.com/engine/install/centos/#install-using-the-repositoryDocker分两个大版本,一个是CE,一个是EE。CE为社区版,......
  • 笔记--并发、并行、异步与同步
    并发(Concurrency)是一个宽泛的概念,它单纯代表计算机能够同时执行多项任务。并发的实现有很多种形式,在单一处理器上,一般为进程的上下文切换(Contexswitching)。进程的......
  • 吴恩达学习笔记4()
    2023-03-0310:37:32星期五特征和多项式回归这里讲解一些可供选择的特征,已经得到不同的学习算法,当选择了合适的特征之后,这些算法往往是非常有效的;多项式回归--能够用......
  • 几种类型神经网络学习笔记
    跟随【导师不教?我来教!】同济计算机博士半小时就教会了我五大深度神经网络,CNN/RNN/GAN/transformer/LSTM一次学会,简直不要太强!_哔哩哔哩_bilibili了解的五大神经网络,整理笔......
  • 180204 Keras学习笔记(更新ing)
    ​常规操作​​​将整数标签label进行one-hot转换​​​​保存与加载模型权重​​​​加载mnist数据​​​​加载cifar-100数据​​​​Kerasasasimplifiedinterfaceto......
  • 2023 .3.2 笔记
    1)配置bash文件时出错,想要改正时报错终端输入:exportPATH=/bin:/usr/bin:$PATH2)linux配置环境变量操作失误出现:/usr/libexec/grepconf.sh:line5:grep:commandnotfou......
  • 软甲体系架构 - 可用性 读书笔记
    架构设计则为满足架构需求的质量属性寻找适当的战术。对如何实现特定的质量属性感兴趣。质量需求指定了软件的响应,以实现业务目标。我们感兴趣的是设计使用设计模式、架构......
  • 计网学习笔记二 Link Layer Service
    在上一周的计网学习了network和Internet的总论。在这一周开始的未来几讲将集中在链路层linklayer,并且会有相应的计网lab完成。在这一讲中,我们主要关注链路层提供的服务。......
  • 阅读笔记《大型网站技术架构核心原理与案例分析 》
    今天按照老师的要求阅读了《大型网站架构核心原理与案例分析》这本书,对此书所讲解的东西感触颇深。先谈一谈李智慧老师为什么写这本书。当时李老师想写这本书的起......