惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
罗磊的独立博客
雷峰网
雷峰网
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
B
Blog RSS Feed
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
D
Docker
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
小众软件
小众软件
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
S
SegmentFault 最新的问题

博客园 - netfocus

IM即时通信软件设计 DDD中的聚合和UML中的聚合以及组合的关系 对关系建模 DDD战略设计相关核心概念的理解 DDD领域建模基本流程 谈谈Paxos一致性算法和一致性这个名词 EventStore文件存储设计 DDD领域驱动设计 - 设计文档模板 调漂技巧总结 EQueue 2.3.2版本发布(支持高可用) 使用ENode框架前您需要了解的东西(初稿) 各协议授权详情 BIO\NIO\AIO记录 - netfocus - 博客园 限流的三个思路 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路 浅谈我对DDD领域驱动设计的理解 【转载】高并发的核心技术-幂等的实现方案 ENode 2.8 最新架构图简介 三种减库存方式
邮箱核心业务领域建模
netfocus · 2019-07-04 · via 博客园 - netfocus

邮箱核心业务场景:

  • 发邮件
  • 收邮件
  • 查看邮件

邮箱业务我们关注的核心信息

  • 草稿箱
  • 收件箱
  • 已发送邮件
  • 未读邮件
  • 重要邮件
  • 垃圾邮件
  • 已删除邮件

核心领域模型文字版

共2个模型,如下:

邮件(Mail,聚合根):

  • ID
  • 标题
  • 内容
  • 附件
  • 是否重要:是、否
  • 发送人邮箱地址
  • 收件人邮箱地址列表(支持多个,逗号隔开)
  • 创建时间
  • 最后更新时间
  • 发送时间
  • 状态:草稿、已发送

支持场景:创建邮件存为草稿、发送邮件、查看草稿邮件、查看已发送邮件、删除邮件

=================================================

已接收邮件(ReceivedMail,聚合根):

  • ID
  • 标题
  • 内容
  • 附件
  • 发件人邮箱地址
  • 收件人邮箱地址(单个收件人)
  • 原始收件人邮箱地址列表(发送邮件时填写的收件人列表,逗号隔开,该信息只用于信息查看,当我们要查看这封邮件是发送给哪些人的时候用)
  • 是否已读:是、否
  • 是否重要:是、否
  • 是否删除:是、否
  • 是否垃圾邮件:是、否
  • 接收时间

支持场景:接收邮件、删除邮件、标记邮件各种属性、查看邮件:已接收、是否已读、是否重要、是否删除、是否垃圾邮件

关于邮件投递过程

除了发送邮件、接收邮件外,应该还有一个投递邮件的过程。投递邮件可以由一个独立的投递服务来完成。投递服务负责将当前邮件按照收件人邮箱地址,一个个进行投递,每个收件人邮箱都会收到一个邮件的消息,该消息包含了已发送邮件的所有信息。邮件接收服务可以为每个收件邮箱接收邮件,针对每个接收邮箱地址,new一个ReceivedMail聚合根对象,持久化即可。