企业应用架构模式 之 领域逻辑模式

图书推荐-《企业应用架构模式》Martin Fowler真正的大神著作 运行机制:创建货币类保存金额和币种,避免使用浮点数,对判等和哈希操作重载,提供算术操作,算术操作与普通数字运算有区别,乘法和除法因舍入取整问题较复杂,可添加分配器函数,换算币种可使用转换器对象,比较操作应币种相关,可封装显示金额行为和提供输入机制,存到数据库通常用嵌入值。运行机制:可将会话状态存于客户端,客户每次请求和服务器每次响应都传递会话数据,使服务器可无状态,通常用数据传输对象传输数据,客户存储数据可选用不同方式,若使用HTML,有URL参数、表单隐藏域和Cookie三种方法。 阅读详情

领域逻辑的组织可以分为三种主要的模式:事务脚本,领域模型,表模块。 

面向过程的开发模式:事务脚本
         事务脚本
是这样一个过程开发逻辑:从表示层获得输入,进行校验和计算处理,将数据存储回数据库中,以及调用其他系统的操作等。然后,该过程将更多的数据返回给表示层,中间可能要进行大量的计算来组织和整理返回值。基本的组织模式就是让每个过程对应用户可能做的一个动作。所以,我们可以将这一模式想象成一个动作或业务事务的教本。该教本可以拆分为不同的子过程,这些子过程可以在不同的事务脚本中共享。但是每个动作都由一个过程来驱动的。
         事务脚本的开发模式是基于过程的,所以它发挥不了面向对象开发语言的优势,尤其是在领域逻辑复杂性增加时候,缺点就显的更为明显。企业应用开发中,往往类似的业务很多,所以相似的动作不可避免,通常会使多个脚本包含某些相同的代码。通过将这些代码提取为公共的子过程可以部分的消除这种情况,但在很多时候,消除副本,检测副本都很困难。这使的应用程序没有清晰的结构,带来测试,修改,维护等等的不便。
         所以,事务脚本一般只用在简单的案例中,但是建议面向对象的开发人员,即使在简单的案例中也宁愿使用领域模型。虽然适应领域模型的思维方式比较困难,但是,一旦习惯了领域模型,从而受益终生。

面向数据集的开发模式:表模块
        
表模块是处理某一数据库表或视图中所有行的业务逻辑的一个实例。表模块通过强类型或弱类型的数据集与对象结合使用,使用主键查询数据,是.Net中使用的很多的一种模式,主要使用主键、半对象化的操作数据。之所以说是半结构化,是因为所用的对象基本上只具有行为,通过传入参数执行特定的操作或者查询记录集,而几乎不承载任何数据。在.net中,这种模式因为其容易和UI进行绑定和交互,所以倍受欢迎。
         DotNet以及Delphi都提供了大量的数据感知组件,可以使用Rad的快速开发模式来开发基于DataSet,DataTable的企业级应用。这种开发模式其实就是基于表模式的。我们只要在界面上摆放一些数据感知组件比如DataGrid等,然后设定同数据源的连接,以及 连接的表,显示的字段,一个简单的程序就搞定了。
         面向数据集的开发模式非常使用于中小型的企业级应用开发,也是国内很多公司的开发模式。但是对于复杂的应用程序来说,业务逻辑的复杂程度会使该种开发方式显的力不从心。
         首先,使用RAD和数据感知组件,就使数据显示层和数据库表紧耦合,任何对数据模型的改变都会导致所有绑定到改动的表字段的数据感知组件的修改。这就是在Delphi开发中,很多开发者宁愿使用StringGrid以及ListView等数据非感知组件做数据显示控件的原因了。
         其次,从弱类型数据集中读取数据时,通常是根据字段名来获取字段的对象的值,比如DataTable["Name"].Tostring(),该方法是以字符串为索引来获得数据集中的字段值,所以如果字段名称写错了,错误也不会在编译期发现,只有在运行期报错,这就给排错带来困难。
         使用数据感知组件,意味着和数据库的特有特性的紧耦合。比如为了减少代码量和提高效率,经常需要使用一些数据库平台相关的特殊sql,或者将一些复杂的sql写成平台相关的存储过程,这样当向不同数据库平台移植时,需要重新编写大量的业务逻辑,这也就是企业级开发中,建议少用甚至不用存储过程的原因了【注意是企业级应用开发】。而面向对象的开发方式有一般基于面向对象的查询语言,比如Hibernate的HQL语言,具有一致性,更加容易实现数据库平台无关性,实现系统方便地迁移。
         基于数据集的开发模式难于应用继承,多态,设计模式等面向对象的开发方法,而且数据集对象不能包含自定义的操作。而领域模型则没有这样的障碍,开发的系统更加直观,更加容易维护。

