.NET企业级架构解决“.NET研究”方案:业务层

简介:   引言  Martin Fowler说过:“任何人都可以写出计算机才能理解的代码,只有写出人能理解的代码的程序员才是好程序员。”每一个复杂的软件都应该按层来组织。每一层代表系统的一个逻辑部件。尤其是,业务层的模块包括了所有使得系统运行的时候和其它层交互所需要的功能算法和计算,其他层包括数据访问层DAL和表现层。

  引言

  Martin Fowler说过:“任何人都可以写出计算机才能理解的代码,只有写出人能理解的代码的程序员才是好程序员。”

每一个复杂的软件都应该按层来组织。每一层代表系统的一个逻辑部件。尤其是,业务层的模块包括了所有使得系统运行的时候和其它层交互所需要的功能算法和计算,其他层包括数据访问层DAL和表现层。

  业务层是任何分层系统的神经中心,包含了大部分的核心逻辑。因为这个原因,它也经常被叫做:业务逻辑层BLL。

  正文

  1、业务逻辑层是什么

  抽象的讲,业务逻辑层是系统的一部分,用来处理和业务相关的任务。本质上,业务逻辑层包括一系列执行数据的操作。数据被模型化为问题域的实体,例如:发票、用户、订单、清单。另一方面,包括一些操作,例如:创建一个发票,添加一个用户,处理一个订单。

  2、剖析业务层

  如果你从纵向来看业务逻辑层,你会发现一些业务模型的实体,表达用户策略和需求的业务规则,实现自动化功能的服务,定义文档和数据从一层流转到一层的工作流。

  安全是一个在所有层都需要考虑的严重问题,但是在业务逻辑层,代码扮演一个用户界面层的守门人。在业务逻辑层的安全是以角色为基础的,或者是限制对业务对象的访问,只对授权用户开放。

  2.1领域对象模型

  领域对象模型更倾向于对整个系统提供一个结构化的视图,包括实体的功能描述,实体间的关系,实体的职责。模型产生于用户需求,使用UML的用例图和类图进行文档化。在模型中,你表示出用来存储数据和暴露操作的真实世界元素。每一个实体代表模型中的一个角色,提供一些行为。每个实体都有自己的职责,依据领域的关系进行交互。

  很多应用被打上复杂的标记,实际上,如果你看到最终的技术实现,你会发现是相对简单的。但是,整体来看这个应用是复杂的,那是因为领域内在的复杂性。通常来说,困难在于构建一个适当的软件模型,而不是最终的实现。一个设计良好的模型,无论你运行到哪里,可以解决任何难度的复杂性。

  对象模型和领域模型

  为了清晰起见,让我们确定一下“对象模型”和“领域模型”这两个词。尽管我们经常会交替使用,实际上他们代表不同的事物,就算代表同一个事物的时候,他们的抽象级别也是不同的。我们所谓的“对象模型”就是简单的对象图。对于如何设计和实现模型没有限制。如果你有了一些相互关联的类,就有了一个对象模型。就像你看到的,描述相当通用,适用于大部分的解决方案。

  我们所谓的“领域模型”就是另外一回事了。领域模型是用来满足一系列需求的对象模型。典型的,领域模型中的类没有持久层的概念,是一种与其他帮助类库中的类没有关系的理想状态。另上海闵行企业网站制作外,领域模型设计用来解决特定的领域问题,试图从实体和它们之间的关系来抽象业务流程和数据流。

  记住领域模型也是一种特殊的设计模式,在后面我们会讨论。

  2.2 领域实体

  从外部来看,业务逻辑层就是对业务对象的一系列操作。大多数情况,一个业务对象就是一个领域实体的实现,也就是一个封装了数据和行为的类。也可能是一些实现特殊计算的辅助类。业务逻辑层决定业务对象之间如何交互。它也为参与交互的模块、业务对象强加了一些规则和流程。

  业务逻辑层处在一个分层系统的中间,和表现层、数据访问层交换信息。业务逻辑层的输入和输出不是非要业务对象不可。在大多数情况,架构师更倾向于在跨层之间使用DTO(Data Tran上海闵行企业网站设计与制作sfer Objects)进行数据传输。

