具有事件源的领域驱动设计的简单、不变的功能模型

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,这是很有道理的,即使没有 认为它是可通过的企业级软件。我认为它是出生地 项目发起人。

为什么叫“dvent”?

一个extremeportmanteau的:

obilgatorynaming things是硬引用;)

特别感谢

  • Discogs还有我的团队成员(你知道你是谁)!
  • 优秀的pyrsistent库,使得在 python几乎和clojure中一样快乐
  • Greg Young因为他有很多有用的谈话、帖子等,其中大部分都是关于这个的 库的模式
  • Rich Hickey和更广泛的Clojure社区 构建实用、不变、实用的解决方案

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在reducer中迭代自定义可写组件时出现java问题   属性文件中属性的java命名约定   任务链关闭的java Executor服务   java从Eclipse中的字段生成多个构造函数   java通过继承读取Json   java在不知道密钥的情况下解析json   java camel cxf如何在电子邮件中发送soap请求响应   java程序似乎跳过了if语句的一部分,在移回正确位置之前先移到else语句   测试简单的Java加密/解密inputFileName不存在   java从Jenkins REST API获取所有作业的所有构建的构建细节   java基本包装器和静态“类型”类对象   在WebSphere8.5上部署java代码   java对象相等(对象引用“=”)   java MongoDB整型字段到枚举的转换   每次我重新导入gradle时,IntelliJ都会不断重置Java设置   类型使用键或索引从Java中的数据类型检索值   在Java的列表接口中需要listIterator()和iterator()是什么?