使用领域驱动设计的node.js

2024-03-14

我正在将应用程序从 C# 迁移到 Node.js。我一边学习一边学习node.js,所以我是一个node.js 新手。我正在阅读《领域驱动设计的模式、原则和实践》一书,发现我当前的项目可以从中受益的很多重要信息。

例如,书中有一个示例电子商务应用程序,其中包含三个有界上下文:销售、运输和计费。每个有界上下文负责自己的数据库,并且每个有界上下文都在 NServiceBus 的实例中运行。这似乎是一个很好的方法,因为所有内容都在同一解决方案但不同的项目下运行。在将其转换为 Node.js 时,我遇到了一些困惑。

1)我很难找到将node.js与ddd结合起来的好例子,就像上面的电子商务例子一样?这里的一些障碍是 OOP 处理方式的差异。

2)如果在本书示例代码中,每个有界上下文都在自己的项目中并在 NServiceBus 中运行,这是否意味着在将其转换为 Node.js 时,我使用 vscode 作为 GUI,我需要创建一个单独的父级如果我希望所有有界上下文都在同一服务器上运行,直到我需要相应地扩展,那么为每个项目提供一个不同的端口(有界上下文)并为每个有界上下文提供一个不同的端口来侦听?

3) NServiceBus 允许消息和事件来回传递。对于 Node.js,存在哪些服务总线技术(最好是开源的并且可以在基于 Linux 的计算机上运行)可以可靠地提供 NServiceBus 所提供的功能?我是否应该考虑单独使用rabbitmq来提供此功能(包括发送事件)?


您可能感兴趣沃尔肯套件 https://www.wolkenkit.io/,一个适用于 Node.js 和 JavaScript 的 CQRS 和事件源框架,与领域驱动设计 (DDD) 配合得很好。

