[架构设计] 什么是业务逻辑

讨论设计时,专业词汇满天飞,每个人的技术背景、工作经验上的不同都会导致在理解上存在着差异。无论是SEI的定义、OMG UML的定义、还有各路大神的定义,都有从不同视角带来的差异。准备后面关注这些定义的差异,摊开来大家一起来讨论。

关于’业务逻辑’, 国内国外争论了很多年了(这篇在07年就说没有清晰的定义),其中几个比较详细的讨论见附录(一定要看评论)。我总结主要分为两类: 一类是逻辑处理论,一类是数据操作论。

逻辑处理论

先看前者,这一类观点,核心是强调逻辑。细说业务逻辑中,作者将业务逻辑分别做了狭义和广义的定义,其中狭义定义如下:

业务逻辑就是对数据访问操作的简单的封装 (显然就是第二类观点)

而广义的定义如下:

   软件产品由界面/交互与业务逻辑两部分构成。业务逻辑是软件产品的核心,但不与使用者交互。

后面这个广义的定义好有力度,一刀从界面切开,一边界面,另一边就是业务逻辑。不过,这个也与国外一位大牛的定义呼应(What is Business Logic Anyway),大意为:

一个应用中最为珍贵的核心所在,并不依赖于某个特定应用而存在。

这里面已经是从领域驱动设计的角度来看。界面可以理解为应用的展示层,而业务逻辑是领域模型的核心,代表了应用解决领域问题所应用的流程、公共、算法、决策树、各类方法、查询等。

数据操作论

而数据操作论,特别强调操作数据,以Wiki为代表。先看一下Wiki的定义,略有点中间路线的味道,显然是站在企业应用的角度来定义:

依据现实的业务规则来操作数据。(原文:In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, displayed, stored, and changed.)

还种观点认为需要从”业务"的定义来理解业务逻辑。从需求出发,业务规则(Business Rules)是基本的业务需求,包括业务的管理、运算、以及处理数据等。实现时可以分为应用逻辑(application logic)和领域逻辑(domain logic), 这些都是业务逻辑。其中前者是处理一些非核心逻辑,比如ERP中订单号生成的规则了。后面则是核心的逻辑,比如物料清单转为请购单的处理。

另一个此观点的变形,尝试将业务逻辑与MVC/MVP中的Model关联起来。但实际上MVC/MVP这种本身用于展现(GUI或console)的设计方案在有关业务逻辑的讨论上显得太狭义了。对于一些大型应用而言,MVC/MVP可能仅仅处于其中的展现层。

最后还有一层次上的视角问题。从应用的整体来看,和从单独一个层次的角度来看,所谓的”业务"也是不同的。所以配合广义论,业务逻辑就会变成一个无所不包的概念。那么这个概念本身就变成了内部处理的代名词。业务逻辑这个概念本身起源于企业应用的架构设计,未必能适用于整个软件领域。所以,也有很多工程师从来不谈”业务逻辑”。

总结

曾经有人说过,任何普适的概念,和废话一样。从软件的细节到整体,有着无数不同的视角。顺畅的讨论还是要从确定共同的视角开始。下次再讨论时,如果觉察到关于业务逻辑的理解不同,还是先说清楚,你定义的业务和业务逻辑是什么?

参考:

细说业务逻辑 (uml.org.cn)

What is the heck is business logic anyway?

What’s the difference between application layer and business logic layer? (SO)

什么是业务逻辑 (度娘)

欢迎一起学习、讨论!

时间: 2024-10-17 10:30:56

[架构设计] 什么是业务逻辑的相关文章

架构设计-业务逻辑层简述

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 业务逻辑层是专门处理软件业务需求的一层,处于数据库之上,服务层之下,完成一些列对Domain Object的CRUD,作为一组微服务提供给服务层来组织在暴露给表现层,如库存检查,用法合法性检查,订单创建. 业务逻辑层包含领域对象模型,领域实体,业务规则,验证规则,业务流程.1:领域对象模型为系统结构描述,包含实体功能描述,实体之间的关系.领域模型处于天生的复杂性:2:领域实体:业务层是一些操

ENode框架Conference案例分析系列之 - 架构设计

Conference架构概述 先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的. Conference后台会议管理:http://www.enode.me/conference Conference前台预定座位:http://www.enode.me/registration ENode论坛开源案例:http://www.enode.me/post ENode开源项目地址:https://github.com/tangxuehua/e

JSP业务逻辑层

经典的三层架构:表示层.业务逻辑层和数据访问层 具体的区分方法 1:数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作.而不必管其他操作. 2:业务逻辑层:主要负责对数据层的操作.也就是说把一些数据层的操作进行组合. 3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问. 表示层 位于最外层(最上层),最接近用户.用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面. 业务逻辑层 业务逻辑层(Business L

细说业务逻辑(一)

内容提要 ===================前篇===================== 前言 内容提要 1.我把业务逻辑丢了!——找回丢失的业务逻辑 2.细说业务逻辑 2.1.业务逻辑到底是什么 2.2.业务逻辑的组成结构 2.2.1.领域实体(Domain Entity) 2.2.2.业务规则(Business Rules) 2.2.3.完整性约束(Validation) 2.2.4.业务流程及工作流(Business Processes and Workflows) 2.3.业务逻辑

架构设计三部曲之如何做架构设计

架构设计不是架构师的专属工作,对非技术人员甚至是开发人员来说,从实实在在的需求到高神莫测的架构设计仿佛是一个神秘的过程,只有具有架构师头衔的人才能掌握各中玄妙,这篇文章就是从最基本的事物关系来回答如何根据需求进行架构设计的问题. 根据我前面的文章,架构的本质是事物与事物之间恰当的关系,不同领域的架构,其事物的指代不同,比如对于组织架构而言,事物指的是人与机构:建筑架构,事物指的是钢筋混凝土与空间.那在软件领域,事物指的是什么呢?我们知道,软件系统的本质是人类将自身无法处理的大量业务相关的数据进行

架构设计的方法学

约公元前25年,古罗马建筑师维特鲁威说:"理想的建筑师应该既是文学家又是数字家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算."(好难哪,软件构架设计师的要求呢?大家好好想想吧.)   本文目录   一.与构架有关的几个基本概念:   二.构架设计应考虑的因素概揽:   三.程序的运行时结构方面的考虑:   四.源代码的组织结构方面的考虑:   五.写系统构架设计文档应考虑的问题   六.结语   一.与构架有关的几个基本概念:   1.模

微服务开发中的数据架构设计

本文来自作者 陈伟荣 在 GitChat 分享的文章[微服务开发中的数据架构设计] 前言 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合.业务的灵活调整组合以及系统的高可用性.为业务创新和业务持续提供了一个良好的基础平台.本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容. 微服务技术框架中的多层数据架构设计 数据架构设计中的要点 要点1:数据易用性 要点2:主.副数据及数据解耦 要点3:分库分表

java 业务逻辑理解

细说业务逻辑 2016年10月14日 07:16:28 阅读数:2295 细说业务逻辑   前言 记得几个月前,在一次北京博客园俱乐部的活动上,最后一个环节是话题自由讨论.就是提几个话题,然后大家各自加入感兴趣的话题小组,进行自由讨论.当时金色海洋同学提出了一个话题--"什么是业务逻辑".当时我和大家讨论ASP.NET MVC的相关话题去了,就没能加入"业务逻辑"组的讨论,比较遗憾. 其实,一段时间内,我脑子里对"业务逻辑"的概念也是非常模糊的.

36、生鲜电商平台-积分,优惠券,会员折扣,签到、预售、拼团、砍价、秒杀及抽奖等促销模块架构设计

说明:本标题列举了所有目前社会上常见的促销方案,目前贴出实际的业务运营手段以及架构设计,包括业务说明,仅供参考 促销体系 1.1促销体系 在电商和O2O领域,促销是运营人员的一个主要的让利行为,同时促销活动期间的购买量也较之普通商品更高,不同的阶段,对于促销的要求也是不同的. 促销实质上是一种沟通活动,即营销者(信息提供者或发送者)发出作为刺激消费的各种信息,把信息传递到一个或更多的目标对象(即信息接受者,如听众.观众.读者.消费者或用户等),以影响其态度和行为. 商城促销活动的流程概述(不含优