DDD和DDDLib在恒拓开源的发展历程与推广经验

领域驱动设计(DDD)的概念源于2004年著名建模专家Eric Evans发表的书籍: 《Domain-Driven Design –Tackling Complexity in the Heart of Software》(中文译名:领域驱动设计—软件核心复杂性应对之道),池建 强在2011年发表的一篇文章《领域驱动设计和实践》中是这样形容DDD的:

领域驱动设计事实上是针对OOAD的一个扩展和延伸,DDD基于面向对象分析与 设计技术,对技术架构进行了分层规划,同时对每个类进行了策略和类型的划分 。

本文主要介绍为什么我们在恒拓开源内部推广DDD,我们如何通过开发DDDLib 和Koala等工具来完善这一过程,推广过程中遇到了哪些问题,以及我们如何解决 这一问题。

为什么选择DDD

传统的模式的最大优点在于开发人员非常熟悉,开发成本低,但它也有一些问 题:

采用DDD开发模式之前,传统的开发模型是最流行的Model-Dao-Service-UI开 发模型,通常是基于事务脚本(Transaction Script)和表模块(Table Module )模式的实现,这种模式通常是先设计表,再建模,实现容易依赖特定的表的一 些特性,如存储过程。基于表的设计模式容易带来以下几个问题:

业务建模完全是表的复制,无法真实反映业务

核心业务分散在各个地方,非常危险,修改扩展难,且难以阅读

这种开发模式适合一些需求小,后续维护扩展需求小的中小型项目,但在大型 企业级系统或产品,扩展维护或需求变量非常多的情况下,缺点也非常明显。

相对而言,DDD则有以下四点好处:

面向对象,模型真实反映业务现实:使用DDD领域驱动设计,模型通常是业务 的真实反映,业务集中在领域而不是分散在各service中,有利于对业务的理解。

使用领域统一建模语言:有利于业务沟通与建模: DDD倡导先对业务建模,而 非关注表或脚本的设计;在建模过程中,由于领域本身是对真实业务的反映与建 模,因此与业务专家更容易沟通,打破技术与业务的沟通隔阂。

可重用性高:DDD中,领域层为核心,每个领域对象都是一个相对完整的内聚 的业务对象描述,所以可以形成直接的复用。基于领域建模的设计,并不会依赖 特定的数据库及特性,模型是可以完全重用且没有技术上的冲突。

业务越复杂,DDD的优势越明显:领域模型采用OO设计,通过将职责分配到相 应的模型对象或Service,可以很好的组织业务逻辑,当业务变得复杂时,领域模 型显出巨大的优势。

时间: 2024-08-03 06:05:16

DDD和DDDLib在恒拓开源的发展历程与推广经验的相关文章

全球开源软件发展趋势分析

开源软件发展已经有几十年的历史,虽说在服务器端,Linux已成为事实上的主流操作系统,Linux在金融.电信及石油勘探等高端市场的核心业务得到了大规模的应用.但在桌面领域,Linux的市场占有率还比较低.纵观开源软件多年的发展和软件领域发近期的变化,我认为开源软件将会表现出以下的发展趋势. 一.在全球金融危机背景下,开源软件将获得更多的市场机会 自从2008年年末在全球经济衰退的形势下,各国政府纷纷推出开源政策,减少开支降低成本.开源解决方案将成为各国政府所有电子政务的发展趋势. 为什么开源软件

开源Hadoop发展迅猛 用户与厂商各取所需

就大数据的核心而言,Hadoop是一个用于有效存储和处理大数据的开源架构.多年来,开源初创公司Cloudera和Hortonworks在 Hadoop市场一直占有绝对地位,诸如Oracle.微软以及其他一些公司也想在这个市场占有一席之地,但更多是通过与专业的Hadoop初创公司建立伙伴关系间接地参与市场争夺. 大数据核心(图片来源google) 根据Forrester分析的最新报告,传统技术供应商会推出一系列强势的产品战略,即使所推出的Hadoop产品仍有许多有待完善的地方.但厂商们却希望提供基

2009开源软件发展论坛日程

第十三届中国国际软件博览会"(下称软博会),将于6月11日至13日在北京展览馆举办.本届软博会以"两化融合促进经济发展,软件与服务提升核心竞争力"为主题,同期将召开多场高端论坛,就软件服务业务热点问题及有关行业发展动态展开研讨. 以下为2009开源软件发展论坛日程: 主持人:共创软件联盟常务副秘书长 杨春燕 时间 内 容 嘉 宾 13:30-14:00注 册 领导致辞 14:00-14:05- 致辞工信部软件服务业司陈英副司长14:05-14:10- 致辞科技部高新司领导主

运营商如何利用开源软件发展云计算

云计算降低了用户和企业使用信息化应用的门槛,使IT资源成为像水电一样的社会公共基础设施,运营商作为通信基础设施提供商,从IDC租赁服务提供商升级到云服务提供商是必然选择.目前国内三大运营商已通过各种形式进入云计算市场,大部分采用商业软件集成后对外提供云计算服务的建设模式,相较于国内外其他云计算公司采用自研系统的模式,面临着成本高.维护难等问题.在运营商初期不具有核心研发能力的情况下,如何快速构建自研系统成为运营商发展云计算不可回避的问题. 开源软件的出现给了运营商站在巨人肩膀上的机会,在商业模式

恒拓开源携开源中国有望于 10 月底挂牌新三板

"恒拓开源" 将于 10月 底挂牌新三板.恒拓开源 2007年 由马越创办,是一家开源技术服务企业. 如果说恒拓开源你觉得陌生,那么提 "开源中国",相信程序猿童鞋大多都是知道的.开源中国 2008年 由红薯(刘冬)创立,是目前国内最大的开源技术社区.2013年 开源中国被恒拓开源收购,成为其全资子公司. 恒拓开源表示,挂牌后的业务将会围绕开源中国来开展. 开源中国目前的业务分为 4 大模块:1.社区:2.码云:3.人才招聘:4.众包. 开源中国凭借社区.论坛起家,

红帽Chris:软件定义带动开源存储发展

提到存储,很多人第一反应就是硬件存储厂商,一台台机架式存储遍布数据中心,实现当前存储的形态也并非单纯依靠硬件,软件定义存储近年来也越来越多的受到企业关注. 红帽亚太区存储业务总监 Chris Mawer 企业数据中心中传统的存储架构正在发生变化,从封闭.纵向的架构转向开放.横向.软件定义的架构.一方面,随着以OpenStack为代表的开放框架的兴起,软件定义存储(SDS)系统逐渐成为市场主流,性能优秀.可靠性高.可扩展性强的开源软件Ceph脱颖而出;另一方面,容器技术迅速崛起,带动了市场对能够简

微软 + Linux基金会=开源蓬勃发展

2016年11月16日,推进开源管理的非营利性组织Linux基金会宣布,微软在纽约举行的开发者活动Microsoft's Connect()上宣布加入Linux基金会,并且成为其白金会员. 从云计算和网络到游戏领域,微软已经稳步增加对开源项目和开源社区的参与.该公司目前是GitHub上领先的代码贡献者,今年年初宣布了几个代码贡献的里程碑,发布了开源的.NET Core 1.0:与Canonical合作将Ubuntu引入到Windows 10中:与FreeBSD合作发布Azure镜像:在收购Xam

Hadoop日渐成长引领开源云计算发展

最近各大巨头在云计算方面的投资都非常活跃,从云平台的管理.海量数据分析,到各种新兴的面向消费者的云平台和云服务,各个领域都呈现遍地开花的形式.而以Hadoop为代表的大规模数据处理(BigData Processing)技术的日趋成熟使得"业务为王"向"数据为王"转变.Hadoop社区的繁荣有目共睹.越来越多的国内外公司参与到Hadoop社区开发,或者直接将线上使用的软件开源. 当年与Google还是处在强烈竞争关系的Yahoo!于是招了Doug(Hadoop创始人

张志华:机器学习的发展历程及启示

近年来,人工智能的强势崛起,特别是刚刚过去的AlphaGo和韩国九段棋手李世石的人机大战,让我们领略到了人工智能技术的巨大潜力.数据是载体,智能是目标,而机器学习是从数据通往智能的技术途径.因此,机器学习是数据科学的核心,是现代人工智能的本质. 通俗地说,机器学习就是从数据中挖掘出有价值的信息.数据本身是无意识的,它不能自动呈现出有用的信息.怎样才能找出有价值的东西呢?第一步要给数据一个抽象的表示:接着基于表示进行建模:然后估计模型的参数,也就是计算:为了应对大规模的数据所带来的问题,我们还需要