除了实际的框架(部署为 npm 模块沃尔肯套件 https://www.npmjs.com/package/wolkenkit),有许多示例应用程序可以展示其工作原理:

  • wolkenkit-todomvc https://github.com/thenativeweb/wolkenkit-todomvc是使用 DDD 建模的经典 TodoMVC 应用程序
  • 工作套件板 https://github.com/thenativeweb/wolkenkit-boards是一款类似于Trello的团队协作软件
  • wolkenkit-从未完成的游戏 https://github.com/thenativeweb/wolkenkit-nevercompletedgame该游戏的 wokenkit 版本位于nevercompletedgame.com https://www.nevercompletedgame.com/
  • wolkenkit-寻宝 https://github.com/revrng/wolkenkit-geocaching是一个管理地理藏宝缓存的应用程序

除此之外,您可能还想看看工作包文档 https://docs.wolkenkit.io/,尤其是在您可以下载的手册 https://docs.wolkenkit.io/1.2.0/downloads/brochure/其中解释了 DDD、事件溯源和 CQRS、它们是什么、它们如何相互关联等等……

PS:请注意,我是 wolkenkit 的作者之一,所以请对我的回答持保留态度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用领域驱动设计的node.js 的相关文章

  • 操作 `posts.find()` 缓冲在 10000 毫秒后超时

    当我在本地尝试时 效果非常好 但 Heroku 在服务器部署后出现此错误 有人可以帮忙吗 message Operation posts find buffering timed out after 10000ms index js con
  • 使用 Node.js 将对象写入文件

    我已经在 stackoverflow google 上搜索过这个 但似乎无法弄清楚 我正在抓取给定 URL 页面的社交媒体链接 该函数返回一个包含 URL 列表的对象 当我尝试将此数据写入不同的文件时 它会输出到该文件 object Obj
  • 使用 MongoDB Atlas 时 mongo-go-driver 因服务器选择超时而失败

    去版本 1 12 5 我有这个使用 node js mongo 驱动程序的代码 const MongoClient require mongodb MongoClient const uri process env MONGO HOST d
  • Nodejs + mongodb:如何查询 $ref 字段?

    我将 MongoDB 与 Nodejs REST 服务一起使用 该服务公开了存储在其中的数据 我有一个关于如何查询使用 ref 的数据的问题 这是一个对象的示例 其中包含对花药集合中另一个对象 详细信息 的引用 id ObjectId 59
  • 从 MongoDB+Node.js 获取数据到客户端 JavaScript

    如何使用 Node js 连接 MongoDB 然后将结果传递给客户端 JavaScript 并以 HTML 形式显示 var http require http var URL require url var Db require mon
  • nodejs googleapis,authClient.request 不是函数

    我正在像这样的一个函数中创建一个 oauth2client 并返回它 实际上 我确实传递了客户端 ID 秘密 重定向 URL 和凭据 据我检查 这些都是正确的 var OAuth2 google auth OAuth2 var oauth2
  • 使用 python-shell 持续交换数据

    我需要从节点运行一些 python 脚本 由于我的 python 脚本使用复杂的结构 我认为如果只加载这些结构一次 然后使用这些结构运行一些特定的脚本 任务 会更好 在节点上 我想永远运行一个脚本 或者直到我说它可以终止 并继续向该脚本发送
  • 如何将子集合添加到 Firestore 中的文档? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 没有关于如何在Firestore中的文档中添加子集合的文档 那么如何使用Web应用程序添加子集合 我尝试了这个但没有成功 如何使用代码
  • readFile() 和 readFileSync() 之间的区别

    以下代码将index html 的内容 仅包含文本hello world 输出到浏览器 然而 当我更换readFile with readFileSync 请求超时 我缺少什么 是否需要不同类型的缓冲区 我使用的是node 0 61 和ex
  • Nodemon - 使用配置文件指定扩展监视列表

    有没有办法使用配置文件而不是命令行来指定监视列表 Nodemon 文档中的命令行方法 我尝试使用nodemon json配置文件包含以下内容 ext js json hbs html 返回 扩展名匹配 错误 然后我尝试将配置添加到packa
  • 创建shell可执行全局节点模块

    我尝试创建节点模块 我成功了 我用了npm install g在代码目录中 它创建了这个模块文件夹 AppData Roaming npm node modules myfirstmodule 现在我想让一个文件作为命令可执行 例如 pm2
  • Nodejs Base64 中的读取文件

    我正在尝试从客户端读取以 base64 编码的图像 如何使用nodejs进行阅读 My code add to buffer base64 image var encondedImage new Buffer image name base
  • 使用node.js/Express从HTTP重定向到HTTPS

    有什么方法可以更改我的 Web 应用程序以侦听 HTTPS 而不是 HTTP 我正在使用node js express 我需要它来侦听 HTTPS 因为我正在使用地理定位 而 Chrome 不再支持地理定位 除非从 HTTPS 等安全上下文
  • 如何使用 javascript 从 UUID v1 (TimeUUID) 中提取时间戳?

    我使用 Cassandra DB 和 Nodejs 的 Helenus 模块来操作它 我有一些包含 TimeUUID 列的行 如何在javascript中从TimeUUID获取时间戳 这个库 UUID 至今 https github com
  • npm 脚本:node-sass 不监视部分 sass 文件

    我有这个项目结构 src assets css sass main scss variables scss 我正在尝试编写一个 npm 脚本 该脚本将监视我的所有 scss 文件 包括部分文件 中的更改 然后仅编译我的 main scss
  • 托管 React 应用程序和 Express 服务器 cpanel

    我是托管新手 如果有人可以非常详细地解释 这将对我有很大帮助 我有以下问题 我有前端使用react app和后端使用expressjs and mysql 我的计算机中有一个可以运行的简单应用程序 我使用本地主机启动后端和前端 它们工作完美
  • 垃圾收集器不适用于 NodeJS / Chrome 中的类型化数组

    我最初将其记录为原项目中的一个问题 https github com nodejs help issues 3590 它立即转移到帮助主题 没有很好的解释 所以现在我想在这里提问 如果我们在 NodeJS v14 v16 v17 中运行以下
  • dotnet 核心并行或同时构建

    In this https github com gatimus DotnetParallelBuild解决方案我有2个应用程序 AppA AppB共享类库Shared 我尝试过自动化这些并行的构建 运行电源外壳 https github
  • Typescript 编译错误:类型“typeof e”上不存在属性“bodyParser”

    我想在我的节点 express 环境中使用打字稿 托管在 Cloud 9 ide 中 我在尝试让编译器编译 app ts 时遇到问题 它出现了几个错误 其中属性 bodyParser 在类型 typeof e 上不存在就是其中之一 我在应用
  • 我想使用 Sequelize 将 MySQL 中的对象数组存储在单个列中

    之前我正在寻找如何使用 Sequelize 在 MySQL 中插入对象数组 然后我找到了一种直接插入数组的解决方案 例如 1 2 在单列中 insert into TABLE NAME id marks VALUES 21 1 2 但我正在

随机推荐

  • 推导 pytorch 网络的结构

    对于我的用例 我需要能够采用 pytorch 模块并解释模块中的层序列 以便我可以以某种文件格式在层之间创建 连接 现在假设我有一个简单的模块 如下所示 class mymodel nn Module def init self input
  • 无法解析符号 DrawerLayout

    我正在尝试实现导航抽屉 如下所示 http developer android com training implementing navigation nav drawer html top http developer android
  • 在 HTML 链接中使用 onClick 传递多个值

    您好 我正在尝试使用 HTML onclick 函数传递多个值 我使用 Javascript 创建表 var user element UserName var valuationId element ValuationId Valuati
  • 无法解析 com.facebook.react:react-native:0.32.0

    我在 android studio 的 React Native 项目中打开了 android 文件夹 做了所有可能的修改build gradle文件 但是我收到这个重复的错误 Error Failed to resolve com fac
  • jQuery Mobile 绑定事件

    我在使用 jquery mobile 时遇到了一些问题 我的页面总是被调用这个函数运行 document bind pagechange function peforms ajax operations 问题是 每次查看我的页面时 都会增加
  • Git 命令仅重置索引和工作树而不是 HEAD

    这个问题是后续问题这个问题 https stackoverflow com questions 44513186 how do i edit a commit with interactive rebase as uncommited 它试
  • C 中 If-Else 和三元运算符之间的速度差异...?

    因此 在同事的建议下 我刚刚测试了三元运算符和等效的 If Else 块之间的速度差异 并且三元运算符生成的代码似乎比 If Else 快 1 到 2 倍 我的代码是 gettimeofday tv3 0 for i 0 i lt N i
  • 在 R 中建立复杂方程模型

    我有以下模型 我在 R 中将其编码为 function t C Ao s wd ph C Ao exp s t cos wd t ph 我想用这个方程来形成一个预测模型 但是 我不知道如何成功运行或绘制这个方程 I tried nls但遇到
  • phpmyadmin 中的 $GLOBALS['cfg'] 在哪里

    我在phpmyadmin下的phpinfo php文件中发现 有这样的配置设置 if GLOBALS cfg ShowPhpInfo phpinfo 我想知道在哪里可以设置 GLOBALS cfg ShowPhpInfo 配置 当然 我可以
  • angularjs 编译 ng-controller 和插值

    On the docs https docs angularjs org api ng function angular injector我看到了一个后来添加的编译 东西 的例子 var div div content label div
  • Angularjs 会话存储和范围

    有人知道为什么我的范围变量没有更新吗 这让我难以置信 sessionStorage 变量很好 但是当我在范围变量中定义它们时 我收到 未定义 错误 我已经修改了 scope apply 但显然范围已经被消化了 S请帮助新手 if sessi
  • Javascript 从变量渲染 jpeg 二进制数据

    如何渲染 Javascript 变量中包含的 JPEG PNG 文件数据 是否可以 需要什么 JavaScript 库 使用的浏览器是FF IE Thanks 现代浏览器支持内联图像 http dean edwards name weblo
  • Django/Heroku:致命:角色的连接太多

    所以我刚刚通过 Heroku 业余爱好 和 Postgres 试用版 推出了一个包含 Channels 2 0 Daphne 2 2 0 和 asgi 的网站 当我启动网站时 我点击了几个页面 然后收到 500 错误 我通过电子邮件收到的错
  • 无法在 Outlook 中正确显示 html 电子邮件签名

    我用 html 为自己创建了一个简单的电子邮件签名 他的代码是 div style width 50px height 50px margin right 10px img src logo png div div style height
  • C# 读取Excel工作表

    有人可以帮我在 C 应用程序中阅读简单的 Excel 工作表吗 我希望能够迭代每一行并在每一列上有一个句柄 谢谢 杆 这是我发现的最简单的方法 从 C 创建 Excel XLS 和 XLSX 文件 https stackoverflow c
  • 如何使用域名setCookie和getCookie

    当我保存 cookie 时 它 会与当前 URL 链接一起存储 当我获取仅搜索当前 URL 的 cookie 时也是如此 我需要使用我自己定义的 URL 链接保存和检索 cookie 你能帮助我吗 您无法读取不同域设置的cookie 如果可
  • 有人能在 android studio 中使用 chromecast android 示例吗?

    我在尝试让这些文件正确加载时经历了一段糟糕的时光 要么是支持框架失败 要么是转换 API 失败 有人有可重复的方法吗 github 示例显示 即将推出 用于加载到 android studio 中 我还没有转换其中一个测试项目 但我已经能够
  • 从 Django 服务器一次传输多个文件

    我正在运行 Django 服务器来为受保护网络中的另一台服务器提供文件 当用户请求一次访问多个文件时 我希望 Django 服务器将这些文件一次性传输给该用户 由于在浏览器中一次下载多个文件并不容易 因此需要以某种方式捆绑文件 我不希望我的
  • 如何将wrapper-div居中而不是内容居中

    我希望我的页面始终在浏览器中居中 而不影响内容 就像align text center 那样 我想将我的包装器 div 居中 我该怎么做 简化现有页面 div div Music Heaven div div div div div div
  • 使用领域驱动设计的node.js

    我正在将应用程序从 C 迁移到 Node js 我一边学习一边学习node js 所以我是一个node js 新手 我正在阅读 领域驱动设计的模式 原则和实践 一书 发现我当前的项目可以从中受益的很多重要信息 例如 书中有一个示例电子商务应