`
flyzht
  • 浏览: 591 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

软件架构、领域驱动设计漫谈

 
阅读更多
    说起企业开发软件架构一般分为事务脚本和领域驱动,在.net阵营中比较流行ActiveRecord和表模块架构,这两种和事务脚本本质是一样的,都是面向数据库开发。企业级应用日益复杂,面向数据库开发在前期开发会比较快。但就像是没有打地基的楼房一样不可靠,.net提供了一种把数据库表模型转换为领域模型的方法,这个比较搞笑,表模型是是数据模型是平面的,2维的,领域模型是业务模型,3维的,你可以把领域模型转为数据模型,但是无法倒转。软件解决的是领域的业务逻辑问题,而不是解决业务数据该怎么存储。在面向数据库的开发方式中,业务逻辑都写在应用层的Service中,对于每个用例,每个业务需求都一行一行的在Service中实现,这样每个Service就是平面的信息孤岛,大量代码重复,随着时间的推移维护成本上升,生产力下降,维护人员根本不愿意修改代码,项目或产品风险越来越大。为了避免这个问题,就要做好软件架构。

   软件架构本质就是分离关注点,把系统分为几层,每一层都有自己的关注点,而领域层是核心关注点,是价值所在。其他层都是为领域层做支撑用的。领域模型就是业务本身,需求的变化直接导致模型变化,面对模型的驱动可以把业务的本质了然于胸,从容面对需求变化。领域模型是怎么得到的?我们在接触领域的一开始,只能在脑中抓到领域中的一些基本概念,这时候建立的是基本概念模型,是幼稚的,随着迭代对业务的不断了解,开始能抓中众多需求的本质,把模型抽象,把重要的业务规则从隐式的转化为显式的,去掉华而不实的模型和关联等等,不断的精炼模型,这样从浅模型得到深层模型。

   通常领域层的代码只占整个系统中很少的一部分,但是价值却占很大比例。在实现领域代码时候,应该由水平最高的工程师来实现,对这部分代码进行精心测试,因为领域模型就是POJO的,不依赖任何框架,所以比其他层的代码都容易测试。在代码实现的时候,是对业务细节也是更深的理解过程,这时候也可能对业务模型有新的认识,所以在代码实现的过程中领域模型也在深化。领域模型实现不应依赖任何技术,不依赖其它层,不会因为你是否用了spring或者ejb、hibernate而对领域模型做出改变,领域模型的改变的因素只能是业务,而不是技术。在领域模型驱动的开发过程中,要随时警惕其他层对领域层的腐蚀。领域驱动不是一条容易走的路,但是你走熟练了,这条路会带给你不断的惊喜。
分享到:
评论

相关推荐

    FPGA研发之道(6)架构设计漫谈(一)流驱动和调用式.docx

    在FPGA(Field-Programmable Gate Array)开发领域,架构设计扮演着至关重要的角色,尤其是在面对性能、接口和可维护性的挑战时。FPGA因其灵活性和高性能而在各种应用中独树一帜,但同时也带来了相对较高的研发成本...

    软件架构万字漫谈:业务架构、应用架构与云基础架构

    架构风格则是描述一类系统的一般性设计原则,如分层架构、六边形架构、洋葱架构、RESTful架构和领域驱动设计(DDD)。通过使用架构模式和风格,可以提高软件设计的复用性和可理解性。 【系统复杂性管理】随着系统的...

    漫谈兼容内核 毛德操

    2. **硬件接口兼容性**:分析了如何设计内核以便适配不同的处理器架构,如x86、ARM、PowerPC等,以及处理I/O设备的驱动程序编写和管理。 3. **软件兼容性**:探讨了如何实现对不同操作系统的API(应用程序接口)和...

    FPGA研发之道(6)架构设计漫谈(一)流驱动和调用式

    流驱动设计会依据输入输出接口确定系统架构,如输入接口→解压缩模块→视频转换模块→显示接口。根据视频质量需求计算最大码流,进而确定内部总线宽度、系统频率以及子模块数量等关键参数。这种方式在IP、存储和数字...

    漫谈兼容内核(毛德操)

    6. **多版本共存**:Windows NT架构允许在同一台机器上安装并运行多个操作系统版本,如Windows XP和Windows 7的并存,这需要内核级别的兼容性设计。 7. **用户界面兼容性**:虽然UI更新通常由用户模式组件处理,但...

    嵌入式处理器体系结构发展漫谈.pdf

    多处理器芯片的出现,尤其是多核设计,带来了软件设计上的巨大挑战。编译器需要提供更好的并行化支持,操作系统需解决SMP问题,同时,对于新的指令集或扩展指令集的优化成为提高性能的关键。这些挑战同时也孕育了新...

    Java思维导图xmind文件+导出图片

    领域驱动设计及业务驱动规划 分布式架构的基本理论CAP、BASE以及其应用 什么是分布式架构下的高可用设计 构架高性能的分布式架构 构建分布式架构最重要因素 CDN静态文件访问 分布式存储 分布式搜索引擎 ...

    开发框架漫谈.rar

    框架的出现旨在减少代码重复性,提高开发效率,并且通过遵循一定的设计原则,使得软件的可维护性和扩展性得到增强。 首先,让我们详细探讨开发框架的定义。开发框架本质上是一个半成品的软件,它包含了实现特定功能...

    嵌入式处理器漫谈(嵌入式系统)

    2. **系统设计**:根据需求选择合适的硬件平台和软件架构。 3. **编码实现**:编写驱动程序、应用程序等软件代码。 4. **测试验证**:通过仿真和实际测试确保系统达到预定的功能和性能要求。 5. **部署与维护**:将...

    系列 | 漫谈数仓第一篇NO.1 『​基础架构』

    在漫谈数仓系列的第一篇中,我们主要探讨了数据仓库的基础架构,涵盖了从传统的离线数据仓库到现代实时数据仓库的演变,以及各种架构模式和技术选型。 首先,架构演进是数据仓库领域的重要话题。传统的离线数据仓库...

    漫谈分布式存储方案,GPFS 对话 CEPH1

    它专为高吞吐量、数据共享和安全性设计,支持闪存、容灾、备份和云平台接入。GPFS的架构包括Cluster Manager、File System Manager等多个组件,共同确保集群配置的完整性和高效的数据访问。其基本架构可以是直接附加...

    工业大数据漫谈19:工业大数据数据采集常见的工业协议简介(下).pdf

    PA(Process Automation)是针对过程自动化设计的,符合IEC1158-2标准,常用于过程控制领域。ProfiBus构建了从现场设备层到车间级监控的分散式数字控制系统,支持工厂自动化、流程自动化和楼宇自动化等多个领域的...

    嵌入式整理资料

    接下来,“嵌入式处理器体系结构发展漫谈.pdf”可能涉及处理器架构的历史和演变,包括RISC(精简指令集计算机)与CISC(复杂指令集计算机)的对比,以及现代嵌入式处理器如ARM、MIPS、PowerPC等的特点和发展趋势。...

    中嵌学院嵌入式开发资料

    嵌入式技术是现代科技发展中的重要组成部分,它涉及到计算机硬件、软件、系统集成等多个领域。在"中嵌学院嵌入式开发资料"这个压缩包中,包含了对嵌入式开发深入理解的关键知识点,让我们逐一解析。 首先,"嵌入式...

    嵌入式开发文档五合一

    嵌入式开发是一个涵盖广泛的领域,它涉及到计算机硬件、软件以及特定应用的集成。这个“嵌入式开发文档五合一”集合提供了丰富的学习资源,帮助初学者深入理解嵌入式系统的各个方面。以下是对每个文件主要内容的详细...

    工业电子中的PLC的工业控制系统漫谈

    【工业电子中的PLC工业控制系统漫谈】 PLC(可编程控制器)是现代工业电子领域不可或缺的组成部分,它源于早期的可编程逻辑控制器,最初设计用于替代传统的继电器逻辑控制。随着时间的推移,PLC的功能不断扩展,...

    嵌入式一揽子书.(精心收集)

    5. **嵌入式处理器体系结构发展漫谈**:处理器架构的发展和演变是嵌入式领域的重要部分。此部分可能讨论RISC与CISC的区别、单片机与微处理器的不同,以及现代处理器如ARM的架构特点。 6. **C&C++嵌入式系统编程**:...

    CIS 2020 网络安全创新大会 - 安全技术资料汇总(共48份).zip

    这份报告可能会探讨相关的安全架构设计和风险管理策略。 "MTK安全启动大剖析.pdf"可能深入解析了MTK(MediaTek)芯片的安全启动流程,这对于理解硬件安全和嵌入式系统的安全机制至关重要。安全启动是确保设备从开机...

    DX32学习手册(PDF)

    - **J-LINK介绍与驱动安装**:介绍了J-LINK调试器的功能,并指导安装相应的驱动程序。 - **MDK下的STM32调试**:教授如何在MDK环境中使用J-LINK进行STM32调试。 - **IAR的安装和设置**:同样地,也介绍了IAR环境...

    中英文spring chm

    Spring的事件驱动模型、MVC设计模式的运用,以及如何通过Spring Boot自动化配置和快速启动应用,这些都是在阅读和学习这些资料时需要关注的关键点。 总的来说,这份“中英文spring chm”资源将帮助你全面理解Spring...

Global site tag (gtag.js) - Google Analytics