模块化设计

     

幽默:两种项目包的选择难题

53 1
左边:以领域模型为划分右边:以分层架构为划分依据.

使用 Spring Modulith 进行事件外部化

162 9K

在本文中,我们将讨论在@Transactional块中发布消息的需求以及相关的性能挑战,例如延长的数据库连接时间。为了解决这个问题,我们将利用Spring Modulith的功能来监听 Spring .

单体应用、微服务和无服务器

62

本文说明在决定单体、微服务和无服务器架构时权衡的简化思维模型。目标是突出每种风格的固有优势和差距,同时为何时选择哪种建筑风格提供指导。单体小型团队或项目的理想入门架构。它启动起来很简单,并且通常可以提.

代码内聚性

290 27K

在软件开发的动态环境中,代码内聚性的概念是创建高效且可维护的应用程序的基石。尤其是在Java这种以其健壮性和可扩展性而闻名的语言中,理解和应用内聚性原则可以显着提高软件项目的质量。本文深入探讨了 Ja.

Spring Boot五个多模块技巧

80 3K

在本次探索中,我们提出了五个实用技巧,为在 Spring Boot 框架内有效构建模块提供指导。技巧一:逻辑模块划分逻辑模块划分涉及根据应用程序的功能组件或特性来组织模块。这种方法通过将相关功能分组在.

Spring Boot中使用JaCoCo设置Maven多模块代码覆盖率

147 12K

代码覆盖率是软件开发的一个重要方面,帮助我们确保我们的代码经过彻底的测试。JaCoCo(Java 代码覆盖率)是一种流行的工具,用于测量 Java 应用程序中的代码覆盖率。本文将探讨如何在 Sprin.

使用 Spring Modulith 改进模块化整体应用

241 1 12K

在第一篇文章:使用Spring Boot和领域驱动设计实现模块化整体中,我们了解了如何使用 Spring Boot 和 DDD 构建和实现模块化整体应用程序。本博客中,我们将尝试解决这些限制以创建更易.

JavaScript中(function() { } )() 是什么?

89 1 3K

JavaScript 的(function() { } )()结构初看起来可能令人困惑,但对于编写即时执行且自成一体的代码块来说,它却是一个非常有用的工具。虽然 (function() { } )().

Java中的单体应用

95 3K

在不断发展的软件开发世界中,出现了各种架构范式和设计模式,以满足现代应用程序的多样化需求。其中一种架构风格是整体架构,它一直是构建软件系统的一种长期且可靠的方法。在本节中,我们将探讨什么是单体应用程序.

使用 Apache Kafka 和 Spring Modulith 实现发件箱模式

145 11K

在这篇博客中,我们将探讨事件驱动系统中常见的“双写”问题,以及如何使用 Spring Modulith 来简单地实现 Outbox 模式来解决该问题。在构建任何涉及多个组件的非复杂系统时,迟早会遇到需.

DDD界限上下文与模块化实现的矛盾

103

在构建Web应用时,使用Java的原生模块或Maven模块都无法实现有界上下文(Bounded Context)。Maven模块和Java自己模块都无法构建隐含有界上下文的模块。Maven模块在构建W.

如何按照功能设计模块包?

82 3K

下图是一个高耦合、低相干性的两个包调用设计:┌──────────────────────────────────┐     ┌──────────────────────────────┐│  pl.

微前端是模块化后的最终选择

237 1 4K

微前端应作为彻底解耦代码和依赖关系后的最后手段。分布式单体很难管理,并有可能在多个代码库中重新引入相同的问题。在拆分之前,需要进行彻底的重构,以尽量减少孤立部分之间的相互依赖。虽然拆分代码可以带来好处.

Spring Boot Modulith模块化指南

524 22K
本文将教您如何使用 Spring Boot 构建 modulith 并使用 Spring Modulith 项目功能。Modulith 是一种软件架构模式,假设将您的整体应用程序组织成逻辑模块。此类模.

Spring Modulith增加事件外部化的支持

345 2K

SpringBoot应用程序的事务绑定发件箱模式 实现,专门基于Kafka、AMQP和JMS的代理。应用程序模块之间交换的一些事件可能对外部系统感兴趣。Spring Modulith 允许将选定的事件.

微服务:逻辑边界不是物理边界

379 2K

微服务的好处之一就是定义边界。俗话说,好篱笆造就好邻居(中国谚语:亲兄弟明算账)。定义边界是一件好事,但我们到底如何定义它们呢?微服务,由 Adrian Cockcroft 定义:具有有边界的上下文的.

Spring Modulith 1.0 GA发布

422 2K

我很荣幸地代表 Spring 社区和所有做出贡献的人宣布 Spring Modulith 1.0 GA 正式发布。5 年多前,Modulith 还是一个研发辅助项目,2022 年成为 Spring 的.

Moditect:Java 模块系统的工具

458 3K

Moditect是一个如此令人惊叹的项目!ModiTect 项目旨在提供使用 Java 模块系统(“Jigsaw”)的生产力工具。目前支持以下任务: 为给定的工件(Maven 依赖项或本地 JAR 文.

如何使用Spring Modulith组织项目包结构?

809 1 2K

我希望使用 Spring Modulith 并根据业务领域的模块对代码进行分组。我当前的项目结构如下所示: advice config controller domain dto exception .

洋葱片架构 - odrotbohm

721 5K
15年的洋葱架构是时候整容了。自 Jeffrey Palermo 发布他的洋葱架构系列第一篇博客以来,已经过去了几乎整整 15 年。在那篇文章中,他总结了本质上构成Alistair Cockburn六.

Spring Modulith:模块内领域事件发给外部Kafka的示例

396 2K

使用spring modulith轻松地将选定的域事件外部化到消息代理:添加例如,Kafka集成模块选择要外部化的域类型(例如,通过使用(At)外部化)点击标题见案例,展示如何自动将域事件外部化到 K.

前端能整合后端的界限上下文BC吗?

353

在理解域、子域、限界上下文、模块等之间的差异时遇到过困难?问题在问题空间中,也就是我们需要解决的问题中:Domain领域(例如,酒店)子域(例如,“预订”、“住宿”)。领域包含知识以及我们想要解决的一.

团队拓扑:模块化与划分团队相结合

577 9K

Martin Fowler的同事Matthew Foster描述了团队拓扑和领域驱动设计如何帮助组织扩展技术架构和团队结构,从而显着提高开发速度。模块化架构能改善软件交付吗?是的!但要注意一些问题。这.

攀登“模块化”之山

435 7K

作为软件开发人员的培训师和教练,我看到模块化软件设计(例如,面向对象或微服务)对人们来说是一种难以理解的技能。在许多不同的模块化层面(方法和功能、类和模块、包和组件、流程、服务、服务器、系统和系统的系.

DHH:如何从微服务中恢复?

1020 3 3K

我不否认在某些情况下微服务优先的架构很有意义,但我认为这种情况很少见。绝大多数系统都可以通过启动并保持在一个宏伟的单体中得到更好的服务。昨天引爆互联网的Prime Video 案例研究只是最新的例证。.

Service Weaver 简介:谷歌编写分布式应用程序的框架

2184 2 2K

服务编织器简介:用于编写后端应用程序的新开源框架。 最重要的是,Service Weaver允许您将应用程序编写为一个模块化的整体,并使用自定义部署程序将其部署为一组微服务。更具体地说,Service.

模块化单体比普通单体更复杂 - Oliver

1255 1
下图来自于Redhat的比较微服务的分布式事务模式:Y轴是可扩展性、可伸缩性X轴式一致性,从强一致性到最终一致性红色箭头线节点分别是:单体模块、两段事务、Saga编曲(无中央协调点)、Saga编舞(有.

只有 1% 的人需要微服务 - qe-unit

1014 2

年收入 20 亿美元的规模才有充分理由采用微服务架构,其他规模则可采用:单体式架构演化为基于服务的模块化单体式架构,然后演化为宏服务、迷你服务、微服务。什么是微服务架构?微服务架构就像沙漠中的一粒沙子.

实践中的模块化单体 | Foojay.io

2019 1 3K
随着微服务在应用程序现代化中的使用,我们已经看到了保持这种软件开发风格的优点和缺点。当我们主要在企业组织中创建应用程序时,我们现在首先想到的是如何解耦我们的应用程序。但有时创建太多微服务并不是最好的方.

鲍勃大叔:函数式编程真的不需要面向对象吗?

1348 3 2K

什么是类?根据字典,一个类是:一组、集合、群体或配置,其中的成员被认为具有某些共同的属性或特征;一个种类或类别。现在在阅读下一段时考虑一下这个定义:在OO语言中,我们将我们的程序组织成具有类似特征的对.