开源项目之架构分享

时间:2021-08-04 08:55:10

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

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

开源项目之架构分享

 

大家如果对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,它的架构风格如下:

开源项目之架构分享

它的这个就更好理解了

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),它的架构如下:

开源项目之架构分享

 

 

它的这个架构,我认为适合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友友们共勉。