首页
学习
活动
专区
工具
TVP
发布

领域驱动设计DDD实战进阶

DDD第一波视频课程:请关注 “msshcj” 微信公众号 QQ群:309287205
专栏作者
73
文章
68145
阅读量
161
订阅数
微服务实战(七):落地微服务架构到直销系统(实现命令与命令处理器)
我们先来看看CQRS架构,你对下图的架构还有印象吗?每个组件的功能都还清楚吗?如果有疑问,请查考文章《微服务实战(五):落地微服务架构到直销系统(构建高性能大并发系统)》。
用户1910585
2018-10-18
8080
微服务实战(四):落地微服务架构到直销系统(将生产者与消费者接入消息总线)
前一篇文章我们已经完成了基于RabbitMq实现的的消息总线,这篇文章就来看看生产者(订单微服务)与消费者(经销商微服务)如何接入消息总线实现消息的发送与消息的接收处理。
用户1910585
2018-08-02
5950
关于领域对象业务逻辑中条件判断的最佳实践
这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题。 大家都知道,聚合根、实体和值对象这些领域对象都自身处理自己的业务逻辑。在业务处理过程中,通常会有一些条件判断,当满足这些条件时,会进行不同的后续处理。在传统的实现中,可以通过If Else条件语句进行判断,但If Else语句在复杂领域中来检查是否满足一些业务条件存在以下的问题: 1.      无法很好的显示表达业务条件本身。 2.      无法对多个条件在不同需要的地方进行灵活的组合。
用户1910585
2018-07-04
8210
DDD实战进阶第一波(七):开发一般业务的大健康行业直销系统(实现产品上下文接口与测试)
前一篇文章我们介绍了如何将创建产品的领域逻辑与产品的持久化仓储通过上架产品的用例组织起来,完成了一个功能。在实际的项目中,多种前端的形态比如PC Web、 微信小程序、原生APP等要调用后端的功能,通常要将后端的功能包装成RESTFUL风格,这样前端就可以使用Http Get或Post方式调用后端的功能,所以这篇文章我们先来完成后端 的Asp.net Core WebApi,通过WebApi将上架产品的功能暴露出去。 实现上下产品接口: [Produces("application/json")]
用户1910585
2018-07-04
5080
领域驱动设计案例之业务实现1
 业务上主要实现产品的创建,客户的创建、下订单的业务,这里主要演示领域驱动设计的思想与一些最佳实践如何体现到领域的实现中,代码中的一些 Bug或瑕疵不用太过理会。 在DDD.Doman项目中实现相应的聚合根、实体与值对象。 这篇文章主要实现客户的创建,因为通过Model-First已经建立了领域模型,所以我们建立分部类来实现领域对象的业务逻辑部分。 public partial class Customer:AggreateRoot { private IRepository<Cus
用户1910585
2018-05-11
6360
领域驱动设计案例之仓储顶层实现
在业务中,我们会涉及到对象的创建、重建、更新、销毁等操作,这些操作通常需要持久化到数据库中,我们通过仓储来实现对数据的访问 1.首先我们要实现仓储上下文,仓储上下文主要是维护一些创建、更新、销毁的对象列表,未来可以实现批量持久化,从而保持多实体与多聚合的事务,从而实现内部一致性和外部一致性: using Order.Domain.Aggreate; using Order.Domain.Repository; using System; using System.Collections.Generic; u
用户1910585
2018-05-11
1.1K0
14-TypeScript简单工厂模式
在TypeScript中,要调用功能,通常在调用方通过实例化被调用方对象来调用相关方法,但这种实现在调用方和被调用方形成了强耦合的关系。 另外如果被调用方有种实现,在调用方需要根据场景去实例化不同的类,造成代码有一定的重复性,而且不够灵活。 简单工厂模式是在调用方与被调用方之间引入了一个工厂类,由这个工厂类根据调用方传递的一些信息来判断具体需要实例化哪个类,从而完成 相应类的方法的调用。下面代码就简单实现了工厂类根据调用方传递的信息,实例化不同的算法类: interface ICompute{ Co
用户1910585
2018-05-04
5940
06-TypeScript中的表达式
TypeScript中提供了箭头表达式,通过箭头表达式可以简化我们的编码。 1.箭头表达式简化匿名函数 在JS中,我们通常使用匿名函数,匿名函数实际上是赋值给一个变量,常见的写法如下: var sunfunc=function (arg1,arg2) { return ar1+arg2; } 可以通过箭头表达式简写匿名函数,如下: var sunfunc=(arg1,arg2)=>arg1+arg2; 如果函数中有多行语句并且后返回值,仍然需要写{}与return语句,如下: var sunfu
用户1910585
2018-05-04
8970
11-TypeScript中的名称空间
在后端开发语言中,比如C#中,可以将不同源代码文件中的代码通过名称空间组合到一起。一般一个类定义在一个源代码文件中,在功能上属于一个上下文的源代码文件通过名称空间进行组织。 在TypeScript中,可以将多个ts文件组织到一个名称空间中,这样调用方就可以使用名称空间和类名完成调用。在TypeScript中,通过module关键字定义名称空间,另外要通过名称空间完成成员 的访问,成员必须指定export关键字。 ts文件一: module Hys{ export class Doctor{
用户1910585
2018-05-04
1K0
DDD实战进阶第一波(八):开发一般业务的大健康行业直销系统(实现经销商上下文领域层之POCO模型)
从这篇文章开始,我们开始介绍大健康行业直销系统领域层的实现。 先简单讲下业务方面的需求:直销系统会有一个顶级的经销商,经销商的基本信息中包括经销商的名字、联系人(因为在平台购买产品后,会寄送给联系人)、总的电子币(电子币是由经销商支付产生, 购买产品后会扣减电子币)、总的奖金币(系统周期性根据经销商购买的东西来确定奖金币,奖金币可以购买东西,也可以提现)、总PV(经销商购买时,会根据购买产品的PV进行累加)、卡的类型(根据经销商初次的电子币确定卡的类型)、子经销商个数(子经销商的注册由父经销商进行,父经销商
用户1910585
2018-05-04
5180
关于领域对象业务逻辑中条件判断的最佳实践
这篇文章其实是大健康行业直销系统的番外篇,主要给大家讲讲如何在领域逻辑中,有效的处理业务逻辑条件判断的最佳实践问题。 大家都知道,聚合根、实体和值对象这些领域对象都自身处理自己的业务逻辑。在业务处理过程中,通常会有一些条件判断,当满足这些条件时,会进行不同的后续处理。在传统的实现中,可以通过If Else条件语句进行判断,但If Else语句在复杂领域中来检查是否满足一些业务条件存在以下的问题: 1.      无法很好的显示表达业务条件本身。 2.      无法对多个条件在不同需要的地方进行灵活的组合。
用户1910585
2018-05-04
1.2K0
DDD实战进阶第一波(七):开发一般业务的大健康行业直销系统(实现产品上下文接口与测试)
前一篇文章我们介绍了如何将创建产品的领域逻辑与产品的持久化仓储通过上架产品的用例组织起来,完成了一个功能。在实际的项目中,多种前端的形态比如PC Web、 微信小程序、原生APP等要调用后端的功能,通常要将后端的功能包装成RESTFUL风格,这样前端就可以使用Http Get或Post方式调用后端的功能,所以这篇文章我们先来完成后端 的Asp.net Core WebApi,通过WebApi将上架产品的功能暴露出去。 实现上下产品接口: [Produces("application/json")]
用户1910585
2018-05-04
7030
DDD实战进阶第一波(六):开发一般业务的大健康行业直销系统(实现产品上下文仓储与应用服务层)
前一篇文章我们完成了产品上下文的领域层,我们已经有了关于产品方面的简单领域逻辑,我们接着来实现产品上下文关于仓储持久化与应用层的用例如何来协调 领域逻辑与仓储持久化。 首先大家需要明确的是,产品上下文的领域逻辑是系统的核心,它不应该依赖仓储,而仓储应该要依赖领域层,这样仓储才可以把领域逻辑执行完后,才可能将 领域对象持久化到数据库中,这一点与传统的架构有本质的区别。 一般我们会在解决方案中建立一个项目,这个项目就是包含了所有聚合的仓储实现,具体不同上下文的仓储实现,可以在这个项目下建立不同的文件夹。 1.产
用户1910585
2018-05-04
5490
DDD实战进阶第一波(五):开发一般业务的大健康行业直销系统(实现产品上下文领域层)
从这篇文章开始,我们根据前面的DDD理论与DDD框架的约束,正式进入直销系统案例的开发。 本篇文章主要讲产品上下文中的领域层的主要实现,先简单讲下业务方面的需求:产品SPU与产品SKU,产品SPU主要
用户1910585
2018-05-04
1.1K0
01-JavaScript之变量
这个系列的文章主要讲解JavaScript的常见用法,适合于初中级的前端开发人员,也可以对比TypeScript的系列文章来看。 先介绍JavaScript的变量与常见变量的函数,代码如下: //变量常用函数 var i=3.1415926; var ipoint2=i.toFixed(2); console.log("小数点后取两位:"+ipoint2); var i2=i.toPrecision(2); console.log("总共取两位:",i2); var i3=3.9; console.log(
用户1910585
2018-05-04
6190
企业级业务系统开发实战-序言
前些年一直在做微软的解决方案实施与软件开发的工作。在学习、项目实施、开发与管理的过程中学到了别人不少好的东西,也自身总结了大量的经验,希望能够通过一个系列来跟大家分享关于软件开发方面的内容。 这个开发系列的由来是这样的,两年前作为一个软件公司的技术总监,完成了一个企业的ERP系统开发,我在这个项目中担当了架构师的角色,主要负责核心技术架构搭建与业务建模的工作。这个系统的规模达到13个人12个月,涉及到企业的各个方面,包括客户关系管理、销售管理、采购管理、项目管理、财务管理、行政与人力资源管理等,业务流程70
用户1910585
2018-05-04
9040
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档