ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java架构设计之总体设计案例

2022-08-08 18:03:18  阅读:570  来源: 互联网

标签:架构设计 Java Freemarker springMVC 数据库 总体设计 MVC 组件 struct2


1      总体架构模块图

1.1   抽象架构模块图

 

 

 

1.2   具体技术架构模块图

 

如上图示所,框架主要包括了:

l  MVC开发框架

l  工作流技术

l  用户、权限、角色管理

下面分别详细介绍。

2      MVC方案

2.1   视图层技术方案(view)

在常用开发框架的应用中,常用于视图层的有:Jsp ,Jsf,Freemarker,Xslt, Velocity等.JSP:常用的一种视图层,无法实现严格的MVC分离,JSP代码几乎等同于Java代码。表现逻辑与代码相混杂,代码重用性,系统维护性比较低。下面分别介绍:

l  JSF:基于组件事件驱动,遵循JAVAEE的标准,上手快,有大量可重用组件。对RESET支持不好,没有一个统一的实现,既有SUN的实现,又有apache的实现-myfaces,编写定自定义组件要求高,比较适合做企业应用。

l  xslt:模板技术之一,有极佳的拓展性和重用性,可实现严格的MVC分离。Xslt缺乏强有力的编辑器支持。在性能上,相对于JSP,Freemarker,Velocity,在等同复杂页面度的表现层逻辑,xslt性能比其他几个差距比较大,占用的内存空间也比较多。

l  Velocity:常用的模板技术之一,可实现严格的MVC分离,简单轻量级,语法简单。vtl语法需要一定上的学习时间,不支持jsp标签。

l  Freemarker:常用的模板技术之一,可实现严格的MVC分离。与Velocity相比,Freemarker功能更加强大,对表现逻辑和业务逻辑的划分更加严格,可自定义macro,Freemarker同时支持JSP的标签。Freemarker对于语法相对比较严格,变量必须赋值,map的key必须为string。

基于以上分析,结合开发效率和运行效率,建议采用Freemarker作为视图层的技术。

2.2   控制层方案(controller)

在常用的控制层技术中,有struct1,struct2,springMVC等。

1)       struct1:比较早的一个控制层框架,非线程安全,现在很少使用。

2)       struct2:较为成熟并应用非常广泛的框架,即经典的SSH,比较热门

3)       springMVC:后起之秀,目前最有前景的技术,以下列出与struct2主要对比项:

l  在性能上,springMVC优于struct2。

l  springMVC隶属spring团队的产品,学习过spring的人,上手快。

l  springMVC可实现配零配置,struct2需要无法做到零配置。

l  对于开发效率来讲,springMVC相对struct2,效率高。

l  pringMVC内置restful,无需第三方插件的支持。

l  标杆对照,在淘宝、拍拍等大型电商网站中,也采用springMVC作为控制层技术,有很多资料可作为参考。

从技术的先进性、复杂性上考虑建议采用springMVC作为控制层。

 

2.3   模型层(module)

可以选用两大主流的开源ORM组件:hibernate和MyBatis。

l  Hibernate学习门槛比较高,限制对象模型,在多表、复杂查询下,优化难度较高。对于后期的维护或者重构来说,难度较大。

l  MyBatis属于半ORM框架,可以对sql做到精细控制,但是开发效率来讲,比hibernate相对慢些,但是利于后期的维护于重构。

从灵活性、可控性、学习成本和本人熟悉程度考虑,配合使用codeSmith代码生器能大幅提高开发效率,建议采用MyBatis,作为项目的ORM框架。

 

2.4   数据库(database)

可能被采用的数据库OracleMySQL,使用Mysql的好处有:

l  源免费数据库,使用较新稳定版本5.5

l  功能强大,稳定;

l  经历过有广泛的成熟的应用实践考验;

l  使用经验比较丰富,容易上手,使用简单;

l  视用户量情况考虑,前期小规模的时候采用Master-Slave主从模式备份。后期逐步考虑:实现数据库读写分离。并可考虑分表、分库,还可以使用集群提升读性能。

使用Oracle的好处有:

l  目前公司已经使用

l  性能好、安全性高,各种方案完整

l  客户较为认可

基于目前公司已使用,所以建议仍采用oracle,但如果需要降低成本可以采用Mysql。

2.5   推荐MVC技术方案流程

2.5.1  总体流程图

 

2.5.2  控制层(controller)流程图

 

 

 

3      用户、角色、权限管理模块

CAS +LDAP

4      工作流方案

可以选择的技术主要有:JBPM4,JBPM5,Activiti5

序号

技术组成

Activiti

jBPM5

1

数据库持久层ORM

MyBatis3

Hibernate3

2

持久化标准

JPA规范

3

事务管理

MyBatis机制/Spring事务控制

Bitronix,基于JTA事务管理

4

数据库连接方式

Jdbc/DataSource

Jdbc/DataSource

5

支持数据库

Oracle、SQL Server、MySQL等多数数据库

Oracle、SQL Server、MySQL等多数数据库

6

设计模式

Command模式、观察者模式等

 

7

内部服务通讯

Service间通过API调用

基于Apache Mina异步通讯

8

集成接口

SOAP、Mule、RESTful

消息通讯

9

支持的流程格式

BPMN2、xPDL、jPDL等

目前仅只支持BPMN2 xml

10

引擎核心

PVM(流程虚拟机)

Drools

11

技术前身

jBPM3、jBPM4

Drools  Flow

12

所属公司

Alfresco

jBoss.org

由于目前还未深入分析,初步设想可能偏向于Activiti5,因为它更好的与当前架构集成

 

5      数据集成ETL工具

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle采用了LGPL协议,即修改后的程序可以不公开发布,可以放心的使用,而不用考虑版权问题。

 

6      通用基础模块/组件方案

6.1   日志组件

l  采用J2EE平台最常用的Log4J日志组件

6.2   Cache组件

l  前期使用单台应用服务器的时候可以直接使用Mybatis内置缓存机制或者是服务器缓存开发;

l  后期根据实际运营情况,要使用集群部署方式时,使用Memcached组成分布式集群缓存,这样就不存在缓存同步的问题。

l  通过Spring的AOP结合Memchched将缓存功能嵌入到代码中,根据实际的业务场景,制定缓存策略。

 

标签:架构设计,Java,Freemarker,springMVC,数据库,总体设计,MVC,组件,struct2
来源: https://www.cnblogs.com/soft1188/p/16562843.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有