实战-业务逻辑层
业务逻辑层是应用程序的大脑
-
负责处理系统的核心业务,
-
负责对用户定义的流程进行建模,
-
负责数据访问层和展示层的通讯,
-
不能因为数据库的变换而变化,也不能因为终端的变换而变化。
下面是业务逻辑层的具体实现
-
BLL——业务逻辑
业务逻辑的操作,包括业务处理,调用数据访问,事务等。
-
IBLL——业务接口
业务逻辑层的方法对外暴露的接口和服务契约
-
WFActivitys——工作流活动层
定义了工作流中使用的活动
业务的最小逻辑单元
因为服务层和展示层都会调用业务逻辑层,所以在此层做事务、异常和并发的处理比较合理。
-
事务的使用
首先,引用"using System.Transactions;"命名空间,调用TransactionScope类
-
异常的处理
-
并发的处理
更新的时候会面临一个难点,假设某条记录同时被两个人A和B读取并且正在修改。A先修改完成然后保存了,然后B再保存的时候,会由于时间戳不一致(因为A之前先保存修改了时间戳)导致B保存失败。给一个表加一个时间戳字段Timestamp,可以有效的解决数据库并发问题。
我们约定
-
将系统需要的基础类放在"Framework"文件夹中
-
将业务相关的类,都放在自己创建的文件夹中,类采用分部类的方式,这样可以有效的防止代码重新生成覆盖的危险,如:"DiaoYan"
-
在此层做事务、异常和并发的处理
-
对外暴露的方法,必须继承自IBLL项目的接口
以上我们完成了业务逻辑层的设计,此架构的代码实现,请参考www.langben.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构