DDD~领域事件应用篇(订单处理变得更清晰)
上一讲主要说了领域事件和领域总线,这并不是一个很容易理解的文章,所以本讲实例篇主要是为了补充上一讲的理论知识,本讲实例关注的是实际中的订单处理模块,我们知道,订单处理是电子商务的核心,往往在这里面,会有很多逻辑,在开发时,给我们带来了不少的难度,如何更好的分离关注点,是本讲的主题;本讲主要是修改订单状态后,为用户发通知为例,来以此更好的说一下领域事件在实际中的作用。
前言 领域事件使用的设计模式是发布/订阅模式,或者叫观察者模式。
一 订单的几种状态,在订单进入到其中一些状态时,需要通知用户
public enum OrderStatus
{
/// <summary>
/// 表示销售订单的已创建状态 - 表明销售订单已被创建(未用)。
/// </summary>
[Description("用户下单")]
Created = ,
/// <summary>
/// 订单被用户取消
/// </summary>
[Description("取消订单")]
Canceled,
/// <summary>
/// 表示销售订单的已付款状态 - 表明客户已向销售订单付款。
/// </summary>
[Description("用户付款")]
Paid,
/// <summary>
/// 表示销售订单的已发货状态。
/// </summary>
[Description("已经发货")]
Dispatched,
/// <summary>
/// 订单已经完成
/// </summary>
[Description("订单完成")]
Finished, }
二 为需要通知的状态,创建领域事件数据源(原来在.net事件里,它一般是EventArgs对象)
/// <summary>
/// 订单已经确认事件源
/// </summary>
public class Order_Confirm_Event : Project.Events.EventBase
{
public int OrderId { get; set; }
public string UserName { get; set; }
}
/// <summary>
/// 订单已经付款事件缘
/// </summary>
public class Order_Paid_Event : Project.Events.EventBase
{
public int OrderId { get; set; }
public string UserName { get; set; }
public decimal TotalPrice { get; set; }
}
/// <summary>
/// 订单已经发货事件源
/// </summary>
public class Order_Dispatch_Event : Project.Events.EventBase
{
public int OrderId { get; set; }
public string UserName { get; set; }
}
三 为这些事件源添加事件处理方式
我们一般理解为“行为”,一种事件源可以有多种事件行为,如一个订单付款事件源,它可以同时有电子邮件行为和短信行为;反之,一个事件处理方式也可以对应多个事件源,如一个电子邮件行为,它可以同时对应订单付款
和订单发货等事件源,所以,领域事件在项目中是非常灵活的。
/// <summary>
/// 发Email的事件处理方式
/// 调用方法:EventBus.Instance.Subscribe<User_Depts_Event>(new SendEmailEventHandler())
/// EventBus.Instance.Subscribe<User_Roles_Event>(new SendEmailEventHandler())
/// </summary>
public class SendEmail_EventHandler :
IEventHandler<Order_Confirm_Event>,
IEventHandler<Order_Dispatch_Event>,
IEventHandler<Order_Paid_Event>
{
static string prefix = "本消息来自电子邮件"; #region IEventHandler<Order_Confirm_Event> 成员 public void Handle(Order_Confirm_Event evt)
{
Logger.Core.LoggerFactory.Instance.Logger_Info(string.Format("尊敬的客户{0},你的订单已经确认,订单号{1},请尽快付款!({2})[{3}]"
, evt.UserName
, evt.OrderId
, evt.EventDate
, prefix));
} #endregion #region IEventHandler<Order_Dispatch_Event> 成员 public void Handle(Order_Dispatch_Event evt)
{
Logger.Core.LoggerFactory.Instance.Logger_Info(string.Format("尊敬的客户{0},你的订单已经发货,订单号{1},请注意查收!({2})[{3}]"
, evt.UserName
, evt.OrderId
, evt.EventDate
, prefix)); } #endregion #region IEventHandler<Order_Paid_Event> 成员 public void Handle(Order_Paid_Event evt)
{
Logger.Core.LoggerFactory.Instance.Logger_Info(string.Format("尊敬的客户{0},你的订单已经成功付款,订单号{1},付款金额为{2}元,我们会尽快安排发货!({3})[{4}]"
, evt.UserName
, evt.OrderId
, evt.TotalPrice
, evt.EventDate
, prefix));
} #endregion
}
/// <summary>
/// 发短信的事件处理方式
/// </summary>
public class SendSMS_EventHandler :
IEventHandler<Order_Confirm_Event>,
IEventHandler<Order_Dispatch_Event>,
IEventHandler<Order_Paid_Event>
{
static string prefix = "本消息来自短信"; #region IEventHandler<Order_Confirm_Event> 成员 public void Handle(Order_Confirm_Event evt)
{
Logger.Core.LoggerFactory.Instance.Logger_Info(string.Format("尊敬的客户{0},你的订单已经确认,订单号{1},请尽快付款!({2})[{3}]"
, evt.UserName
, evt.OrderId
, evt.EventDate
, prefix));
} #endregion #region IEventHandler<Order_Dispatch_Event> 成员 public void Handle(Order_Dispatch_Event evt)
{
Logger.Core.LoggerFactory.Instance.Logger_Info(string.Format("尊敬的客户{0},你的订单已经发货,订单号{1},请注意查收!({2})[{3}]"
, evt.UserName
, evt.OrderId
, evt.EventDate
, prefix)); } #endregion #region IEventHandler<Order_Paid_Event> 成员 public void Handle(Order_Paid_Event evt)
{
Logger.Core.LoggerFactory.Instance.Logger_Info(string.Format("尊敬的客户{0},你的订单已经成功付款,订单号{1},付款金额为{2}元,我们会尽快安排发货!({3})[{4}]"
, evt.UserName
, evt.OrderId
, evt.TotalPrice
, evt.EventDate
, prefix));
} #endregion
}
四 订阅领域事件
我们需要有一个入口来订阅领域事件,如订阅订单确认事件,订单付款事件等,简单的做法是在global里统一注册,而标准合理的作法,我觉得应该在订单controller的静态构造方法里去注册它,因为只有用户操作订单相关模块时,才可能触
发订单这些事件!
/// <summary>
/// 类的构造方法,处理与具体实例无法的东西
/// </summary>
static OrderController()
{
#region 订阅相关领域事件 #region 订阅发email处理方式
EventBus.Instance.Subscribe<Order_Confirm_Event>(new SendEmail_EventHandler());
EventBus.Instance.Subscribe<Order_Dispatch_Event>(new SendEmail_EventHandler());
EventBus.Instance.Subscribe<Order_Paid_Event>(new SendEmail_EventHandler());
#endregion #region 订阅发短信的处理方式
EventBus.Instance.Subscribe<Order_Confirm_Event>(new SendSMS_EventHandler());
EventBus.Instance.Subscribe<Order_Dispatch_Event>(new SendSMS_EventHandler());
EventBus.Instance.Subscribe<Order_Paid_Event>(new SendSMS_EventHandler());
#endregion #endregion
}
我们看到了,每种订单事件源都被注册了电子邮件和短信两种事件处理方式,这在对应的事件被触发(发布,publish)之后,它们会被执行。
六 触发具体事件
具体的事件在具体的方法里,独立的去触发,一般它会在业务逻辑层完成
/// <summary>
/// 用户下单:create
/// </summary>
/// <param name="entity"></param>
public void DoOrder(Order_Info entity)
{
entity.OrderStatus = (int)OrderStatus.Created;
_orderRepository.Insert(entity);
entity.Order_Detail.ToList().ForEach(j => j.OrderId = entity.Id);
_orderDetailRepository.Insert(entity.Order_Detail);
EventBus.Instance.Publish(new Order_Confirm_Event { OrderId = entity.Id, UserName = entity.UserName });
} /// <summary>
/// 订单付款:paid
/// </summary>
/// <param name="entity"></param>
public void PaidOrder(Order_Info entity)
{
entity.OrderStatus = (int)OrderStatus.Paid;
_orderRepository.Update(entity);
EventBus.Instance.Publish(new Order_Paid_Event { OrderId = entity.Id, TotalPrice = entity.TotalPrice, UserName = entity.UserName });
} /// <summary>
/// 订单发货:dispatch
/// </summary>
/// <param name="entity"></param>
public void DispatchOrder(Order_Info entity)
{
entity.OrderStatus = (int)OrderStatus.Dispatched;
_orderRepository.Update(entity);
EventBus.Instance.Publish(new Order_Dispatch_Event { OrderId = entity.Id, UserName = entity.UserName });
}
八 最后,我们看一下处理处理页面和结果的截图
aaarticlea/png;base64,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" alt="" />
生成的日志
aaarticlea/png;base64,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" alt="" />
生成的日志内容,类似于用户上到的电子邮件或者短信的内容
aaarticlea/png;base64,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" alt="" />
怎么样,看完这个例子相信您对领域事件有了更清晰的认识了吧,呵呵!
DDD~领域事件应用篇(订单处理变得更清晰)的更多相关文章
- DDD~领域事件中使用分布式事务
回到目录 对于一个聚合来说,它可能会被附加很多事件,这里我们叫它领域事务,因为一个聚会我们可以把它理解成一个领域,一个业务.对于领域事件不清楚的同学可以看看我的这篇文章<DDD~领域事件与事件总 ...
- DDD领域事件与事件总线源码下载
最近在看领域事件的文章.看到了“张占岭”的<DDD~领域事件与事件总线> 原文地址:http://www.cnblogs.com/lori/p/3476703.html 遗憾的是没有提供下 ...
- DDD~领域事件与事件总线
回到目录 谈谈它 终于有些眉目了,搜刮了很多牛人的资料,英文的,中文的,民国文的,终于小有成就了,同时也做了个DEMO,领域事件这东西好,但需要你明白它之后才会说好,而对于明白领域事件这件事来说,它的 ...
- 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展
阅读目录 前言 回顾 本地的一致性 领域事件发布出现异常 订阅者处理出现异常 结语 一.前言 上篇中我们初步运用了领域事件,其中还有一些问题我们没有解决,所以实现是不健壮的,下面先来回顾一下. 二.回 ...
- DDD理论学习系列(9)-- 领域事件
DDD理论学习系列--案例及目录 1. 引言 A domain event is a full-fledged part of the domain model, a representation o ...
- Lind.DDD.Events领域事件介绍
回到目录 闲话多说 领域事件大叔感觉是最不好讲的一篇文章,所以拖欠了很久,但最终还是在2015年年前(阴历)把这个知识点讲一下,事件这个东西早在C#1.0时代就有了,那时学起来也是一个费劲,什么是委托 ...
- DDD领域驱动之干活(四)补充篇!
距离上一篇DDD系列完结已经过了很长一段时间,项目也搁置了一段时间,想想还是继续完善下去. DDD领域驱动之干货(三)完结篇! 上一篇说到了如何实现uow配合Repository在autofac和au ...
- DDD领域驱动之干货(四)补充篇!
距离上一篇DDD系列完结已经过了很长一段时间,项目也搁置了一段时间,想想还是继续完善下去. DDD领域驱动之干货(三)完结篇! 上一篇说到了如何实现uow配合Repository在autofac和au ...
- 领域驱动模型DDD(二)——领域事件的订阅/发布实践
前言 凭良心来说,<微服务架构设计模式>此书什么都好,就是选用的业务过于庞大而导致代码连贯性太差,我作为读者来说对于其中采用的自研框架看起来味同嚼蜡,需要花费的学习成本实在是过于庞大,不仅 ...
随机推荐
- 通过Guid获取DirectoryEntry对象
绑定DirectoryEntry对象通常有两种方法,一种是通过字符串(如通过ADsPath),一种是通过Guid(参见:http://msdn.microsoft.com/zh-cn/library/ ...
- 图片轮播 js代码
<script type="text/javascript"> //图片轮换 $(function () { //------------------ var sWid ...
- lua 位运算
bit = {data32={}} , do bit.data32[i] = ^(-i) end function bit:d2b( arg ) local num = tonumber( arg ) ...
- http状态码全解
1**(信息类):表示接收到请求并且继续处理 100--客户必须继续发出请求 101--客户要求服务器根据请求转换HTTP协议版本 2**(响应成功):表示动作被成功接收.理解和接受 200--表明该 ...
- Redis多机常用架构-sentinel
哨兵经典架构 sentinel结构 哨兵工作原理 Sentinel 通过配置文件发现Master,如下: Sentinel 通过向Master发送 INFO 命令来自动获得所有Slave的地址 跟Ma ...
- 利用office2000组件进行填充打印报不支持集合。 (Exception from HRESULT: 0x80020011 (DISP_E_NOTACOLLECTION))
环境:win2008 64位+.net4.0 +office2000 错误提示: 不支持集合. (Exception from HRESULT: 0x80020011 (DISP_E_NOTACOLL ...
- 「2014-2-23」Note on Preliminary Introduction to Distributed System
今天读了几篇分布式相关的内容,记录一下.非经典论文,非系统化阅读,非严谨思考和总结.主要的着眼点在于分布式存储:好处是,跨越单台物理机器的计算和存储能力的限制,防止单点故障(single point ...
- iOS进阶_三方使用步骤
一.配置环境(:后为在终端输入的命令) 打开终端 查看自己电脑的Ruby环境:gem sources -l 如果环境已经是淘宝镜像了,此时不需要再进行环境的修改. 如果不是,发送gem sources ...
- select 取的是session里面的值时
原来是写了一个select标签,然后用js循环取出来,发现问题是本来嵌在页面右边的页面整个弹出来, 后来改成html:optionsCollection就好了: 效果图:
- ubuntu安装日文分词软件MeCab及其Python插件
1.从官网上下载三个包: http://taku910.github.io/mecab/ mecab-0.996 mecab-0.996.tar.gz mecab-ipadic-2.7.0-20070 ...