Java Web架构师那些事

前因

今天晚上喝了几两65°的红星二锅头,坐在沙发上回想了下我这苦逼的程序员人生,从程序员到高级工程师的成长过程。想了想主题,今天就写篇《关于架构师那些事》的文章吧。

总结

所有架构师都不是自带光环,都是是从程序员->工程师,然后跟对一个好的领导或者好的项目开始学习框架,然后结合现有的知识一步一步磨炼成就了现在架构师的光环,从来就没有一步登天的人才,都是从埋坑到填坑的过程中走过来的。

我曾经参与了很多项目的架构搭建及技术框架的选型,利用现在主流的框架搭建过平台,也利用一些开源的平台做过一些开发,其中走过的坑只有自己知道,那叫一个“爽”,包括:

  • 前端ui:ligerui、layui、easyui
  • 后台框架:struts2/spring mvc、spring、mybatis\\hibernate
  • 其它组件:activiti、shiro、quartz等
  • 数据库:mysql、Oracle、SQl Server

多个tomcat分布式部署如何共享session,自己也写过比较复杂的功能然后封装成组件给程序员调用,例如权限控制、自定义报表组件、打印组件、凭证组件等。随着现在技术的不断成熟,不同阶梯的程序员也越来越多,怎样既能在提高开发效率的前提下,又能节省企业的成本,成为了不少科技公司管理的一大难题,特别是刚开始创业的公司。所以我们在拿到项目需要架构之前,要先了解项目的业务和模式,今天跟大家分享下我的一些经验。

  1. 首先我们要先了解项目的运营模式,不同的运营模式架构必然是不一样的,例如ERP、OA、云平台、网上商城、app\\小程序\\公众号后台、网站等。
  2. 项目是否要支持跨平台,linux\\windows,业务数据量能达到多少,是否要同时支持SQL Server、mysql、Oracle等主流数据库
  3. 项目有哪些业务,某些业务是否需要内外网隔离访问,例如财务系统内网访问,其他系统外网访问等(这个时候就需要前置机程序),是否有高并发的业务等
  4. 项目有哪些复杂的功能需要攻克的,例如需要工作流、自定义表单、自定义报表、常规打印\\套打、上传下载、导入导出等
  5. 前端需要什么样的风格,是否需要支持主流浏览器,是否包含一些常用或者特殊的控件,例如表格、树、下拉框、表单等
  6. 最后一条就是打算投多少成本,有多少人员,用多少周期去开发

就暂时列这么多吧(酒劲上来了),可以根据自己的经验和业务知识扩大下范围,也可以利用一些现有的快速开发平台然后再搭配组装,所有的架构和选型都没有对与错,只有适合自己就是最好的。

分享

快速开发平台,就是可以使得开发更为快速的开发平台。当开发平台产生之后,虽然减少了编程人员大量的编程时间,但是很多开发平台的效果并不是很理想,比如说某些开发平台比较复杂、难以掌握;有的开发平台通用性比较差;有的开发平台在时间上并没有得到改善;还有的依然还是需要写很多代码等等。这些问题的存在促使开发者不断的摸索、不断的改进,到最后越做越成熟,以致于现在市面上出现的大部分开发平台效率都非常高,他们改善了以往的产品存在的缺陷,使得开发过程比以往更简洁、编写代码更少、开发效率越来越高。我也整理了一些开源的平台的资料,如下:

JeeSite

GitHub地址:https://github.com/thinkgem/jeesite

在线演示

  1. 地址:http://demo.jeesite.com/
  2. 账号:system
  3. 密码:admin

JeeSite 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis、Beetl、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。在线代码生成功能,包括核心模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计;界面无刷新,一键换肤;众多账号安全设置,密码策略;在线定时任务配置;支持集群,支持SAAS;支持多数据源。

