• 用模块化整体架构编写的代码实际上是什么样的?借助 Spring Boot 和 DDD,我们踏上了编写可维护和可演化代码的旅程。 当谈论模块化整体代码时,我们的目标是以下
  • 首先了解您的领域:每个公司都有自己的业务领域(有时有几个,有时几十个,有时数百个),在其中运营和赚钱。 如果你不能很好地理解这个领域,从长远来看你很可能会失败。在任何项目开始时——当我们的知识非常有限时——我们必须做出很多不同的决定。然后,随着时间的推移,我们的知识会增长,决策的数量会减少。 由于缺
  • 由 Mark Seemann 发布:在讨论数据库,特别是 ORM 时,有些人会不言而喻地假设关系数据库是存储数据的唯一选择。 许多程序员在关系数据设计方面非常熟练,他们在思考新问题时自然会使用这些技能。 但是请尝试在不考虑存储的情况下对业务问题进行建模,看看结果会如何。测试驱动开发对于此类任务来说通 icon
  • REST 与 RPC 的争论: REST API ! = HTTP 远程过程调用 作为开发人员,每当需要 API 时,我们常听到的一句话 icon
  • 在第一篇文章:使用Spring Boot和领域驱动设计实现模块化整体中,我们了解了如何使用 Spring Boot 和 DDD 构建和实现模块化整体应用程序。 本博客中,我们将尝试解决这些限制以创建更易于维护的实现。我们将 icon
  • 将业务规则与琐碎的验证相混淆,将不会带来任何好处。当你所拥有的只是琐碎的验证时,不要把事情复杂化。 让我们立即从一个非常简单的代码示例开始。这是一个有两个条件的单一方法。 [list] [*]第一个是,如果数量参数小于或等于零,我们将抛出异常。 [*]第二个是, icon
  • 对于生成式人工智能系统来说,在复杂的现实世界领域中航行是一项艰巨的挑战。不过,现在一种很有前途的方法照亮了前进的道路。 通过首先深入理解数据,我们可以将原始输入转化为经过验证的结构,从而优化人工智能推理。映射到关键任务的特定领域建模就像一个解释透镜,能将噪音提炼成重点信号。 复杂的归纳技术可以放大有 icon
  • 使用 事件溯源EventSourcing 的感觉非常棒。系统中有发生的事件的历史记录。这使得调试变得更加容易。 然而,事件溯源并不能保护我们免受用户犯错误的影响。 我们应该如何处理用户输入错误的情况呢? 我们应该删除该事件吗? 在数据库中找到并更新它?但是根据定义,事件是不可变的 icon
  • 我注意到,在 Gophers 的小圈子里,他们离开 Java/C# 的动机是渴望一种更简单、更直接的编程方法,以避免与 DDD 和其他强调松散耦合的范式相关的复杂性和不可预测性。 他们表示,之所以转用 Go,是因为他们的编程理念是强内聚而非松耦合。 然而,作为一个缺乏经验的开发人员,我很难理解 Go icon
  • Apache Causeway™ 通过自动为 Spring Boot™ 应用程序生成 UI 来实现域驱动的应用程序开发。这意味着: [list] [*]生产力- 您的应用程序主要是业务逻辑,消除了昂贵的 UI 代码。 [*]发现- 您可以与业务领域专家携手合作,了解问题空间并探索,然后在解决方案空间 icon
  • 业务需求场景: 商品应在提交订单时为客户保留。 仅仅将商品添加到购物车并不能保证产品的可用性。 客户不能将已经缺货的产品加入购物车。 事实上,这并不是什么花哨的要求。我曾经做过一个电子商务项目,就有这样的功能。当深入研究领域驱动设计时,我开始思考如何使用 DDD 构建块正确满足这一要求。 ”客户不能 icon
  • Netflix 是迈向实时数据基础设施的公司的典范 ,这使得 Netflix 能够通过多种方式改善用户体验,例如改进“Trending Now”主屏幕上的推荐、快速测试生产中的更改以及最大限度地减少 Netflix 服务的停机时间。 数据处理领域的一个趋势是从批量处理数据转向连续处理流数据 , icon
  • 展示一段示例代码 - Order 类。此类在我们的[url= DDD/CQRS/ES 应用程序[/url]中使用。我们正在改进此应用程序,因此这是记录某些意见和更改的好机会。 [co icon
  • 自足系统(又称为自包含系统、自我独立系统,英文Self-contained Systems,简称SCS)是一种软件架构方法,SCS 包含自己的 [b]用户界面[/b]、特定的 [b]业务逻辑[/b] 和单独的 [b]数据存储[/b] 。 SCS优先考虑将应用程序分散到独立的系统中,每个系统都有自己的 icon
  • Protégé 是一个本体编辑器,受到强大的用户和开发人员社区的积极支持。它完全支持最新的OWL 2 Web本体语言和RDF规范。 Protégé 基于 Java,可扩展,并提供“即插即用环境,使其成为快速原型设计和应用程序开发的灵活基础。 Protégé得到了学术界、政府和企业用户的强大社区的支持 icon
  • 消除歧义是政策解释者和专业分析师的一项基本技能。自然语言可以完全明确吗?不,当然不。 在某些情况下,它是否可以毫无疑问地变得明确? 绝对如此——这样做对于群体和社区的规则至关重要。(忽视上下文的语言其实都是教条主义) 消除歧义的关键是提出正确的问题,并根据概念模型开发结构化的业务词汇。 < icon
  • “解决软件核心的复杂性” ——DDD 能成功兑现这个承诺吗? 为了诚实地回答这个问题:DDD 有助于降低复杂性吗?,我根据四个因素开发了一个个人的复杂性心理模型:F1-F4。在我看来,复杂性可以在以下情况下得到控制: 问题空间正确(足够好)映射到解决方案空间(又名“建模”已正确完成)。 我们有一种“ icon
  • 在软件开发的动态环境中,代码内聚性的概念是创建高效且可维护的应用程序的基石。尤其是在Java这种以其健壮性和可扩展性而闻名的语言中,理解和应用内聚性原则可以显着提高软件项目的质量。 本文深入探讨了 Java 中的代码内聚性领域,提供了见解、实际示例和最佳实践,以帮助开发人员利用软件工程的这一关键方面 icon