业务对象和数据传输对象有什么不同呢?

  业务对象包含数据和行为,在业务逻辑中可以看做是充血的活动对象。数据传输对象只是一个值对象,是包含数据没上海网站建设有附加的行为。处于序列化的目的,在业务对象中存储的数据需要被序列化到数据传输对象中。数据传输对象除了setter和getter以外没有逻辑行为。在模型中,每一个领域实体类可能会对应多个数据传输对象。为什么是多个数据传输对象呢?

  一个数据传输对象不是一个无行为的领域对象的简单副本。相反,一上海徐汇企业网站制作个数据传输对象代表一个在特定上下文环境使用的领域对象的上海徐汇企业网站设计与制作ref='http://www.93tj.com'>上海企业网站设计与制作子集。例如:在一个方法中,你需要一个只有Name和ID的CustomerDTO;其他地方你可能需要一个有Name、ID、Country、Contract的CustomerDTO。通常来说,一个领域对象是一个包含很多对象的图,例如:Customer包含orders,order上海企业网站制作details,等等。

  重点

  关于DTO和OB的协同使用,可以引出一大串的、无意义的争论。理论建议在任何情况下都是用DTO来减少层之间的耦合。实践中,经常会提醒我们已经够复杂的了,尽量避免不必要的附加东西。作为一条实践的准则,我们建议在处理少于100个业务对象的模型的时候,你不需要这么做。在这些情况下,DTO和OB很可能很相似。

  2.3 业务规则

  在现实世界中的组织都是基于一系列的业务规则组成的。你可以争论这些规则的级别,但是不可以否认这些规则的存在。每一个组织都有追求的战略,规则是实现战略的主要规范。战略指明了要达到的高度,规则明确了如何达到这个高度。

规范业务规则有各种方式。如果你生活和工作在一个完美的世界,每一个组织维护他自己的规则数据库,这样在一个项目中的各个团队中就很容易共享这些规则。大多数情况不是这样的,搜集业务规格的过程开始于开发项目。结果就是,业务规则在项目快要结束的时候才整理出来,而且是在架构师之间共享。

目录
相关文章
|
1月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
163 3
Mysql高可用架构方案
|
7天前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
31 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
1天前
|
NoSQL 决策智能 数据库
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
本项目旨在解决智能体的“超级入口”问题,通过开发基于意图识别的多智能体框架,实现用户通过单一交互入口使用所有智能体。项目依托阿里开源的Qwen2.5大模型,利用其强大的FunctionCall能力,精准识别用户意图并调用相应智能体。 核心功能包括: - 意图识别:基于Qwen2.5的大模型方法调用能力,准确识别用户意图。 - 业务调用中心:解耦框架与业务逻辑,集中处理业务方法调用,提升系统灵活性。 - 会话管理:支持连续对话,保存用户会话历史,确保上下文连贯性。 - 流式返回:支持打字机效果的流式返回,增强用户体验。 感谢Qwen2.5系列大模型的支持,使项目得以顺利实施。
92 4
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
|
22天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
1月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
7天前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
|
7天前
|
弹性计算 负载均衡 安全
企业业务上云经典架构方案整体介绍
本次课程由阿里云产品经理晋侨分享,主题为企业业务上云经典架构。内容涵盖用户业务架构现状及挑战、阿里云业务托管经典架构设计、方案涉及的产品选型配置,以及业务初期如何低门槛使用。课程详细介绍了企业业务上云的全流程,帮助用户实现高可用、稳定、可扩展的云架构。
|
1月前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
25 3
|
2月前
|
存储 缓存 NoSQL
分布式架构下 Session 共享的方案
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求、系统架构和性能要求等因素,选择合适的 Session 共享方案。同时,还需要不断地进行优化和调整,以确保系统的稳定性和可靠性。
|
1月前
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
110 0

热门文章

最新文章