技术选型

  • 主框架:Spring Boot 2.0、Spring Framework 5.0、Apache Shiro 1.4、J2Cache
  • 持久层:Apache MyBatis 3.4、Hibernate Validation 6.0、Alibaba Druid 1.1
  • 视图层:Spring MVC 5.0、Beetl 2.7 替换JSP、Bootstrap 3.3、AdminLTE 2.4
  • 前端组件:jQuery 1.12、jqGrid 4.7、layer 3.0、zTree 3.5、jquery-validation
  • 工具组件:Apache Commons、Logback 1.1、Jackson 2.8、POI 3.14、Quartz 2.2
  • 技术选型详情:http://jeesite4.mydoc.io/?t=273599
Java Web架构师那些事

JeeSite演示demo

IT榻榻米(收费)

官网地址:http://www.itttm.com/

IT榻榻米是一款java轻量级智能快速开发平台,可以帮助您解决项目中90%的重复工作,让您更多关注业务逻辑。由于本身轻量级特性,可根据自身需求二次开发想要的功能。

  • 使用 Spring boot,主流趋势,开箱即用 。
  • 使用 Maven 多模块 构建项目,方便快捷。
  • 使用 Thymeleaf模板引擎,易使用,够强大。
  • 使用 安全框架
  • Apache Shiro,安全可靠。
  • websocket实时聊天,七牛云,短信通知...
Java Web架构师那些事

IT榻榻米演示demo

Java Web架构师那些事

IT榻榻米套餐

JavaFast(收费)

官网地址:http://www.javafast.cn/

  • 基础架构:采用 SpringMVC + MyBatis + BootStrap + Apache Shiro + Ehcache 基础架构
  • 轻标准化:简单功能由代码生成器生成使用,复杂业务采用表单自定义,只需要写极少代码,即可实现复杂的业务逻辑
  • 高效稳定:经过了专业压力测试,百亿级别数据性能测试,保证后台数据的准确性和页面访问速度和稳定性.
  • 代码生成:支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查/排序/导出导入Excel/权限控制/功能生成直接使用。生成前端代码、生成后端代码、生成高性能SQL
  • 多种UI支持:系统支持多种风格的自动切换,可满足企业对UI的美观要求 .Bootstrap前端框架、支持手机或平板、集成企业微信
  • 简易报表配置:支持报表在线配置,通过简单配置SQL语句即可实现图形报表展示。SQL配置、图形报表、数据列表
Java Web架构师那些事

JavaFast演示demo

Jeecg(商业收费)

官网地址:http://www.jeecg.org/

演示地址:http://demo.jeecg.org/loginController.do?login

JEECG (J2EE Code Generation)是一款基于代码生成器的免费开源的快速开发平台。使用JEECG可以简单快速地开发出企业级的Web应用系统。

随着WEB UI框架(EasyUi/Jquery UI/Ext)等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也可以生成统一规范的界面!代码生成+手工MERGE半智能开发将是新的趋势,单表数据模型和一对多数据模型的增删改查功能直接生成使用,可节省50%工作量,快速提高开发效率!

Java编程有很多重复机械代码,生成器可以帮助解决50%的重复工作,让开发更多关注业务逻辑,从而实现代码生成+手工merge的半智能开发!JEECG智能框架可以有效解决信息孤岛问题,生成统一代码、统一规范、统一设计思路,使你能在这个平台上,快速开发出高效高质量代码,缩短项目开发周期。

