代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

推荐文章

从零开始使用CodeArt实践绝佳领域驱动开发(四)

    从零开始使用CodeArt实践最佳领域驱动开发(四)6. 为领域模型Permission编码   现在我们为账户子系统(AccountSubsystem)设计领域对象并编码实现细节。   账号、角色、权限是账户子系统里已知的3个事物,而一个子系统里面可以有多个内聚模型,所以我们首先要思考的问题是:以谁为聚合根创建第一个内聚模型?   与划分子系统的思路一样,我们以最简单、最独立的事物作为突破口。简单是指事物在特定领域里的特征比较少,没有那么复杂。很明显,权限是最简单、最独立的,它不依赖于账号、角色而独立存在,而且从目前收集到的需求来看,权限的特征只需要有名称即可。所以我们尝试以权限(Permission)为聚合根创建第一个内聚模型。请各位注意,我在这里用“尝试”一词表达要做的工作,因为我们并不能保证当前做的决策100%是对的,但是勇敢的去尝试总比畏首畏尾、不敢迈出第一个步子、始终原地踏步要

    阅读全文>>

作者:coody分类:【_驱动开发浏览(2207

2019-09-28

关于系统设计准则回顾

    关于系统设计原则回顾     最近有人问我 系统设计的原则,事实上不论今天各个技术栈怎么演化,那些本质的原则与方法不会变, 让我们回顾一下 这些原则:•分散关注 Separation of concerns. Divide your application into distinct features with as little overlap in functionality as possible. The important factor is minimization of interaction points to achieve high cohesion and low coupling. However, separating functionality at the wrong boundaries can result in h

    阅读全文>>

作者:coody分类:【_驱动开发浏览(797

2019-09-27

从零开始使用CodeArt实践绝佳领域驱动开发(二)

    从零开始使用CodeArt实践最佳领域驱动开发(二)4.划分子系统   使用CA编码项目的核心结构是:由多个子系统组成多个不同的服务来提供项目的各种功能。请不要将这里提到的子系统与大家在别的项目实施方法里的概念混为一谈,CA里的子系统概念是完全不一样的,下面我们详细阐述这一点。   同一事物在不同领域里的本质特征是不尽相同的,例如书在销售领域的关注点是价格、好评度、热销情况等。但在阅读领域里,书更多的关注点是页码、每页内容、段落注释等特征。因此,要想用常规的方法在不同领域重用同一个事物模型是非常困难的。CA为了解决这类问题将整个项目切分为多个子系统,每个子系统关注各自领域内的特征。这些子系统是真正实现业务逻辑的地方,子系统之间会存在一定的依赖关系,但是这种依赖关系是良性的,不会影响系统的重用性。也就是说,每个子系统都可以单独拿出来引用到别的项目子系统中扩展重用。开发人员可以根据需要将多个子

    阅读全文>>

作者:coody分类:【_驱动开发浏览(970

2019-09-27

怎么一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单

    如何一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单本系列所有文章 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念 如何一步一步用DDD设计一个电商网站(二)—— 项目架构 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成 如何一步

    阅读全文>>

作者:coody分类:【_驱动开发浏览(973

2019-09-26

怎么一步一步用DDD设计一个电商网站(十四)—— 回顾与总结

    如何一步一步用DDD设计一个电商网站(十四)—— 回顾与总结本系列所有文章 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念 如何一步一步用DDD设计一个电商网站(二)—— 项目架构 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成 如何一步一步

    阅读全文>>

作者:coody分类:【_驱动开发浏览(597

2019-09-26

DDD理论学习系列(八)- 应用服务&领域服务

    DDD理论学习系列(8)-- 应用服务&领域服务 DDD理论学习系列——案例及目录 1. 引言 单从字面理解,不管是领域服务还是应用服务,都是服务。而什么是服务?从SOA到微服务,它们所描述的服务都是一个宽泛的概念,我们可以理解为服务是行为的抽象。从前缀来看,根据DDD的经典分层架构,它们又隶属于不同的层,应用服务属于应用层,领域服务属于领域层。 应用层(Application):负责展现层与领域层之间的协调,协调业务对象来执行特定的应用程序任务。它不包含业务逻辑。 领域层(Domain):负责表达业务概念,业务状态信息以及业务规则,是业务软件的核心。 所以综合来看应用服务是用来表述应用行为,而领域服务用来表述领域行为。 那怎么理解应用行为和领域行为呢,应用行为描述了一个具体操作从开始到结束的每一个环节,而领域行为是对应用行为的细化,用来处理具体的某一个环节。比如,我们手

    阅读全文>>

作者:coody分类:【_驱动开发浏览(2045

2019-09-26

DDD理论学习系列(四)- 领域模型

    DDD理论学习系列(4)-- 领域模型 DDD理论学习系列目录 1.引言 我们还是先来拆词理解,领域模型可以拆为“领域”和“模型”二词。 领域:按照我们之前的文章的理解,DDD中的领域是指软件系统要解决的问题,如我们的办公设备公众号在线商城就是为了解决电商问题,对应的就是电商领域。 模型:百度百科解释为对于某个实际问题或客观事物、规律进行抽象后的一种形式化表达方式。如户型图就是实际房屋结构的模型。 把两个词结合起来,我们给领域模型下个定义:领域模型是对我们软件系统中要解决问题的抽象表达。 这个理解还是很生涩,没关系,容我娓娓道来。 2.领域模型的来历和作用 我们知道,软件开发过程主要包括:需求分析、概要设计、详细设计、编码、测试、软件交付、验收、维护。其实简单来说就是分析、设计和实现。 而传统的软件开发方式中,系统分析、设计和实现三个阶段完全脱节,最后开发出来的软件不能很好的满足业务

    阅读全文>>

作者:coody分类:【_驱动开发浏览(1653

2019-09-24

怎么一步一步用DDD设计一个电商网站(十一)—— 最后的准备

    如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备  本系列所有文章 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念 如何一步一步用DDD设计一个电商网站(二)—— 项目架构 如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读全文>>

作者:coody分类:【_驱动开发浏览(1360

2019-09-26

从零开始使用CodeArt实践绝佳领域驱动开发(一)

    从零开始使用CodeArt实践最佳领域驱动开发(一)前言:   目前绝大多数公司依然采用的是传统的项目实施方式——围绕数据库设计做应用程序开发。在这种方式下,程序员的主要工作就是不断的增删改查各种数据表,以数据为核心驱动系统的运行。随着项目进度的推进,系统暴露的问题却越来越多,程序员每天陷入无止境的修复状态中,增加或修改一个功能的代价也越来越大。项目进展看似在推进却好像永远都不会有完成的那一天。   我于2005年的时候就隐约感觉这种方式是错误的,关系型数据库的优势是处理数据的存储而非解决复杂的业务需求,以数据库为核心开发项目必然会导致失败。所以在往后的10多年里不论多么艰难我都坚持摒弃围绕数据库做开发的工作方式,最终我找到了正确的方向,完美的实践了领域驱动设计,在这方面可谓硕果累累。同时,为了降低领域驱动实施的门槛,我一手打造了企业级开发框架CodeArt。现在将其发布出来提供大家免费使

    阅读全文>>

作者:coody分类:【_驱动开发浏览(1819

2019-09-26

读书随感-软件的设计原则

    读书有感--------软件的设计原则任何傻瓜都可以写出计算机能懂的代码,但好的程序员可以写出人类能懂的代码-----Martin Fowler  如果你是新手,你可能会问,为什么代码需要设计原则? 我想说的是肯定不是为了故作高深,存在即是合理, 如果写了一个简单的程序,你可能不需要设计原则, 如果你写了一个复杂的,但是之后再也不会改,那么你也不需要, 但是现实生活中,基本上的软件系统有一定复杂度,而且都在不断的修改。 所以我们需要写出一个不仅让机器看懂,还能够让人类看懂的代码。 让人类能看懂的代码即是可维护性代码,它包含两个核心原则:高内聚、低耦合。 一个有助于实现高内聚低耦合的原则是关注点分离Separation of Concerns(SOC),关注点是软件功能的不同部分,像业务逻辑或者表现方式, SOC是关于把系统分解成不同的可能没有重叠的特性,比如尽量将业务逻辑放在领

    阅读全文>>

作者:coody分类:【_驱动开发浏览(1984

2019-09-26

DDD理论学习系列(11)- 工场

    DDD理论学习系列(11)-- 工厂 DDD理论学习系列——案例及目录 1.引言 在针对大型的复杂领域进行建模时,聚合、实体和值对象之间的依赖关系可能会变得十分复杂。在某个对象中为了确保其依赖对象的有效实例被创建,需要深入了解对象实例化逻辑,我们可能需要加载其他相关对象,且可能为了保持其他对象的领域不变性增加了额外的业务逻辑,这样即打破了领域的单一责任原则(SRP),又增加了领域的复杂性。 那如何去创建复杂的领域对象呢?因为复杂的领域对象的生命周期可能需要协调才能进行创建。 这个时候,我们就可以引入创建类模式——工厂模式来帮忙,将对象的使用与创建分开,将对象的创建逻辑明确地封装到工厂对象中去。 2. DDD中的工厂 我们有必要先理清工厂和工厂模式。 DDD中工厂的主要目标是隐藏对象的复杂创建逻辑;次要目标就是要清楚的表达对象实例化的意图。 而工厂模式是计模式中的创建类模式之一。借助工厂

    阅读全文>>

作者:coody分类:【_驱动开发浏览(1733

2019-09-27

从零开始使用CodeArt实践绝佳领域驱动开发(五)

    从零开始使用CodeArt实践最佳领域驱动开发(五)本章内容还在整理上传中,你可以等全部更新完毕后再查阅也可以先预览已上传的内容。。。。。。 7. 应用层的命令模式   在上个章节里我们设计并编码了领域对象Permission,但是目前Permission并没有任何行为上的设计。这是因为我们不建议“凭空去制造行为”,而是在领域对象第一个版本的代码实现之后就立即使用它。在使用过程中观察外界(应用层或其他领域对象)对它的需求,这些需求往往暗藏了进一步揭露对象本质特征的提示。我们可以根据这些提示逐渐挖掘出该对象更多的行为特征,结合CA里相关的设计原则,最终我们可以确认领域对象该如何提供哪些行为方法。所以,大家不要在意领域对象在设计初期有点类似“贫血模型”,因为这不是它的最终形态,这只是它成长的起点。那如果经过一番尝试后,我们还是没有为对象添加任何方法呢?这种情况的确存在,有些对象存在的意义只是被

    阅读全文>>

作者:coody分类:【_驱动开发浏览(1266

2019-09-26

DotNetCore跨平台~服务总线_事件总路线的重新设计

    DotNetCore跨平台~服务总线_事件总线的重新设计回到目录 理论闲话 之前在.netFramework平台用的好好的,可升级到.net core平台之后,由于不再需要二进制序列化,导致咱们的事件机制遇到了问题,之前大叔的事件一直是将处理程序序列化后进行存储的,处理存储的参数为事件源,一个事件源可以由多个处理程序订阅,当事件源被发布时,这些被序列化的代码段会被回调执行,这是大叔之前的思路,在RedisBus和MemoryBus里已经得到了实现,读过大叔源代码的同学应该有所了解了。 事件源和处理程序    /// <summary> /// 事件源 /// </summary> public class CreateUserCommand : BusData { public string UserName { g

    阅读全文>>

作者:coody分类:【_驱动开发浏览(1794

2019-09-26
上一页 1/54页 下一页