面向对象的开发模式:领域模型
         在最坏的情况下
,业务逻辑可能会变的极其复杂。此时,规则和逻辑描述了许多不同的用例和行为的变化。对象正是针对这种复杂性而设计的,面向对象的特性加上设计模式足以应对复杂的业务逻辑。
         企业级应用的信息载体是各种数据库,而数据库表是基于关系的,假如能够把关系数据表转化为对象,使得操作数据表如同操作对象一样灵活,消除对面向数据集的Sql的依赖,也就可以应对复杂的企业业务,该有多好啊!
         这也就是面向对象的开发模式:领域模型。领域模型创建了一张由对象组成的业务网。其中的每一个对象都代表某个有意义的个体,可能大到一个公司也可能小到订单的一行。
         面向对象的领域模型通常和面向关系的数据库模型类似,但仍然有许多不同。领域模型混和数据和处理过程,拥有赋值属性和复杂的关联,并且可以使用继承。
         所以,领域模型衍生了两种风格:简单领域模型和复杂领域模型。
         简单领域模型可以使用活动记录,即简单的单条数据记录和单个对象对应的模式,一个对象对应数据库中的一个表。
         复杂领域模型需要使用数据映射器,它可能使用继承、策略或者其他的设计模式,是一张由互联的细粒度对象组成的复杂网络,我们经常会看到:多个类通过交互来完成很简单的任务。复杂领域模型更适用于复杂的逻辑,但它到数据库的映射比较困难。
         领域模型的要点在于隐藏数据库的存在,转化业务操作为对象操作。
         ORM[对象关系映射]是现在流行的解决数据库转化为对象的思想,而Hibernate框架是其中的佼佼者。
         【注:活动记录和数据映射器都是企业应用架构模式。】

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略 本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。 阅读详情

相关推荐

自组织映射神经网络(SOM)

目录 1 背景:自组织(竞争型)神经网络 2竞争学习的概念与原理 2.1 竞争学习的步骤 2.2 示例 3SOM典型结构 4SOM网的权值调整域 5 SOM Kohonen 学习算法 6 SOM示例 7SOM设计细节 7.1输出层设计 7.2输出层节点排列的设计 7.3 权值初始化问题 7.4学习率的设计 7.5设计拓扑领域 8SOM功能分析 8.1 保序映射 8.2数据压缩 8.3 特征提取 9自组织映射神经网络与K均值算法的区别...

weixin_39910711的博客 1万+

[图解]企业应用架构模式2024新译本讲解08-领域模型1

实际上只是换汤不换药,虽然也有用

rolt的专栏 815

自动驾驶必备:5分钟搞懂gPTP如何实现μs级时间同步(附开源代码)

本文深入解析了gPTP协议在自动驾驶系统中实现微秒级时间同步的核心机制与工程实践。针对多传感器融合与跨域协同的严苛需求,文章拆解了gPTP的频率同步、对等延迟测量与时间偏移校正三步流程,并提供了基于linuxptp和AVnu gPTP两大开源代码库的实战配置指南与性能评估方法,助力开发者构建高精度、高可靠的车载时间同步网络。

weixin_29211309的博客 170

应用架构DDD

应用架构区别 好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度。 分层架构(Layered Architecture) 分层架构就是将业务应用划分为对应的层级模块。每个层职责不同。 四层结构定义: 接口层: 统一处理系统对外的服务接口,可以是直接查询,也可以是三方系统对接。 应用层: 调用各个领域完成一个具体的业务流程应用,不需要关心具体的业务实现。 领域层: 实际完.

u011385940的专栏 6631

避坑指南:在Linux服务器上用Conda安装antiSMASH 5.2.0(解决Jinja2报错和Matplotlib权限问题)

本文详细介绍了在Linux服务器上使用Conda安装antiSMASH 5.2.0的避坑指南,重点解决了Jinja2报错和Matplotlib权限问题。通过创建专用conda环境、安装指定版本依赖包和配置缓存目录,帮助用户顺利完成antiSMASH的本地部署,适用于批量处理基因组分析任务。

weixin_26911099的博客 316

《算法第四版》学习心得一——怎么学算法

 一、算法的两个核心 算法的核心内容实际上有两个: 算法的概念和思路。 算法的编程实现。 两者相互关联影响,缺一不可。 不理解基本概念和思路,就算把实现代码背下来,也无济于事,因为脑袋里依然是一片模糊。理解了概念和思路,不去用代码实现,脑袋里有的只是概念,无法根据真实需求实现解决方案。 二、学算法需要什么基础 首先,必须要有一定的编程语言基础,要理解语言中最基本的概念:数据类型,类,成...

illikang的博客 3910

浅谈应用架构之领域驱动设计

一、架构是什么 架构广义的说就是组合构造,有产品架构、有系统架构等,好的架构能够使产品、系统更好地呈现,更好地迭代与维护。好的架构是演进出来的,好的代码是重构出来的。 我们经常听到中台、平台、系统、应用等名词,它们之前有何关系? 1)应用:是最小粒度的,用于实现业务系统功能的。比如现在流行微服务,实现一个业务系统的应用一般都包括:web应用、service应用。 2)系统:这里说的系统都是业务系统,一般一个业务系统都至少是一个完整的商业产品。比如寻源系统、招投标系统等。 3)平台:由多个业务系统组

白话技术 493

机器学习---xgboost算法

问题上表现的十分顶尖,本节将较详细的介绍XGBoost的算法原理。成和剪枝分别对应了经验风险最小化和结构风险最小化, XGBoost的决策树生成是结构风险最小。式(1.1)称为经验风险最小化,训练得到的模型复杂度较高。出结果, 是模型的输出结果;等式右边第⼀部分是模型的训练误差,第⼆部分是正则化项,这里。其中,F是假设空间,假设空间是在已知属性和属性可能取值的情况下,对所有可能满足目标的情。最小化,结构风险最小化的模型往往对训练数据以及未知的测试数据都有较好的预测。的正则化项是K棵树的正则化项相加而来的。

weixin_43961909的博客 1万+

企业应用架构模式之领域逻辑模式

一般的,企业架构过程从领域层开始的,一些经典的领域逻辑方法也就被称之为领域逻辑模式。主要有:事务脚本、领域模型、表模块。选择依据实际领域逻辑的复杂性,事务脚本是最简单的,而领域模型则比较复杂。 (1)事务脚本:使用过程来组织业务逻辑,每个过程处理来自表现层的单个请求。 将事务脚本组织成类,并与处理表现层与数据源层的类相分离,可应用命令模式来管理事务脚本类。 该模式简单,但有冗余,尤其是领

Roy的IT笔记 4713

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号-串联端接

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑并且进行串联端接,以下图为例,准备好发送接收端的IBIS模型, (se_example.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(W1_welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 339

化工设计软件:PDMS二次开发_(7).数据导入与导出技术

在某些复杂场景下,PDMS提供的标准API接口可能无法满足需求。此时,可以通过自定义API接口来实现特定的数据导入与导出功能。自定义设备导入API接口可以处理更复杂的设备数据格式。# 导入必要的库import pdms_api # 假设有一个PDMS API库# 定义自定义设备数据# 自定义设备导入API接口# 调用自定义设备导入API接口# 输出导入成功的消息print("自定义设备数据导入成功")在PDMS二次开发中,数据的导入与导出是关键的技术环节。

kkchenjj的博客 1490

9.企业应用架构模式 --- 领域逻辑模式

1.事务脚本 使用过程来组织业务逻辑,每个过程处理来自表现层的单个请求。 大多数业务应用都可以被看做是一系列的事务。一个事务可能将某种信息看做是以特定方式组织的,然后另一事务则会改变它。在客户系统和服务器系统之间的每次 交互都包含一定数量的逻辑。 事务脚本将所有这些逻辑组织成单个过程,在过程中直接调用数据库,或者只通过一个简单的数据库封装器。每个事务都有自己的事务脚本,尽管事务间的...

enlyhua的专栏 680

实战:RK3568 Android14 点亮 LVDS 屏幕

4组数据 (D0~D3) + 1组时钟 (CLK)。最大支持 1280x800 @ 60Hz。8组数据 (Even03, Odd03) + 2组时钟。支持 1080P 及以上。/ {/* 背光与电源 *//** 关键配置:数据格式映射* 可选值: "jeida-18", "jeida-24", "vesa-24"* 6位屏选 xx-18, 8位屏选 xx-24* 颜色不对(偏色/底片效果)就换 VESA <-> JEIDA*/

qq_33427070的博客 1165

《企业应用架构模式》(POEAA)读书笔记 (3)-- 领域逻辑模式

  《企业应用架构模式》(POEAA)读书笔记 (1) -- 企业应用的特点  《企业应用架构模式》(POEAA)读书笔记 (2)-- 表述   领域逻辑模式分为 事物脚本、领域模型、表模块和服务层四种模式   很多设计者喜欢把业务逻辑分成两类:领域逻辑和应用逻辑,前者只与问题领域有关、而后者有时被称为工作流逻辑 1.事物脚本   通过使用SQL语句或者存储过程返回记录集...

weixin_34122604的博客 71

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

php 领域逻辑,第九天-《企业应用架构模式》-领域逻辑模式

1. 事务脚本1)调用数据库:事务脚本将所有逻辑组成单个过程,在过程中直接调用数据库,或者只通过一个简单的数据库封存器。2)脚本处理:每个事务都有自己的事务脚本,尽管事务间的公共子任务可以被分解成多个子程序。3)运行机制:a.事务脚本应该置于与其他处理表现层和数据源层的类相独立的类中,把事务脚本组织成类的两种方法:a. 将数个事务脚本放在一个类中,每个类围绕一个主题将相关的事务脚本组织在一起;b....

