专栏名称: 逸言
文学与软件,诗意地想念。
今天看啥  ›  专栏  ›  逸言

项目札记005:XML模块的设计与依赖值分析

逸言  · 公众号  · 程序员  · 2024-09-29 11:52

主要观点总结

文章主要描述了如何处理元数据以及使用xml作为存储和管理元数据的载体的问题。文章还讨论了xml模块设计的问题,包括职责错位导致的循环依赖和双向依赖问题。

关键观点总结

关键观点1: 使用xml作为存储和管理元数据的载体

描述为何选择xml作为元数据载体,包括主流文本配置协议、丰富的库方便操作xml等。

关键观点2: xml模块设计的问题

介绍在项目中遇到xml模块设计的问题,包括职责错位导致的循环依赖和双向依赖,以及报表设计器对报表引擎的不必要依赖。

关键观点3: 改进设计

描述如何解决这些问题,即将xml从报表引擎模块中拎出来,成为基础设施层的一个单独模块。

关键观点4: 软件模块设计的体会

强调在进行软件模块的设计时,要注意模块之间的依赖关系,避免出现双向依赖或循环依赖。介绍使用ArchUnit等工具对模块间的依赖关系进行验证和约束的重要性。


文章预览

因为是元数据(metadata)驱动的SaaS平台,如何处理元数据自然成为整个平台的基础功能。我们选择xml作为存储和管理元数据的载体。之所以选择xml,原因在于: xml是当时的主流文本配置协议,也提供了丰富的库方便操作xml(当时的我还不知道yaml) 可以通过xsd配置包括与报表、界面、功能、实体映射等相关的元数据,相当于将xsd作为元数据的领域特定语言,以便于类型的自定义和扩展; 通过jaxb可以直接把xml转换为Java对象 因此,在这个项目中,我们是重度使用xml。这在当今的项目可能并不多见,毕竟xml的表现力并不太好,语法又很冗余,显得不够简洁高效。以Kubernetes为例,就全部使用了yaml。鉴于此,我就不再饶舌xml的各种特性与操作了。重点谈谈xml模块的设计。 在我接手EISaaS的架构工作之前,xml的功能已经初具雏形,需要调用xml功能的主要是报 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览