平台亮点

  • 1.采用主流框架,容易上手; 代码生成器依赖性低,很方便的扩展能力,可完全实现二次开发;
  • 2.开发效率很高,采用代码生成器,单表数据模型和一对多(父子表)数据模型,增删改查功能自动生成,菜单配置直接使用;
  • 3.页面校验自动生成(必须输入、数字校验、金额校验、时间控件等);
  • 4.封装完善的用户基础权限、强大的数据权限、和数据字典等基础功能,直接使用无需修改
  • 5.常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导出等),基本满足80%项目需求
  • 6.集成简易报表工具,图像报表和数据导出非常方便,可极其方便的生成pdf、excel、word等报表;
  • 7.集成工作流activiti,并实现了只需在页面配置流程转向,可极大的简化jbpm工作流的开发;用jbpm的流程设计器画出了流程走向,一个工作流基本就完成了,只需写很少量的java代码;
  • 8.UI快速开发库,针对WEB UI进行标准式封装,页面统一采用自定义标签实现功能:列表数据展现、页面校验等,标签使用简单清晰且便于维护
  • 9.在线流程设计,采用开源Activiti流程引擎,实现在线画流程,自定义表单,表单挂靠,业务流转
  • 10.查询过滤器:查询功能自动生成,后台动态拼SQL追加查询条件;支持多种匹配方式(全匹配/模糊查询/包含查询/不匹配查询);
  • 11.多数据源:及其简易的使用方式,在线配置数据源配置,便捷的从其他数据抓取数据;
  • 12.国际化:支持多语言,开发国际化项目非常方便;
  • 13.数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段
  • 14.多种首页风格切换,支持自定义首页风格。(经典风格、Shortcut风格、ACE bootstrap风格、云桌面风格)
  • 15.在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)
  • 16.简易Excel导入导出,支持单表导出和一对多表模式导出,生成的代码自带导入导出功能
  • 17.自定义表单,支持用户自定义表单布局,支持单表,一对多表单、支持select、radio、checkbox、textarea、date、popup、列表、宏等控件

平台架构

  • JEECG v2 系列版本采用主流S2SH框架,容易上手;代码生成器依赖性低,很方便的扩展能力,可完全实现二次开发;
  • JEECG V3 系列版本采用SpringMVC+Hibernate+Spring jdbc架构技术,
  • 开发效率很高,单表数据模型和一对多(父子表)数据模型的增删改查自动生成,功能直接使用;
  • 页面校验自动生成(必须输入、数字校验、金额校验、时间空间等);
  • 封装完善的用户权限和数据字典等基础功能,直接使用无需修改
  • 常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导出等),基本 满足80%项目需求
  • 集成简易报表工具,图像报表和数据导出非常方便,可极其方便的生成pdf、excel、word等报表;
  • 集成工作流jbpm,并实现了只需在页面配置流程转向,可极大的简化jbpm工作流的开发;用jbpm的流程设计器画出了流程走向,一个工作流基本就完成了,只需写很少量的java代码
Java Web架构师那些事

Jeecg演示demo1

Java Web架构师那些事

Jeecg演示demo2

EOVA

官网地址:http://www.eova.cn/

技术亮点

  • 以元数据驱动业务为核心思想
  • 使用了极速框架JFinal,站在巨人的肩膀上
  • 以OOP思想结合EasyUI和Bootstrap样式自创EovaUI
  • 使用Beetl融合Java和Script
  • 兼容主流数据库Mysql、Oracle、Postgre...
  • 可以一键完成CRUD,但不仅限于CRUD
  • 灵动迅捷,多快好省,不影响你你实现任何功能
Java Web架构师那些事

EOVA演示demo

Dorado

官网地址:http://bsdn.org/projects/dorado7

演示地址:http://bsdn.org/projects/dorado7/deploy/sample-center/com.bstek.dorado.sample.Main.d

Dorado Presentation Middleware(即Dorado展现中间件,以下简称Dorado)致力于辅助Web应用中表现层的开发过程。Dorado主要可以为您带来如下两方面的使用价值:

  • 更加美观、更加人性化的Web操作界面。
  • 更加高效的表现层开发效率。

Dorado Presentation Middleware产品包含3个主要的功能部分:Web客户端、服务端引擎、IDE集成开发工具。(见下面插图)

Java Web架构师那些事

  • Web客户端-主要利用Javascript搭建的纯浏览器前端展现系统,可支持目前较为常见的所有主流浏览器。
  • 服务端引擎-用于辅助Dorado Web客户端的自动生成,客户端与服务端的数据通信、状态同步,以及Dorado展现层与后台系统的集成等。
  • IDE集成开发工具-Eclipse插件形式的集成开发工具。用于辅助开发人员对Dorado界面及其他相关配置进行快速的定制。

主要功能特点

1. 全新的Web客户端

