具有事件源的领域驱动设计的简单、不变的功能模型
dvent的Python项目详细描述
dvent是一组简单的、不可变的、功能性的模型和工具 旨在支持Domain Driven Design(ddd)并作为 在CQRS/Event sourcing架构模式中的真实数据模型的源。
安装
pip install dvent
dvent是
- 库
- 用于构建丰富解决方案的一组工具,而不是用于 可以很容易地应用于一个现存的问题。它旨在引导你的发展 具有健壮性、简单性、可扩展性、易于推理和易于 去测试。而对事件建模的方式却固执己见 编排—实现该模型仍取决于您。
- 最小值
- 只包括必要的,而不包括不必要的; 便于扩展和合成
- 简单
- 目标是简单而不是易用;这通常表现在 具有一致命名、松散耦合、组合和无“魔力”的显式代码
- 不可变
- 在库的帮助下,所有数据结构和 模式遵循并加强不变的最佳实践;因此 转换需要重新分配和所有实体(事件、命令, 聚合)是散列的。
- 功能性
- 在保留 对于熟悉更经典的python习惯用法的开发人员来说是可以接近的。
- 完全指定和测试
- dvent是用ddd本身开发的,其特点是 小黄瓜的特征。长期计划包括 同一规格的语言。
- 测试版软件
- 当dvent当前在企业级设置中使用时,它仍然是 作为beta软件提供,直到进一步扩展和一致性保证 已测试。
dvent不是
- 框架 dvent没有实现“真实世界”或实际的数据持久性,因为它 对你的问题域一无所知它不会试图提供 解决方案。相反,它旨在指导您开发健壮的模型, 简单,可扩展,易于推理,易于测试。为了更多的东西 全功能和“开箱即用”看看优秀的文档 eventsourcing实现许多相同(或更多)模式的项目。
用法
即将推出-现在请查看示例笔记本!
探索
dvent包括通过docker映像与Jupyter项目集成。要使用笔记本,您需要Docker版本17.09.0+
,并且可以简单地运行
DVENT_JUPYTER_TYOKEN=<password-or-token-value> docker-compose up -d dvent-notebook
注意:这将下载并生成可能需要良好Internet连接的图像
然后在浏览器中访问your personal notebook,输入 密码/令牌从上面,浏览到“笔记本”文件夹,并打开任何你喜欢的。
测试
所有测试目前都是通过behave和小黄瓜特性文件完成的。运行测试
您可以通过docker-compose run --rm dvent-test
使用Docker套件
为什么要做“dvent”?
我在Discogs领导一个团队,建立一个新的“绿地”项目,需要一个基本的
一组事件源模型,这些模型是不可变的,与实现无关
详细信息,并启用基本功能模式。我找不到这么好的东西
符合需要,所以我在一个紧张的周末做了一个
自发布0.1.0
(2018年5月)起超过15个月的任何重大修改。
没有Discogs我就永远不会写dvent,这是很有道理的,即使没有 认为它是可通过的企业级软件。我认为它是出生地 项目发起人。
特别感谢
- Discogs还有我的团队成员(你知道你是谁)!
- 优秀的pyrsistent库,使得在 python几乎和clojure中一样快乐
- Greg Young因为他有很多有用的谈话、帖子等,其中大部分都是关于这个的 库的模式
- Rich Hickey和更广泛的Clojure社区 构建实用、不变、实用的解决方案