weixin_35934037的博客 126

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

《企业应用架构模式》—组织领域逻辑

领域逻辑的组织可以分为三种主要的模式:事务脚本、领域模型、表模块。1.事务脚本:事件驱动的处理过程。根据用户界面操作、外部调用动作,从表示层获取输入,进行验证和计算,将数据存储到数据库或数据文件中的处理过程。基本方式是每个过程(一个或多个相关函数,可理解为脚本)对应于用户可能做的一个动作。其主要优缺点是:a.简单容易理解,就是动作驱动、过程化处理;b.能够与一个使用“行数据入口”或“表

A fresh GISer 928

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

第九天-《企业应用架构模式》-领域逻辑模式

1. 事务脚本 1)调用数据库: 事务脚本将所有逻辑组成单个过程,在过程中直接调用数据库,或者只通过一个简单的数据库封存器。 2)脚本处理: 每个事务都有自己的事务脚本,尽管事务间的公共子任务可以被分解成多个子程序。 3)运行机制: a.事务脚本应该置于与其他处理表现层和数据源层的类相独立的类中,把事务脚本组织成类的两种方法: a. 将数个事务脚本放在一个类中,每个类围绕一个主题将相关的事务脚本组...

weixin_34203832的博客 163

2.企业应用架构模式 --- 组织领域逻辑

组织领域逻辑 领域逻辑的组织可以分为三种主要的模式: 1.事务脚本 2.领域模型 3.表模块 保存领域逻辑最简单的方法是使用事务脚本。简单的说,事务脚本是这样一个过程:从表示层获取输入,进行校验和计算处理,将数据存储到数据库中以及调用其他 系统的操作等。然后,该过程将更多的数据返回给表示层,中间可能要进行大量的计算来组织和整理返回值。基本的组织方式是让每个过程对应用户可能做的一个...

enlyhua的专栏 494

企业应用架构模式--领域逻辑模式(第9章)

1. 事务脚本   1)调用数据库:事务脚本将所有逻辑组成单个过程,在过程中直接调用数据库,或者只通过一个简单的数据库封存器。   2)脚本处理:每个事务都有自己的事务脚本,尽管事务间的公共子任务可以被分解成多个子程序。   3)运行机制:     事务脚本应该置于与其他处理表现层和数据源层的类相独立的类中,把事务脚本组织成类的两种方法:     a. 将数个事务脚本放在一个类中,每...

175

企业应用架构模式--组织领域逻辑

1. 模型抉择:   1)领域逻辑复杂度:      2)抉择:     领域逻辑复杂度较低时,选择事物脚本;     如果开发环境拥有大量基于记录集的工具(.Net和VS),可以选择表模块;     开发小组经验丰富时,选择领域模型;     3种模式并不互相排斥,可以同时使用 2. 服务层:   1)服务层是从领域层分离出来的,用于置于底层的领域模型或表模块之上   2)...

109

企业应用架构模式学习(九):领域逻辑模式

为什么80%的码农都做不了架构师?>>> ...

weixin_33901641的博客 219

读《企业应用架构模式》4---关于组织领域逻辑

关于领域逻辑的组织主要讲了---贯穿领域层里的某些东西 1.事务脚本 “脚本”顾名思义就是“SQL语句”,当然如果我们操作数据库,必然要在一个事务中,这样就出会事务脚本的概念,估计市场是小的应用都是这样的组织的,记得8年前做广电项目的时候,就是这用他来组织代码的,如果大家看过BBS代码,大部分也是应用这种模式来组织的,优点就是上手快,但当代码复杂度达到一定程度,在也不会高兴了。

ZFIVE5 854

第二天-《企业应用架构模式》-组织领域逻辑

1. 模型抉择: 1)领域逻辑复杂度:    2)抉择:     领域逻辑复杂度较低时,选择事物脚本;     如果开发环境拥有大量基于记录集的工具(.Net和VS),可以选择表模块;     开发小组经验丰富时,选择领域模型;     3种模式并不互相排斥,可以同时使用 2. 服务层:   1)服务层是从领域层分离出来的,用于置于底层的...

weixin_34126215的博客 112

企业应用架构模式学习(二):组织领域逻辑

为什么80%的码农都做不了架构师?>>> ...

weixin_33862041的博客 109
上一篇: AspNet2.0页面生命周期
下一篇: 存储过程:利剑还是钝刀?
SysBug
博客等级 码龄22年 3粉丝 14原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值