phpnow 新建网站枣强网站建设

web/2025/10/3 9:48:54/文章来源:
phpnow 新建网站,枣强网站建设,网站备案个人和企业的区别,wordpress插件和主题区别连续写了两篇文章#xff0c;这一篇我想是序的完结篇了。结合用户注册的例子再将他简单丰富一下。在这里只添加一个简单需求#xff0c;就是用户注册成功后给用户发一封邮件。补充一下之前的代码 public class DomainService {public void Register(User user){if (_userRepo…连续写了两篇文章这一篇我想是序的完结篇了。结合用户注册的例子再将他简单丰富一下。在这里只添加一个简单需求就是用户注册成功后给用户发一封邮件。补充一下之前的代码 public class DomainService {public void Register(User user){if (_userRepository.IsLoginIdExist(user.LoginId)) {throw new Exception(用户名已存在);}_userRepository.Add(user);MailService.Send(user.Email, 邮件内容);} } 上面的代码是存在一点问题的了解DDD的人都知道此时user并没有持久化或者持久化是否成功是不确定的假设此时持久化user失败了但邮件却发送出去了这显然不是我们想要的结果。怎么办我能想到的是两种办法。 第一种创建一个发送邮件的model。 public class MailMessage {public MailMessage(string receiver, string content){this.Receiver receiver;this.Content content;}public string Receiver { get; private set; }public string Content { get; private set; } }public class DomainService {public void Register(User user){if (_userRepository.IsLoginIdExist(user.LoginId)) {throw new Exception(用户名已存在);}_userRepository.Add(user);_mailRepository.Add(new MailMessage(user.Email, 邮件内容));} } 在添加用户的时候同时添加一条邮件消息这样他们将会在同一个事务中要么一起成功要么一起失败。最后再设计个计划任务从邮件记录表中取出记录依次发送邮件发送成功的可以标记一下至于怎么做就不细讲了。   第二种就是这一篇我要介绍的使用事件。 public class UserRegistered : IEvent {public UserRegistered(string name, string email){this.Name name;this.Email email;}public string Name { get; private set; }public string Email { get; private set; } }public class UserRegisteredHandler : IEventHandlerUserRegistered {public void Handle(UserRegistered event){//TODO.. 发送邮件 } }public class User : IEventPublisher {private readonly IListIEvent _uncommittedEvents new ListIEvent();IEnumerableIEvent IEventPublisher.Events{get { return this._uncommittedEvents; }}public User(string name, string password, string email){this.Name name;this.Password password;this.Email email;_uncommittedEvents.Add(new UserRegistered(name, email));}public string Name { get; private set; }public string Password { get; private set; }public string Email { get; private set; } } 这样用户注册会产生一个事件。持久化成功后会将事件发布出去这样EventBus就会监听并处理此事件。上面的代码可能阅读理解起来不是那么的直白具体的实现起来也并非就这么简单只是提出一种方法。具体实现我的开源代码里也有相关例子https://github.com/imyounghan/thinknet   总结 以上三篇文章我也主要是从写代码的角度去介绍如何DDD强调一下我不是在教你如何写代码只是为了展示用DDD如何实现领域里的模型更应该能表达业务他的价值更并不仅于此。而且以上的描述不一定完全正确也不是告诉你一定要如何做这也需要你自己的思考如果有不对的地方欢迎你的指正毕竟DDD我在学习过程中也能从中受益。 如果我们过多的精力花在如何写代码上可能是收集的工具类库还不强大或者是还没有一个能够方便快捷开发的框架当然一个好的框架带来的好处会很多。一个框架终究是有办法和技术能力去实现完成的但是如何分析和理解业务然后从中挖掘出便于阅读和表达业务的模型确定一件不容易的事情他并不是通过某种技术办法就能实现的。所以我个人觉得设计模型划分界限上下文是需要不断的积累领域业务知识才能做到的。 “领域驱动设计”和“实现领域驱动”这两本书应该是最经典的了知识点也很多阅读此书你会得到更多的收获  转载于:https://www.cnblogs.com/younghan/p/3892598.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人网站wordpress新闻头条最新消息今天发布