Dorado7提供了全新打造的Web客户端,这包括全新的基础运行框架和全新的控件库。较之Dorado的前作,新的Web客户端将带来如下的增强:

  • 支持所有主流浏览器-Dorado7将兼容所有主流的浏览器,包括IE、Chrome、Firefox、Safari、Opera以及以这5种浏览器为内核的其他浏览器。 结合目前各浏览器在性能、稳定性、功能等各方面的因素,我们推荐用户使用Chrome作为首选的浏览器。
  • 更加丰富的控件库-初始包含超过60个的界面控件,并且此数量还会不断的提高。
  • 更加Ajax-由于在设计之初给予了周全的考虑,因此Dorado7可以在几乎所有的交互过程中以异步请求替代同步请求,这将使界面的操作体验获得极大的提升。 同时,Dorado7中还提供了独特的Ajax请求自动合并技术,以尽可能减少与服务端之间的实际交互次数,进一步提高界面运行效率。
  • 管理库文件,实现按需装载-Dorado7提供了以资源包的形式对Javascript和CSS文件进行管理的功能,不但系统内部的库文件以此种方式进行管理,用户也可以将自己的库文件纳入这一管理机制。 通过这一功能,用户可以定义各资源包之间的依赖关系、实现库文件的运行时自动合并、以及库文件的按需装载。 这可以在性能优化、项目维护等方面带来诸多好处。
  • 强大的客户端调试器-新的客户端调试器可以提供分级日志、API测试、页面结构剖析等调试功能。 借助新的调试器您甚至还可以随时查看/修改任意Dorado对象的属性值、分析DataSet中的实时数据。配合Dorado7中全新的异常处理机制,相比前作开发人员将拥有更加丰富的调试手段。
  • 完整的拖拽功能支持-Dorado7中所有的控件都将支持拖拽操作的属性、事件和API接口。

2. 立体数据模型

“立体数据模型”因其相对于平面数据模型(二维数据模型)而得名。即指Dorado7推翻了Dorado前作中以DataSet为媒介、以二维表形式对于展现数据进行封装和管理的设计思路。 Dorado7不再局限数据必须以二维表结构与DataSet对接,而是可以支持非常自由的数据形式。并且也不再提供专用的数据封装对象。 这些变化使得展现层中的数据更加纯粹、更加贴切真实的业务含义。自然,也使开发变得更加便利、更加生动。

“立体数据模型”是Dorado7相对于前作最重要的概念变化,也是Dorado7最为核心的设计思想。 以上的寥寥数语并不足以阐明这一抽象概念,请参考 Dorado7方法论 中关于“立体数据模型”的更多论述。

3. 没有JSP的Web

秉承了Dorado产品的一贯风格,Dorado7仍以XML形式的视图配置文件作为定义Web界面的主要手段。 不过,在Dorado7中这里的视图配置文件被赋予了更多的内涵,视图配置文件已经可以完整的描述Web界面的所有特性,JSP不再是Dorado7的必选项。 在大多数情况下,直接访问一个视图配置文件就可以得到一个功能完整的Web界面。

可能很多开发人员对于此特性会感到一丝不安,出于某些技术人员习惯以及页面需求等原因,开发人员可能仍然需要以HTML形式来实现页面的布局。 Dorado7同样对此种使用方式提供了完善的支持。开发者可以很方便的使用JSP、Velocity或者其他类似的技术来为视图配置文件定义布局方式。 并且,新的开发方式让美工人员与开发人员的合作变得更为可行和便利。以JSP为例,Dorado7不再引入繁多的Taglib标签库,而是以纯HTML方式的占位符来辅助Web页面的布局。

4. 智能方法适配

“智能方法适配”是指允许开发人员尽可能按照自己的意愿、业务的需要来定义他们的业务方法,然后由Dorado引擎自动根据场景、参数名、参数类型等因素来判断应当怎样调用该业务方法。 “智能方法适配”是Dorado7提供的一个非常有特色的功能,提供此功能的主要目的是尽量减少开发人员所需要掌握的Dorado API,让业务方法的代码更加“业务化”,更加易于阅读。

通过“智能方法适配”也可以很好的体验出Dorado7所提倡的“基于约定而非配置”进行开发的理念。在实际的应用场景中大部分实现了Dorado前端的功能中可能并不需要引入任何Dorado的API。

5. 扩展和重用

