小编kes*_*isb的帖子

在C++中返回具有空状态(NULL)的对象而不返回指针

DOM(文档对象模型)规范中,接口Node有一个方法:

Node GetChild();
Run Code Online (Sandbox Code Playgroud)

它声明如果Node没有子节点,则返回值为NULL.在没有返回指向子节点的指针的情况下,在C++中实现此方法的正确方法是什么.(最好防止内存泄漏)

建议:

有一个属性

bool is_null_;
Run Code Online (Sandbox Code Playgroud)

和超负荷运营商布尔()返回该值.

Node child = node.GetChild();
if (child) { ... }
Run Code Online (Sandbox Code Playgroud)

c++ c++11

2
推荐指数
1
解决办法
181
查看次数

我应该转向基于微服务的架构吗?

我正在研究一个整体系统。它的所有代码都在一个存储库中(Web API 和后台工作人员)。系统使用 Nodejs 编写,使用 MongoDB(Mongoose)作为数据存储。我的目标是为项目的发展设定一条新路径。起初我想知道我是否可以转向基于微服务的架构。

单体架构带来了一些问题:

  • 如果我的后台工作人员需要扩展。尽管只使用了其中的一小部分,但我必须将所有项目部署到服务器。
  • 当代码更改时,必须重新部署所有系统。如果支付处理器在重新部署系统时调用 webhook 会怎样?

使用微服务的优势非常明显:

  • 单个微服务的较小代码库。更容易推理。
  • 能够为特定用例选择最适合的编程工具。
  • 更容易扩展。

查看当前代码,我注意到整个项目都使用 Mongoose ODM(对象文档映射器)模型来创建、查询和更新数据库中的模型。作为一个好的编程的原则,所有这些与数据库的交互都应该被抽象出来。业务逻辑不应泄漏到其他系统层。我可以通过引入 REPOSITORY 模式(域驱动设计)来做到这一点。虽然代码仍在通过 web api 和后台工作人员共享,但这并不是一项艰巨的任务。

如果我决定将存储库提取到独立的微服务中,则会出现所有问题:

  • 必须引入某种查询语言来适应复杂的搜索查询。
  • 接口必须提供一种在不通过网络返回所有数据库文档的情况下迭代搜索结果(基于光标的导航)的方法。

由于项目处于早期阶段并且我是唯一的开发人员,因此转向基于微服务的架构似乎有点矫枉过正。也许我应该考虑其他方法?

将业务逻辑和与数据库的交互提取到单独的存储库中并在服务之间共享以避免服务之间的复杂通信协议?

domain-driven-design web-services node.js microservices

0
推荐指数
1
解决办法
342
查看次数