在php中,如何判断[1,0,1]和[ [0, 0, 0],//体质正常 [1, 0, 0],//气虚体质 [0, 1, 0],//血瘀体质 [0, 0, 1],//阴虚体质 [1, 1, 0],//气虚兼血瘀体质 [1, 0, 1],//气虚兼阴虚体质 [0, 1, 1],//血瘀兼阴虚体质 [1, 1, 1],//气虚兼血瘀兼阴虚体质 ];中的第n项相等&…

自己做网站新手入门阿里巴巴外贸网站首页

maven常见问题问答 收藏转载于:https://www.cnblogs.com/shl-2012/p/3530548.html

淄博高端网站企业网站注册官网

在Python中,主函数通常指的是脚本的入口点,也就是当你直接运行一个Python脚本时,会首先执行的函数。在大多数Python脚本中,主函数并不是通过main()这样的函数名来定义的,而是通过检查脚本是作为模块导入还是被直接运行…

湖南网站建设 尖端磐石网络软装设计师招聘

golang内存管理基本是参考tcmalloc来进行的。go内存管理本质上是一个内存池,只不过内部做了很多优化:自动伸缩内存池大小,合理切割内存块。 基本概念: Page:页,一块 8 K大小的内存空间。Go向操作系统申请和…

淘客网站如果做优化更新网站要怎么做呢

Unity的渲染管线(Rendering Pipeline)负责将游戏场景转化为可以在屏幕上显示的像素。 Unity 提供以下渲染管线(官方文档的介绍): 内置渲染管线是 Unity 的默认渲染管线。这是通用的渲染管线,其自定义选项…

做电影网站的服务器抖音电商培训

有一张表,id是主键,这样的写法可以返回一条记录:复制代码 代码如下:“SELECT * FROM t HAVING idMIN(id);”但是只是把MIN换成MAX,这样返回就是空了:复制代码 代码如下:“SELECT * FROM t HAVING idMAX(id);”这是为什…

农博园网站建设投标书长春模板网站建设企业

从版本4开始,MongoDB支持 事务。事务是建立在 会话之上的,因此,需要一个活跃的 ClientSession。 除非你在你的应用程序上下文中指定一个 MongoTransactionManager,否则事务支持是 DISABLED(禁用的)。你可以…

如何网站防止采集携程网站建设的意义

客户端测试面临的挑战 难点: 业务复杂,产品多,技术栈多样 测试过程的痛点: 配置-》执行-〉检查-》结果 手工测试前置配置操作极其繁琐:安装测试包-〉进入debug页面-》设置h-〉设置AB test-》锁定rn包-〉进入业务页…

网站推广建设期有什么公司是建设网站的吗

MySQL查询数据 SELECT基本查询 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句,可以做下面的事: 列选择:能够使用 SELECT 语句的列选择功能选择表中的列,这些列是想 要用查询返回的。当查询时&#xf…

海外手表网站济南网站建设工作室

在JavaScript中,可以使用console.time()和console.timeEnd()来控制执行时间的命令。 console.time()用于开始计时,可以指定一个标识符作为参数,用于标识计时器。 console.time(query); // 执行查询操作 console.timeEnd(query); 执行上述代…

站长之家官网入口wordpress 浏览量

目录 引言gRPC:Google的高性能RPC框架gRPC通信流程图 Dubbo:阿里巴巴的微服务治理框架Dubbo服务治理流程图 表格:gRPC与Dubbo的比较结论呼吁行动Excel表格:gRPC与Dubbo特性总结 摘要 在构建分布式系统时,选择合适的服务…

枣阳做网站张家港做企业网站

//带参无返回值 /*注意: 1、 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应 2、 调用方法时,实参不需要指定数据类型 3、 方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型&am…

找it工作有什么好的招聘网站搭建网站的架构

一、术语 中文英文说明地域Region阿里云建设的数据中心。资源创建成功后无法更换地域。可用区Zone同一地域内,电力和网络互相独立的物理数据中心。一个地域下可以有多个可用区。同一地域内可用区之间内网互通并且故障隔离,云服务器 ECS 网络延时低。实例…

注册域名 不建网站河南省工程项目信息公示栏

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本文主要介绍 VAE 模型,主要内容有:VAE 模型的概念、如果下载 VAE 模型、如何安装 VAE 模型、如…

中山制作企业网站海原县建设局网站

孤立森林(IsolationForest)异常检测 IsolationForest[6]算法它是一种集成算法(类似于随机森林)主要用于挖掘异常(Anomaly)数据,或者说离群点挖掘,总之是在一大堆数据中,找出与其它数据的规律不太符合的数据。该算法不采样任何基于聚类或距离的方法,因此他和那些基于距离的的…

网站服务费怎么做分录服装网站栏目调研

1、问题 vim里面如何再文本里面快速跳到下一个空格和上一个空格 2、操作 w是在文本里面快速跳到下一个空格 b是在文本里面快速跳到上一个空格

做个外贸网站一般需要多少钱网店代运营哪里好

引言 在安卓开发中,视图绑定是一个关键的步骤,它允许开发者将布局文件中的视图组件与Activity或Fragment中的成员变量关联起来。这一机制不仅使得UI操作更加便捷,而且提高了开发效率。本文主要探讨了安卓开发中的一项重要技术——View Bindin…

科技公司网站推荐做网站多少分辨率就可以

在SQL中,LEFT()函数是一个字符串函数,用于从一个字符串的左侧开始提取指定数量的字符。这个函数通常接受两个参数: 第一个参数是要从中提取字符的字符串。 第二个参数指定要提取的字符数。 语法如下: LEFT(string_expression,…

房地产网站设计方案app订制开发公司

目录 生成jar文件 方式一:打包成一个总的jar文件 方式二:打包的jar文件和第三方jar文件分开 生成jar文件 打开“文件->项目结构-构建” 点击“”选择“jar->from modules ....” 弹出“从模块创建 jar” 方式一:打包成一个总的jar…

网站哪里做可以做营销任务的网站

通过npm script机制, 在package.json文件中,输入对应的代码,就可以自动化执行相关的函数使用npm run test执行package.json中的内容,因为package.json包含test,所以可行,但是使用npm run compile会报错