Node.js的域驱动devise

我目前正在构build一个基于Node.js微服务的应用程序,我想利用域驱动devise作为构build单个服务的指导原则 。 我有几个问题如下:

  1. 据我所知,域层通常应包含存储库接口,然后应该在您的基础设施层中创build这些接口的具体实现。 这抽象出您的域层的底层存储/技术问题。 在我的项目的上下文中,由于JavaScript本身并不支持像界面这样的东西,因此如何才能实现类似的效果呢?
  2. 其中一项服务特别是通过OAuth处理authentication。 人们通常会将与OAuth相关的逻辑分类为应用程序服务吗? 或者它会属于基础设施层? 我的理解是,这不是与基础设施有关,也不是与核心领域相关,而是作为为客户提供服务的一部分。 因此,我已经把它放在应用程序层。
  3. 从第2点开始,OAuth相关实体/存储库(即代币/客户端)最好放置在哪里? 尽pipe它们在技术上不是企业关心的问题,但我仍然试图将它们与其他实体/存储库一起保留在域层中。

一些注释添加到上面:

  1. 喜欢使用TypeScript(如这里所build议的)。
  2. 我完全意识到,有些人可能认为JavaScript不适合DDDtypes的方法。 我熟悉一些陷阱,再次以DDD为指导。

在一个侧面说明中,我提出了以下项目结构,这个结构受到了Laravel一个基于DDD的项目的巨大启发:

app/ ----app.js ----package.json ----lib/ --------app/ ------------service/ ----------------oauth.js ----------------todo.js --------domain/ ------------list/ ----------------model.js ----------------repository.js ----------------service.js ------------task/ ----------------model.js ----------------repository.js ----------------service.php --------http/ ------------controller/ ----------------list.js ----------------task.js ------------middleware/ ----------------auth.js ----------------error.js --------infrastructure/ ------------db.js ------------logger.js ------------email.js 

我很想听听你对这个布局有什么想法。 我完全知道,项目结构的主题有点基于意见,但我总是热衷于听取别人的意见。

你有没有考虑过wolkenkit ?

这是一个Node.js和JavaScript的CQRS和事件源框架,与域驱动devise(DDD)非常相称。 它可以给你一个关于如何构造你的代码的好主意,也可以给你一个运行时执行的东西,而不必重新发明轮子。

我知道背后的人,他们投入了3 – 4年的思想,血与汗。

领域驱动devise指导系统分解为一组有界的上下文/服务/微服务。 但是,您devise每项服务的方式是单独的,取决于服务的业务领域。 例如,您的业务核心域服务和支持域服务应该以不同的方式进行架构。