对于一个聚合来说,它可能会被附加很多事件,这里我们叫它领域事务,因为一个聚会我们可以把它理解成一个领域,一个业务。对于领域事件不清楚的同学可以看看我的这篇文章《DDD~领域事件与事件总线》,里面有详细的说明,今天主要说一下领域里的事务,即领域事件的数据处理和主逻辑里的数据处理在同一事务里完成。

知识准备

SQL2005环境使用TransactionScopeNoMsdtc事务,它是占占开发的,原理是将一批操作包裹到一个SqlConnection里,由开发者维护接连的关闭,这也是使用时要特别注意的地方,因为如果不关闭连接,SQL链接池会益出。

SQL2008环境使用微软自己的分布式事务实现TransactionScope,它对于同一个上下文来说,是不会被提升为分布式事务的,这一点对SQL2005要强很多。

代码实践

///

/// 添加WebSystem表时,所需要的事件对象

///

[Serializable]

public class WebSystemCreateEvent : EventBase

{

///

/// 数据上下文,它与架构无关,可以是Linq2Sql,EF,ADO.NET

///

public IUnitOfWork UnitOfWork { get; set; }

///

/// 对象主键

///

public int ID { get; set; }

}

[HttpPost]

public ActionResult WebSystem(FormCollection form)

{

//订阅领域事件

EventBus.Instance.Subscribe(i =>

{

var entity1 = new DbContextRepository(i.UnitOfWork).Find(i.ID);

entity1.WebSystemName = entity1.WebSystemName + "更新了";

new DbContextRepository(i.UnitOfWork).Update(entity1);

});

IUnitOfWork UnitOfWork = new backgroundEntities1();

var db = new DbContextRepository(UnitOfWork);

using (TransactionScope trans = new TransactionScope())

{

var entity = new WebSystem

{

Info = form["Info"],

Status = Convert.ToInt32(form["Status"]),

WebSystemName = form["WebSystemName"]

};

db.Insert(entity);

//发布领域事务

EventBus.Instance.Publish(new WebSystemCreateEvent

{

ID = entity.WebSystemID,

UnitOfWork = UnitOfWork,

});

trans.Complete();

}

return RedirectToAction("WebSystemList");

}

SQL截图

TransactionScopeNoMsdtc截图

TransactionScope截图

本地WWW网站服务器的MSDTC为禁用状态

aaarticlea/png;base64,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" alt="" />

ABP在领域事件中异步调用方法抛异常

在领域事件中调用UserRegistrationManager.RegisterAsync抛异常 Call UserRegistrationManager.RegisterAsync() throw ...

DDD领域事件与事件总线源码下载

最近在看领域事件的文章.看到了“张占岭”的 原文地址:http://www.cnblogs.com/lori/p/3476703.html 遗憾的是没有提供下 ...

DDD~领域事件应用篇(订单处理变得更清晰)

回到目录 上一讲主要说了领域事件和领域总线,这并不是一个很容易理解的文章,所以本讲实例篇主要是为了补充上一讲的理论知识,本讲实例关注的是实际中的订单处理模块,我们知道,订单处理是电子商务的核心,往往在 ...

SpringBoot多数据源中的分布式事务

虽然现在微服务越来越流行,我们的系统随之也拆分出来好多的模块功能.这样做的目的其实就是为了弥补单体架构中存在的不足.随着微服务的拆分,肯定设计到分库分表,但这之中肯定设计到分布式事务.最典型的例子就是 ...

DDD~领域事件与事件总线

回到目录 谈谈它 终于有些眉目了,搜刮了很多牛人的资料,英文的,中文的,民国文的,终于小有成就了,同时也做了个DEMO,领域事件这东西好,但需要你明白它之后才会说好,而对于明白领域事件这件事来说,它的 ...

Sql Server中启用分布式事务小结

1.web服务器与数据库服务器同时启动msdtc服务 2. 2台服务器做出如下配置: 控制面板->管理工具->组件服务->计算机->我的电脑->本地DTC .Net示例: ...

.NET Core 事件总线,分布式事务解决方案:CAP

背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...

.NET Core 事件总线,分布式事务解决方案:CAP 基于Kafka

背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...

【转】.NET Core 事件总线,分布式事务解决方案:CAP

[转].NET Core 事件总线,分布式事务解决方案:CAP 背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用 ...

随机推荐

perl 删除过期文件

#!/usr/bin/perl `find /bak/ >list.txt`; open LIST,"/root/list.txt"; while ( ...

Java SE、Java EE、Java ME

Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程序.J ...

Java事务处理全解析(四)—— 成功的案例(自己实现一个线程安全的TransactionManager)

在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的.在本篇文章中,我们将引入另外 ...

Redis操作+python

自动化接口测试中需要向redis中插入测试数据: 1. 连接redis: import redisself.r = redis.StrictRedis(host=env.REDIS_HOST, por ...

asp开发微信扫码支付

这个任务已经给了.现在正在学习开发中.主要注意的是2点. 1:返回参数的验证. 2:通知后业务处理和处理后返回财付通.大部分操作,api中已经处理好. 现在需要的业务逻辑部分. 需要正确3个参数  r ...

js四舍五入

7-13 向上取整ceil() 7-14 向下取整floor() 7-15 四舍五入round() 7-16 随机数 random()

View以自身中心旋转的代码解惑

matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); 经常在中心旋转的应用中看到这段代码. ...

javascript 生成页面轮播元素

优化Java堆大小5温馨提示

总结:Java没有足够的堆大小可能会导致性能非常大的影响,这无疑将给予必要的程序,并不能带来麻烦.本文总结了影响Java居前五位的能力不足,并整齐地叠优化? 笔者Pierre有一个10高级系统架构师有 ...

day 15递归 匿名函数

三元表达式 目的是简化书写 局限性:三元表达式智能简化仅有两个分支的if判断,而且这个判断无论是否成立都必须要返回值 res = True if age >=18 else False 递归: ...

计算机nemurt.dll,DDD~领域事件中使用分布式事务相关推荐

  1. DDD~领域事件中使用分布式事务

    对于一个聚合来说,它可能会被附加很多事件,这里我们叫它领域事务,因为一个聚会我们可以把它理解成一个领域,一个业务.对于领域事件不清楚的同学可以看看我的这篇文章<DDD~领域事件与事件总线> ...

  2. DDD~领域事件与事件总线

    DDD~领域事件与事件总线 回到目录 谈谈它 终于有些眉目了,搜刮了很多牛人的资料,英文的,中文的,民国文的,终于小有成就了,同时也做了个DEMO,领域事件这东西好,但需要你明白它之后才会说好,而对于 ...

  3. seata 如何开启tcc事物_如何能在实战中完成分布式事务?知道这些点很重要

    在这篇文章中我详细介绍了分布式事务是什么,实现分布式事务有哪些常用的方案,但是其中的东西很多是偏于理论,很多读者对其真正在实战上的使用可能还是有点差距.所以在前几次文章的更新中,我介绍了很多关于Sea ...

  4. 初探Octopus中的分布式事务

    Octopus中的分布式事务 写在前面:Octopus中的分布式事务设计都在TxManager.cpp中,结合log,相当于把分布式事务的阶段分开实现,比如提交,准备等等,因此需要结合实际的例子来看, ...

  5. java ddd 领域事件_Cribbb基于DDD/Domain Event领域事件的开源PHP通知系统

    Cribbb是一个使用DDD聚合根和领域事件Domain Events概念开发的PHP开源通知框架:cribbb/cribbb · GitHub 几乎所有Web应用都有一个通知提醒系统,这些通知系统都 ...

  6. 使用Seata彻底解决Spring Cloud中的分布式事务问题!

    摘要 Seata是Alibaba开源的一款分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务,本文将通过一个简单的下单业务场景来对其用法进行详细介绍. 什么是分布式事务问题? 单体应用 单 ...

  7. seata xid是什么_使用Seata彻底解决Spring Cloud中的分布式事务问题!

    Seata是Alibaba开源的一款分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务,本文将通过一个简单的下单业务场景来对其用法进行详细介绍. 什么是分布式事务问题? 单体应用 单体应用 ...

  8. 在.net 2.0 中执行分布式事务:隐式事务篇(SQL Server 与 Oracle)

    项目涉及到多个数据库的查询更新操作,也就必然需要分布式事务的支持,查了MSDN知道 .net 2.0 中利用新增的 System.Transactions 命名空间可以简单的实现分布式事务: Syst ...

  9. java项目的事务怎么处理_java实际项目中如何处理分布式事务的

    分布式事务的解决方案(介绍其中三种) 两阶段提交协议(2PC) 为解决分布式系统的数据一致性问题出现了两阶段提交协议(2 Phase Commitment Protocol),两阶段提交由协调者和参与 ...

  10. 一文详解 SpringBoot 多数据源中的分布式事务

    作者 | 小涛 责编 | maozz 虽然现在微服务越来越流行,我们的系统随之也拆分出来好多的模块功能.这样做的目的其实就是为了弥补单体架构中存在的不足. 随着微服务的拆分,肯定设计到分库分表,但这之 ...

最新文章

  1. MyBatis批量插入几千条数据慎用foreach
  2. mysql触发器菜鸟_mysql触发器学习
  3. 第五周 1 素数和(5分)
  4. 讲讲排序(C++描述 )
  5. SpringBoot @PostConstruct和@PreDestroy使用详解
  6. QT的QCommandLineOption类的使用
  7. exchange 2010 relay设定
  8. 打开一个页面,并监听该页面的关闭事件
  9. Sakai Demo搭建及遇到的问题汇总
  10. 解决spring5与thymeleaf版本冲突的问题
  11. wake on lan 实现远程开机(远程开关机程序)
  12. ps图像放大后变清晰和文字模糊变清晰
  13. Bugzilla的快速入门指南(全网最详细)
  14. Xilinx Xio控制sdr sdram
  15. 3060ti适配的cuda和cudnn
  16. wireshark提示未启动npf服务The NPF driver isn’t running You may have trouble capturing or listing interfaces
  17. 【MFC】基于OpenCV的魔镜
  18. 新息自适应卡尔曼滤波matlab代码,基于新息协方差的自适应渐消卡尔曼滤波器
  19. uniapp适配pc_uni-app支持PC版!
  20. zynq linux如何使用pl ip,ZYNQ+linux网口调试笔记(3)PL-ETH

热门文章

  1. 【第005问 Unity中如何显示三角形中心法线?】
  2. 关于曼哈顿距离的最小生成树 POJ3241
  3. HTML+CSS练习——实现京东登录静态页面
  4. 【Unity】Unity 几何知识、弧度、三角函数、向量运算、点乘、叉乘
  5. SQLServer -ServiceBroker
  6. SVM支持向量机,函数间隔为什么取1
  7. 关于ubuntu上,usb设备编号
  8. 阿里巴巴店铺的所有商品API接口(item_search_shop-获得店铺的所有商品接口),阿里巴巴API接口
  9. 51单片机点亮LED灯、流水灯
  10. 计算机网络各层设备及作用