为提高Dorado7产品的扩展性和可重用性我们在Dorado7中提供了很多新的特性,这些特性主要包括:

  • 叠加式配置-当用于需要设置或改变Dorado中的某运行参数时,通常不需要直接修改Dorado提供的缺省配置文件,而是增加一个新的、只包含最小参数集合的配置文件。 由Dorado引擎对这些配置文件进行叠加是的读取和处理,此特性可以有效的降低升级Dorado引擎可能带来的额外成本、提供项目的可维护性。
  • 利用Spring搭建的Dorado引擎-Dorado7自身的服务就是利用Spring搭建起来,不过Dorado7并不因此要求用户的项目一定要使用Spring。
  • 这个特性使得开发人员有能力利用Spring的特性来替换几乎所有Dorado自身的内部服务。
  • 数据模型对象-Dorado7中的数据模型对象既支持全局、私有、匿名等可见性,又支持类似面向对象的继承和复写。这些特性可以为配置信息的重用和维护提供很多的便利。
  • 视图配置文件模板-Dorado7中的视图配置文件支持多级模板功能,这非常有利于降低项目的管理和维护成本。
  • 视图配置的Import和Export-Dorado7的视图配置文件允许开发人员利用Import和Export这两个标记。引入来自于其他视图配置文件中的一段配置信息。
  • 用户自定义控件-Dorado7允许用户将一段已有的、具有一个通用性视图配置信息注册为一个新的自定义控件,并且Dorado的IDE也可以非常方便的支持这一新添加的控件。

6. Client Edition

Dorado7提供Dorado7 Client Edition这样一个特性的产品打包方式,Dorado7 Client Edition中只包含了Dorado7 Presentation Middleware中的Web客户端部分(即Javascript和CSS的部分)。

发布此版本的目的是为了满足各种Web项目中前端界面增强的需求。这里提到的Web项目包括基于JEE的Web项目和其他非基于JEE的Web项目,如.Net、PHP等,其定位类似于Ext。 Dorado7 Client Edition从一个侧面体现出了Dorado7产品在设计上的封装度和灵活性。

7. 不仅仅是展现中间件

虽然Dorado7的主要功能都是围绕展现层这一主题展开的,可是我们认为Dorado7连同配套的SampleCenter提供给用户的并不仅仅是对Web应用展现层的简单补充。 通过Dorado7即相关的示例所承载的是一种非常实用的Web开发最佳实践、一种新的开发模式。

因此可以说,使用Dorado您得到的可能并不是仅仅是对展现层的改良,也是对整体应用开发模式的一次度量和重铸。

Java Web架构师那些事

Dorado演示demo

代码生成工具

地址:https://gitee.com/ldh123/maker

根据数据库结构,按照用户的要求,动态生成可执行代码

生成的maven结构。spring mvc + spring + mybatis传统接口

前端多技术: easyui, bootstrap + jsp, bootstrap + freemarker, javafx ui, flutter(android + ios)

技术亮点

  • spring boot + spring + mybatis + mysql + 各种前端
  • 支持mybatis一对一,一对多,多对多关系查询,并支持动态选择是否生成
  • 支持mybatis分页查询,唯一索引删除,查询,更新等
  • 支持表中字段枚举生成
  • 支持表中字段重注释,并且同步到POJO的注释上
  • 支持对表筛选,筛选中的表可以不生成对应的pojo + mybatis mapper + dao + service + controller;
  • 表对应的前端可以动态控制,控制只显示需要的字段
  • 支持Swagger2
  • 支持vertx + sync + quasar + freemarker
  • web端支持shiro权限控制
  • 支持metrics.对系统增加了监控
  • 支持flutter版的android + ios
Java Web架构师那些事

代码生成工具1

Java Web架构师那些事

代码生成工具2

Java Web架构师那些事

代码生成工具3

Java Web架构师那些事

代码生成工具4

Java Web架构师那些事

代码生成工具5

今天的分享就到这吧,我相信还有很多优质的资源,以后我也会慢慢的补上,如有知道的小伙伴也可以通过评论来分享。

点赞+转发+评论,多多关注,以后有好的东西继续分享给大家!

感谢大家支持!


分享到:


相關文章: