一个实际项目Java架构设计之总体设计

1总体架构模块图1.1 抽象架构模块图

1.2 具体技术架构模块图

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

l MVC开发框架

l 工作流技术

l 用户、权限、角色管理

下面分别详细介绍。

2MVC方案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)

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

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

l 功能强大,稳定;

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

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

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

使用Oracle的好处有:

l 目前公司已经使用

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

l 客户较为认可

平平淡淡才是真

一个实际项目Java架构设计之总体设计

相关文章:

你感兴趣的文章:

标签云: