jeecms 基本架构研究

          最近工作需要内容管理系统,下载了jeecms v5 顺便学习一下它的架构:

采用框架为:Hibernate3.3.2+spring3.05+springMVC+freemarker2.3.16

Hibernate:采用非注解持久化操作对数据访问层(DAO)的实现.

         优点:1.支持多个数据库的切换oracle,mysql等支持,

                    2.支持以及缓存的和二级缓存的使用。

          缺点:1.sql语句部分有框架自动生成,不方便性能优化。针对系统性能要求比较高的系统hibernate自动生成实现比较难。

                     2.不方便维护。

                     3.针对hibernate的高级使用对开发人员要求很高,学习曲线比较高。

 Spring:实现项目中各层的粘合,以及解耦事务处理。

       优点:1.通过IOC注入使各组件解耦。

                  2.使用AOP实现事物的处理。采用注解事物,也深知其使用的优缺点。优点干净简洁易修改,缺点不利于维护,业务与配置混杂。

                 3.方便和其他第三方框架整合,jar可以按需分配不需要全部导入。

                 4.框架活跃程度比较高。

                 5.便于测试,易于维护

         缺点:

             1.针对部分代码底层采用反射或者代理性能不是太好。

             

springMVC负责控制层的业务逻辑的处理。

           

freemarker:负责页面的页面和展示。

      系统中模块划分比较明确,分为三部分cms,core,common。

cms根据cms中层的划分和作用划分action,dao,entity,lucene,service,task等。

core主要一些系统管理相关的权限,配置,数据文件,Ftp管理以及用户认证。

common:主要是一些工具的封装使用如:fck,验证码,图片操作,ip追踪,搜索,安全。文件上传等工具雷。

       此系统基于整站模板引擎技术,js,Css,图片等资源与模板分离,模板放置在WEB-INF下,因此仅能通过springmvc去调用,安全性非常棒,分离也非常清晰。页面请求使用了伪静态,便于搜索引擎收录。然后就是有一套完善的日志系统,搜索采用了流行的lucene和baoding分词做搭配。此外数据库配有连接池commons-pool,据说性能不是太好。系统中为了防止xss攻击采用过滤器处理用户的操作请求信息,但是处理不够完善。hibernate配有二级缓存与持久化缓存。验证码也使用了现成的组件jcaptcha简单易用,Ajax使用了Json介质,在线编辑器使用的FCK。针对用户的追踪和分析采用的ipseek针对用户来源的分析。通过封装类似spring-security的权限管理,控制用户留言的控制以及用户权限和后台管理制发布新闻的控制审查。针对用户的用户回话的管理采用的缓存管理回话中心,保证了系统的分布式的使用。在图片操作方面采用 jmagick,jar比较小有图片操作瑞士军刀之称。源码的研究还是具有一定的价值的,便于以后开发类似系统总结经验和实践。

            

猜你喜欢

转载自topmanopensource.iteye.com/blog/2079275