首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>J2EE>正文

J2EE综合--Java企业系统架构选择考量

http://www.oklinux.cn  2008-01-20  赛迪网 liuhui5318  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

现在Java领域各种技术百花齐放,名目繁多,如何根据自己的需求选择这些框架呢?非凡对于初学者,在学习选择方向上也非常迷茫,如何有针对性的根据自己项目特点进行学习就变的更加重要。

  下面我们从一个发展角度来对J2EE/Java EE的这些框架诞生进行一番考量,可能对我们的选择有很大帮助。

  首先我们需要明白一个高质量的J2EE系统是什么样子?高质量的J2EE/Java EE系统标准实际就是OO设计的标准,松耦合是OO设计的主要追求目标之一,那么无疑解耦性成为衡量J2EE/JEE质量的首要标准。实际选择中,还需要兼顾可伸缩性/性能/开发效率等方面综合考虑。

  J2EE/Java EE号称多层结构,为什么多层比两层好?因为多层结构解耦性好,带来维护拓展方便灵活。

  典型的J2EE/Java EE至少划分三个层次:表现层/业务逻辑组件层/持久层。

  如图,表现层英文是Presentation Layer,是实现显示功能的,这部分一般使用B/S结构来完成,当然你也可以使用专门远程客户端来实现;

  业务逻辑层因为是由大量组件(Components)组成的,也可称为组件层,组件从不同角度又可分为各种类型,然后又有不同的流派,目前占主要位置的是Model Service,模型加服务,所以这一层又称为业务服务层Business Service;也有称为Model业务层;

  持久层是负责对象持久化也就是数据库操作的层次,英文Persistence Layer。



  SUN伙伴们推出J2EE标准时,分别对这三个层次规定了标准实现,表现层使用Jsp/Servlet技术;业务组件层使用EJB的会话Bean;持久层使用实体Bean。同时,标准将业务层和持久层在物理上组成一个新的容器EJB容器,与表现层技术完全一样的容器,这样,J2EE技术被细化为Web和EJB,物理上有Web容器和Web应用程序;以及EJB容器和EJB应用程序。

  当然,J2EE/JEE的发展不止这些,这三个层次技术分别独立发展,高歌猛进,下面分别单独陈述,当你了解某种框架技术为什么诞生时,你可能就知道你该在什么情况下选择它们了,工具总是因目的而生!

表现层框架

  J2EE/Java EE虽是多层结构,但它不是一种强制性多层结构,也就是说,你也可能做成传统两层结构,有的初学者直接使用Jsp嵌入Java代码调用数据库这样结构实际不是多层结构,还是以前的两层结构。

  在Jsp中嵌入大量代码,一旦报空指针错误就很难找出问题,很多初学者下载JiveJdon 2.5后就经常碰到这个问题,因此大量有关空指针错误问题出现论坛里,为什么他们不能自己解决呢? 那是因为无法定位错误在Jsp中的位置,Tomcat等服务器只告诉我们错误在index_jsp.java(Jsp的java文件)位置,搞得一些人经常会跑到Tomcat服务器内部翻找Jsp的Java文件,这一过程无比痛苦(为了减少初学者这种痛苦,本站暂停了JiveJdon2.5的下载)。

  J2EE/Java EE的发展就是降低这种痛苦,首先想到的方式是:在Jsp调试上下苦功,要求Tomcat等服务器提供具体的错误定位;可惜到Tomcat 5.5我们也没看到这种功能;实际上,根本解决之道就是将Jsp的调试变成java组件的调试。

  首先通过MVC模式规定Jsp只能等同于Html,不能包含Java代码,将Jsp和Java代码分离,可是这样分离之后,它们结合起来又麻烦了,所以,虽然你使用MVC模式,但是还是直接基于Jsp技术,带来的是开发效率的降低。

  Struts框架解决了这个问题,通过ActionForm可以将Jsp和JavaBeans方便快速地结合起来,但是有人又抱怨Struts的ActionForm限制太死,与Jsp虽能对应,只能一个ActionForm一个表单对应,而不能任意组件JavaBeans都可以和Jsp任意字段对应,这时就出来了组件型框架JSF/Tapestry。

  表现层框架Struts/Tapestry/JSF架构比较

业务逻辑层框架

可伸缩性

  因为EJB标准的推出,业务组件层以前基本是EJB的天下,但是EJB功能实在太强大,它考虑了世界顶级大型系统需求,因此免不了显得很复杂,当初,基本上所有的大型企业高端都是选用J2EE,选用J2EE实际是选用EJB。EJB强调的高可伸缩性为大型企业日益发展提供最大的发展空间,不再因为企业快速发展导致整个企业系统结构都要发生根本变化,这是使用EJB的现实优势。

  这种企业系统的可伸缩性不是因为EJB存在才显得重要,而是我们企业架构选择需要考量的基本因素。换句话说,无论我们使用EJB与否,这个问题都需要考虑:一台服务器不够用怎么办?假如这台服务器死机会对企业运营带来什么影响?假如每个星期这台服务器停机维护升级会不会对企业带来打击?我的企业系统是不是需要可靠的、几乎不当机的7x24运行?当企业系统面对大量外部访问用户时,一台服务器是否够用?多台服务器联动的需求是否涉及软件技术更换?

  在这个现实因素考量后,假如觉得不是很重要,或者说将来一段时间内这些因素无所谓,那么可以不选用EJB了。

  为什么有不选用EJB的理由?因为它复杂,学习起来比较困难,EJB帮助我们考虑企业中可能碰到的大部分问题,实际上,有的我们不需要,这也就是为什么说EJB是一个重量级解决方案所在。

  与重量级相比的是轻量,业务组件层轻量级解决方案有Spring/HiveMidn/Jdon Framework等,轻量一词曾经因为EJB的出现而变得时髦,给人造成的感觉是:EJB花了老鼻子力气完成的那些功能,使用我轻量级解决方案可以轻而易举也能解决,举重若轻啊,其实这是一种误解。

  当曾经以轻量自居的Spring将事务机制纳入自己怀抱中时,它也开始低调轻量了,实际是不轻不重了;当然假如它把分布式计算和事务再次加入时,天平砝码也会沉下去的。

  初学者总是愿意使用简单的解决方案,学习使用方便,因此比较喜欢轻量级框架技术,这是正常的,但是在使用轻量级别框架之前必须明白:你的系统将来真的只需要一台服务器即可?你的项目完成期真的非常紧急?

  假如只需要一台巨强服务器,就不必选择EJB,EJB是因分布式多服务器而生,对于单台服务器,缺乏本地透明性,也就是说:你无法透过EJB直接和本地JVM或文件系统等打交道,透明性也是衡量一个框架的重要指标。

  当然,重量和轻量并不完全对立,EJB3就是为了简化J2EE的使用,使得EJB不只是擅优点理大型企业系统,中小型系统也使用很方便,这实际上也是EJB轻量化的一种努力。什么是Java EE 5?

共3页: 上一页 1 [2] [3] 下一页

上一篇:J2SE综合--java通过JNI与delphi交互   下一篇:究竟什么叫面向接口编程

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·进阶-当前流行的J2EE WEB应用架构分析
·Java EE/J2EE面向对象编程之道
·进阶--开发J2EE应用应遵循的几点原则
·J2EE综合:Struts上传多个文件的例子
·高级:Java/J2EE中文问题终极解决之道
·J2EE基础:分析J2EE架构的6个最佳实践
·J2EE综合--Hibernate的事务处理机制
·J2EE综合--分析Hibernate的缓存机制
·J2EE综合--业务逻辑和数据库访问决策
·J2EE综合:谈谈Java Web开发的学习路径
·J2EE综合:关于Config参数和Context参数
·J2EE综合--Struts常见错误的全面汇总
·J2EE基础:J2EE开发之常用开源项目介绍
·J2EE基础:Java的中文编程与配置心得
·J2EE框架:Spring框架的事务管理及应用
·J2EE综合:看JAVA设计模式之事务处理
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java GUI中关于布局管理器的使用方法介
·Java编程交互管理工具:SecureJSH新特
·J2SE综合技术:使用Java网络启动部署软
·Java技术社区杂文 J2EE开发框架发展简
·J2EE基础:Java EJB容器存取和实现的说
·Java编程:实例分析J2ME网络编程的两种
·关于Java编程语言中EJB容器存取和实现
·J2EE中用RMI和CORBA进行分布式Java编程
·Java编程技巧 J2ME中应用程序的内存优
·介绍JSP中表单数据存储应用的一种通用
·J2EE中的业务逻辑和数据库访问决策说明
·深入讲解JSP 2.0下的动态内容缓存技术
  阅读排行
·J2EE基础:几种Portal技术的比较与评述
·J2EE 组件开发:什么是消息驱动的EJB
·J2EE综合:Struts上传多个文件的例子
·J2EE综合--关于权限设计的详细探讨
·J2EE综合--JAVA开发工具安装配置心得
·J2EE--关于JAVA的分页查询操作技术
·J2EE基础:在Struts 2中实现文件上传
·数据库相关--Hibernate的事务和并发
·Java源码分析:深入探讨Iterator模式
·J2EE基础:j2ee所包含的13种核心技术
·对J2EE开发中常用开源项目的介绍
·[J2EE] JNDI定义Oracle数据源的方法
·J2EE基础:Weblogic服务器体系结构介绍
·datatable动态添加列应当如何来实现
·JSP/Servlet:J2EE开发环境配置个人总结
网摘收藏: