1

Apache Causeway:实现领域驱动设计的原型工具

 8 months ago
source link: https://www.jdon.com/71622.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Apache Causeway:实现领域驱动设计的原型工具

Apache Causeway™ 通过自动为 Spring Boot™ 应用程序生成 UI 来实现域驱动的应用程序开发。这意味着:

  • 生产力- 您的应用程序主要是业务逻辑,消除了昂贵的 UI 代码。
  • 发现- 您可以与业务领域专家携手合作,了解问题空间并探索,然后在解决方案空间中选择解决方案。
  • 易于使用- 您的企业用户会发现该应用程序易于学习,并且以业务概念为中心
  • 简单集成- 您可以通过自动发布的域事件进行异步集成,并使用自动提供的 REST API 进行同步集成,轻松与其他系统集成。
  • 干净的架构- 您会发现在应用程序的内部架构中保持清晰的关注点分离很容易

由于 Apache Causeway 是开源的,运行在 Spring Boot 之上,因此您不会被供应商甚至框架所束缚;关注点的清晰分离意味着如果需要,您甚至可以将域逻辑提升并转移到其他框架上运行。

使用最小的helloworld入门应用 程序尝试该框架。
使用结构化simpleapp入门应用程序开发您自己的应用程序。

特点:
Apache Causeway 非常适合快速原型设计,因为为了让应用程序正常运行,您需要编写的只是域模型对象。

通过只关注领域,您还会发现您开始开发一种普遍存在的语言 - 整个团队(业务人员和技术人员等)都有共同理解的一组术语和概念。

如果您愿意,您可以将其与 BDD 结合起来 - 该框架与Cucumber集成。
勾勒出域模型后,您就可以重新开始并使用下面列出的部署选项之一进行部署。

使用通用 UI 进行部署
Apache Causeway 的最初动机之一是能够自动为域对象模型生成用户界面。

该框架的架构允许不同的用户界面技术。主要实现是Web UI(Wicket 查看器),它不仅提供有吸引力的默认用户界面,还能够通过编写新的Apache Wicket组件来自定义用户界面。

在 Apache Causeway 上部署意味着该框架还管理对象持久性。同样,这是可插拔的。有两种实现,JDO (DataNucleus)JPA (EclipseLink)。这些通常与 RDBMS 一起使用,但原则上也可以与 NoSQL 数据库一起使用。JDO/DataNucleus 历来对 NoSQL 具有广泛的支持,尽管 JPA/EclipseLink 也有一些支持。

部署为 REST API
REST(表示状态传输)是一种用于构建高度可扩展的分布式系统的架构风格,使用与万维网相同的原理。许多商业 Web API(twitter、facebook、Amazon)都是作为纯 REST API 或其中的某种近似实现的。

Restful对象规范定义了一种方法,通过该方法可以使用 HTTP 上的 JSON 表示将域对象模型公开为 RESTful 资源。

Apache Causeway 的RestfulObjects 查看器是该规范的实现,使任何 Apache Causeway 域对象通过 REST 自动可用。还可以选择性地限制域对象集以排除域实体(从而避免泄漏实现细节)。
将 Apache Causeway 部署为 RESTful Web 服务的三个主要用例是:

  • 允许根据 RESTful API 构建自定义 UI
    例如,使用 JavaScript 框架,如 Angular/Ionic/ReactJs/Vue 等,或 JavaFX
  • 实现系统之间的集成
    REST 被设计为机器可读,因此是同步数据交换场景的绝佳选择。
    该框架提供SPI来允许根据需要返回自定义表示。
  • 作为通用 UI 的基础。
    在撰写本文时,有两个正在开发中:Kroviz(使用 Kotlin/JS)和Rob(使用Microsoft 的 Blazor)。

另一个实现 RO 规范的框架是Naked Objects Framework(.NET 上)。它提供了一个完整的通用 UI,并针对其自己的 RO 实现进行了测试。

框架管理对象持久性,例如使用 JDO/DataNucleus 对象存储。完全可以将 RESTful API 与自动生成的 Web 应用程序一起部署;两者都使用相同的域对象模型。

部署在您自己的平台上
使用 Apache Causeway 进行原型设计,但拥有自己的专有应用程序框架来实际构建生产应用程序。

Apache Causeway 支持这一点,因为 Apache Causeway 定义的编程模型有意最小化对框架其余部分的依赖。事实上,领域模型类对 Apache Causeway 的唯一硬依赖是通过类org.apache.causeway.applib,主要是为了获取@Action@Property等注释。因此,使用 Apache Causeway 进行域对象原型化和/或测试相对容易,但要部署在其他框架的运行时上。

如果您有兴趣采用这种方法,那么您将需要提供您自己的代码使用的任何框架提供的服务的实现。
如果您自己的应用程序框架基于Spring Boot并使用 JPA 或 JDO,那么还有另一种选择。如上所述,Apache Causeway 本身运行在 Spring Boot 之上。因此,您可以使用常规 Spring 技术之一开发完整的自定义 UI,并将其与 Apache Causeway 一起运行 - 实际上是前面描述的选项,但适用于每个用例,而不仅仅是选定的用例。Apache Causeway 继续作为 Spring 之上的薄层来管理对象生命周期和持久性,但您的自定义 UI 会完全按照您的需要呈现域对象。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK