开源项目之架构分享

简介:

此次分享是我当初在开发某个系统时,参考的一些开源项目架构的思路和风格。

第一个是Jeesite,它的架构风格如下:
image

大家如果对jeesite感兴趣的话,可以百度搜索找到,不过那已经是半年多以前的事情,jeesite目前也发生较大的变化。

当初我在参考jessite这个思路时,不知道是什么原因使我没有加入module,其实从现在的角度出发,加上module也是一件不错的事情,module即模块,通过模块来扩展功能,这与我目前以service来扩展功能的思路不谋而合。

jeesite的common思路,我现在也一直再采用,common目前主要是放置常用工具类,不过,因为我们引入了Hutools开源项目,目前common主要是一些数据传输类,例如dto、queryvo或者是其他自定义工具类等等。

jeesite的core思路,我并没有采用,我还是按照service思路,公共模块,例如菜单,权限,用户,组织我将其抽象为一个公共service。

jeesite的web思路,与我现在的做法是一样,不过我考虑的是,一旦后期模块拆分分布式之类的,我可以轻松的通过service思路分离,不过我的service模块耦合度要尽可能低,内聚性高,不然的话,一旦拆分意味着重构,要知道能不重构尽量不重构,重构是一件痛苦的事情。很多中小公司开发团队,时常犯的错误就是为了实现功能,代码质量不做丝毫考虑,当然了,客观上也是因为业务的紧急性和迫切性不得不为之。记得第一个项目给我的阴影已经足够多了,我不想再因为代码质量的问题,陷入无止休的死循环中(改bug,改bug,这是一件要命的事情)。

另外jeesite的一个亮点就是技术选型,它的技术选型,可以说是目前java开发者们,无论是后台还是前端都是比较熟悉的,而且目前资料也十分齐全,学习起来也不是特别难。不过,jeesite还是没有开源,这也是我当初没有采用它的一个重要原因,在我看来,开源意味着源代码对外开放,一旦有问题,我可以通过看源代码来解决,尽管有看不懂的可能性存在,但是好歹可以看吧,看总比不能看要好,这也是我一贯的作风。

第二个是iBase4j,它的架构风格如下:
image

它的这个就更好理解了

iBase4j-Biz-Facade 存放 entity,service等

iBase4j-Biz-Service 存放dao及其xml和实现类,还有配置类等

iBase4j-Biz-Web 存放对应的controller还有配置类

不过我个人觉得它的这个架构设计不是特别好

要是我来设计的话,iBase4j-Biz-Facade我会直接entity,dao,service还有xml文件,iBase4j-Biz-Service专门放实现类,我个人觉得这样看起来无论是从视觉上,还是逻辑上看,都比iBase4j原生设计要好。

当然了,有句话说的好,“情人眼里出西施”或者是“一百个人一百个哈姆莱特”。总而言之,每个人都有每个人的想法。

至于iBase4j-SYS相关的其实与我上面说的iBase4j-Biz是一样的道理。

第三个是人人开源(renrne-security),它的架构如下:

image

它的这个架构,我认为适合SpringBoot应用开发,renren-admin通常就是后台管理系统,renrne-api用于管理接口文档可作为独立的应用也可以引入admin中,common就不必多说,我想在上面的jeesite中已经说得很详细了。generator,web在线代码生成器,我也写过,感兴趣的可以参考我的这篇博客:https://www.cnblogs.com/youcong/p/9494892.html (JavaWeb在线代码生成器)

我觉得人人开源的这个比较与我接近,所以在多租户架构设计时,我最先想到的就是人人开源,只不过我没有理解好它们之间的关系,同时也没有考虑到技术的局限性,为此我付出了一周多的时间成本。

renren-generator生成的代码,点击表打成zip包(支持批量选择),不过我觉得我的在线代码生成器比它好,但是唯一不足的是,我没有考虑到权限,因此我的代码生成器不是特别完美,但是对于提高开发效率还是有一定的帮助。

总结:

今天分享的一共三个开源项目,分别是jeesite、iBase4j、人人开源等。

分享这三个项目,我要告诉大家的不是学会怎么用,而是有的时候,在开发设计的时候,如果自己没有思路的话,特别是架构设计,可以参考下开源项目,也许你会有意向不到的收获。

记得荀子说过一句话,“君子性非异也,善假于物也”。以此话,与IT友友们共勉。

目录
相关文章
|
1月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
102 2
|
18天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
17天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
45 6
|
17天前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
23天前
|
编解码 人工智能 开发者
长短大小样样精通!原始分辨率、超长视频输入:更灵活的全开源多模态架构Oryx
【10月更文挑战第23天】Oryx 是一种新型多模态架构,能够灵活处理各种分辨率的图像和视频数据。其核心创新在于能够对图像和视频进行任意分辨率编码,并通过动态压缩器模块提高处理效率。Oryx 在处理长视觉上下文(如视频)时表现出色,同时在图像、视频和3D多模态理解方面也展现了强大能力。该模型的开源性质为多模态研究社区提供了宝贵资源,但同时也面临一些挑战,如选择合适的分辨率和压缩率以及计算资源的需求。
28 3
|
27天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
43 2
|
1月前
|
分布式计算 大数据 Serverless
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
在2024云栖大会开源大数据专场上,阿里云宣布推出实时计算Flink产品的新一代向量化流计算引擎Flash,该引擎100%兼容Apache Flink标准,性能提升5-10倍,助力企业降本增效。此外,EMR Serverless Spark产品启动商业化,提供全托管Serverless服务,性能提升300%,并支持弹性伸缩与按量付费。七猫免费小说也分享了其在云上数据仓库治理的成功实践。其次 Flink Forward Asia 2024 将于11月在上海举行,欢迎报名参加。
184 1
云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展
|
1月前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
53 2
|
2月前
|
负载均衡 数据库 开发工具
|
2月前
|
Java 数据库 Maven
谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器
项目介绍、项目环境搭建、docker配置mysql,redis,jdk,maven、人人开源、快速开发、安装nodejs、逆向工程搭建,人人开源代码生成器
谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器
下一篇
无影云桌面