什么是业务逻辑?

广告位招租
扫码页面底部二维码联系

我写《前端数据治理之道》围绕一个中心词汇本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net:业务。但我在一些文章的评论中收到“业务原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。交给后端去处理,前端做展示就好了”类似如【作者:唐霜】原创内容,盗版必究。此的思想。这类思想我个人的理解,更多是站【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】在后端开发者的角度看问题,因此,我打算写未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。一篇文章,专门讨论什么是业务逻辑。

【转载请注明来源】原创内容,盗版必究。原创内容,盗版必究。

很明显,在部分场景下,前端是不可能只做展本文作者:唐霜,转载请注明出处。【本文受版权保护】示的,随着B端、G端产品的强势,这种“前【未经授权禁止转载】【作者:唐霜】端只做展示”的应用架构已经不符合需求了。【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】我观察到,业务在开发层面有两种存在形式:【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。数据的业务,人机交互的业务。站在后端开发【原创内容,转载请注明出处】【作者:唐霜】的角度,只看到第一种,但在实际开发中,前未经授权,禁止复制转载。未经授权,禁止复制转载。端开发需要兼顾两种业务,而且,很大程度上未经授权,禁止复制转载。【未经授权禁止转载】后一种需要以前一种为基础。

【关注微信公众号:wwwtangshua本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】ngnet】【版权所有】唐霜 www.tangshu【未经授权禁止转载】【版权所有,侵权必究】ang.net

数据的业务由持久化数据和逻辑代码构成,基本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net于这两个基础,可能还需要搭配各种系统来实本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】现,例如需要消息通知系统来在每一个业务节本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】点上推送催办消息给特定用户,例如需要利用【转载请注明来源】本文作者:唐霜,转载请注明出处。定时任务系统来拉取第三方数据,例如需要队【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】列服务来解决长串任务堆叠。总之,我们传统【转载请注明来源】未经授权,禁止复制转载。的后端系统基本上只关注这一层面的业务。

转载请注明出处:www.tangshua【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.netng.net【未经授权禁止转载】【访问 www.tangshuang.n转载请注明出处:www.tangshuang.net原创内容,盗版必究。et 获取更多精彩内容】

在前端,基于数据的业务也同样存在,举个例转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net子,我们做了一套数据视图系统,对于用户而【本文首发于唐霜的博客】【作者:唐霜】言,他们可以通过挑选几个字段的所有数据进未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。行统计,并为了研究不同因子变化带来的结果【作者:唐霜】【原创不易,请尊重版权】变化,直接修改某些值来进行计算结果。很显转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。然,这里用户进行的这些操作不会对线上数据【原创不易,请尊重版权】【原创内容,转载请注明出处】库产生任何影响,因此也就不需要向后端提交转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。数据。这些数据被存在客户端内存中,一旦用【版权所有,侵权必究】原创内容,盗版必究。户离开这个界面,这些临时数据就可以销毁。【转载请注明来源】未经授权,禁止复制转载。如果按传统做法,前端必须将一大堆数据po【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。st到后端接口,由接口返回计算结果,然后本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】再由前端来渲染。但是很明显,相同的计算在未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。前后端执行得到的结果是一样的,而传统方式著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】还要付出网络交互和前后端耦合的代价,而这【作者:唐霜】【版权所有】唐霜 www.tangshuang.net类计算仅仅当前这个用户用到一次,不需要持【版权所有,侵权必究】【作者:唐霜】久化,交给后端处理,还要让后端考虑性能、本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】并发等风险。可见,这一业务虽然是数据业务未经授权,禁止复制转载。【未经授权禁止转载】,却可以在前端完成。

【访问 www.tangshuang.n【本文受版权保护】本文版权归作者所有,未经授权不得转载。et 获取更多精彩内容】【访问 www.tangshuang.n转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.netet 获取更多精彩内容】本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshu本文作者:唐霜,转载请注明出处。原创内容,盗版必究。ang.net

交互的业务是本专栏要关注的重点。人机交互【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。大发展是当代计算机系统发展的重要一面,如【原创不易,请尊重版权】【转载请注明来源】果只重视数据业务而不关注人机交互,那么丑【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】陋的命令行模式就可以完成大部分计算任务。本文版权归作者所有,未经授权不得转载。【转载请注明来源】但是如所有人所见,如今的业务系统需要用户本文作者:唐霜,转载请注明出处。【作者:唐霜】在一个界面,结合界面上呈现的多维信息,完原创内容,盗版必究。【原创内容,转载请注明出处】成不止一个操作。而且为了提升用户体验,产【原创内容,转载请注明出处】【未经授权禁止转载】品设计人员想尽一切办法,让用户明晰每一个【原创内容,转载请注明出处】【版权所有,侵权必究】操作的作用,避免做了错误操作。现代应用的【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。交互复杂度,以及交互后面所蕴含的业务逻辑本文版权归作者所有,未经授权不得转载。【本文受版权保护】,有时,让人望而生畏。

【未经授权禁止转载】【本文首发于唐霜的博客】

业务的逻辑,表面上可以用一大堆if…el【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.netse来概括,但实际上除了判断之外,它还可著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】能涉及形式。

原创内容,盗版必究。转载请注明出处:www.tangshua本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。ng.net【原创内容,转载请注明出处】

很多人对“形式”这个词不敏感,但如果你研未经授权,禁止复制转载。原创内容,盗版必究。究过形而上学或符号学,就会不再那么轻松。本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.net 获取更多精彩内容】形式在交互中极为重要,我们用一个具体的场转载请注明出处:www.tangshuang.net【本文受版权保护】景来解释。

本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】【关注微信公众号:wwwtangshua原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】ngnet】本文作者:唐霜,转载请注明出处。

现在有一个表单,里面有一个输入框,该输入【本文受版权保护】【版权所有】唐霜 www.tangshuang.net框对应的字段,需要关联到系统中已有的某个【版权所有,侵权必究】【原创不易,请尊重版权】对象,但也有可能用户不选择关联,使用输入原创内容,盗版必究。【作者:唐霜】的值作为结果。而如何用户选择使用输入的值本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。作为结果,那么就有可能输入一个系统中已经著作权归作者所有,禁止商业用途转载。【本文首发于唐霜的博客】存在的对象,而该字段的规则是不允许系统中未经授权,禁止复制转载。未经授权,禁止复制转载。有重复值。在这个场景中,是暂时没有数据参【作者:唐霜】【版权所有,侵权必究】与的,也就是说,它的整个业务必须依靠前端【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。来实现。

【转载请注明来源】本文作者:唐霜,转载请注明出处。

除了单点的复杂交互业务之外,还有连续的流著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。程交互业务。以一个审批流为例,一个审批单本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。发起、审批A、审批B、结项,这个流程环节本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。必须走。暂不考虑流程分支流问题,后端自有【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。后端的方式交互这一审批流管理起来,现在我本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net要问的是,前端做了什么来合理管理流程业务【转载请注明来源】【原创内容,转载请注明出处】?是只展示后端输出的内容,还是自己构建了转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】一套流程模型?

【未经授权禁止转载】本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】

现在我们再来看看什么是业务逻辑。

本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】

实际上,我们口口声声的业务逻辑,是只用代【未经授权禁止转载】【未经授权禁止转载】码实现的真实业务的规则映射。注意“规则”【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。这个词,简单说,一个业务中,存在什么逻辑【本文受版权保护】【关注微信公众号:wwwtangshuangnet】,可以通过在纸上画出不同业务对象之间的联未经授权,禁止复制转载。【版权所有,侵权必究】系和约束,并将这些联系和约束一条条列出来【本文受版权保护】原创内容,盗版必究。,形成一个列表,而这列表中的每一条,就是原创内容,盗版必究。转载请注明出处:www.tangshuang.net一条规则,这些规则的总和,就是这个业务的【版权所有】唐霜 www.tangshuang.net【转载请注明来源】业务逻辑,而且是全部业务逻辑,你不能再多著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。列出一条了。

【版权所有,侵权必究】【原创不易,请尊重版权】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。

既然是一条条的规则,那么我们就可以在代码原创内容,盗版必究。【本文首发于唐霜的博客】层面对规则进行管理。对于前端开发者来说,著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】最熟悉的规则管理,莫过于路由管理。现在,未经授权,禁止复制转载。【本文首发于唐霜的博客】我们做一个思想实验,将每一个route对【未经授权禁止转载】未经授权,禁止复制转载。应一条业务规则,每一个url对应某一时刻原创内容,盗版必究。【版权所有,侵权必究】后端接口输出的业务数据,随着后端接口业务著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。数据的变化,不同的业务规则会被使用,而没【作者:唐霜】本文作者:唐霜,转载请注明出处。有匹配到的规则会被屏蔽,从而,在界面上呈本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。现出根据业务逻辑而提供对应的人机交互的效【作者:唐霜】转载请注明出处:www.tangshuang.net果。

【版权所有】唐霜 www.tangshu【转载请注明来源】原创内容,盗版必究。ang.net本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。

由于规则是有限的,我们可以借鉴有限状态机【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】的开发范式来实现对业务逻辑的开发。有限状原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net态机,很好的为我们提供了在不同规则之间转【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。换的一种思路。当业务从一个状态切换到另一转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net个状态时,可以很清晰的获取当前状态,以及【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】下一步我可以做什么。业务切换也是这样,我【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】们明确当前可以做什么,也知道下一步可以做【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net什么,到具体要做什么,要看用户做了什么操未经授权,禁止复制转载。【版权所有,侵权必究】作。

原创内容,盗版必究。【版权所有】唐霜 www.tangshu【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。ang.net著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshua【访问 www.tangshuang.net 获取更多精彩内容】【转载请注明来源】ngnet】

但和有限状态机不同,业务流转并不是状态切【本文受版权保护】【未经授权禁止转载】换,每一次流转,都可能牵涉一堆东西,例如【原创不易,请尊重版权】【转载请注明来源】从一个阶段进入下一个阶段,参与业务的业务【本文受版权保护】【版权所有】唐霜 www.tangshuang.net对象变了,我讲过,业务流程是实体的进出和【原创不易,请尊重版权】【版权所有,侵权必究】状态变化的总和,所以单纯靠有限状态机是解【本文受版权保护】【本文受版权保护】决不了的,但我们可以借鉴状态机切换状态的未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】这个切换编程模式。

【作者:唐霜】【原创内容,转载请注明出处】未经授权,禁止复制转载。【未经授权禁止转载】

由于我并没有将所描述的这套东西实现成框架著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】或库,所以无法再具体到细节处。

【访问 www.tangshuang.n未经授权,禁止复制转载。【转载请注明来源】et 获取更多精彩内容】【关注微信公众号:wwwtangshua著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.netngnet】本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshu【原创不易,请尊重版权】转载请注明出处:www.tangshuang.netang.net

最后,前端处理业务逻辑不仅不是多余,而是本文作者:唐霜,转载请注明出处。【本文受版权保护】当下复杂应用的趋势和要求。目前而言,前端【原创不易,请尊重版权】【原创内容,转载请注明出处】领域还没有强大的针对这个领域的库或框架,【原创内容,转载请注明出处】【原创内容,转载请注明出处】因此,需要我们积极探索,重拾软件设计的技未经授权,禁止复制转载。【作者:唐霜】术体系,寻找更多可能性。

【作者:唐霜】本文版权归作者所有,未经授权不得转载。