J道的老大banq曾经说过设计模式是衡量一个程序员水平高低最重要的标准。个人非常赞同这个观点,从这个角度看学好J2EE第一个要了解的就是作为一个庞大复杂的系统,它是如何由各个模块拼装并协同有效地运作。
先来几个定义暖暖身 Definitions of Different Dimensions in J2EE
Tiers: A logical or physical organization of components into an ordered chain of service providers and consumers. Components within a tier typically consume the services of those in an "adjacent" provider tier and provide services to one or more "adjacent" consumer tiers. Within a tier, services are grouped to like requirements, such as functionality, security, or load distribution.
Layers: The hardware and software stack that hosts services within a given tier. Physical, network, and software platforms and standard API sets support the components that provide a service. Layers, like tiers, represent a well-ordered relationship across boundaries that are mediated by interfaces. Whereas tiers represent processing chains across components, layers represent container/component relationships in implementation and deployment of services.
Tiers层的概念是我们最常听到的,一般来说它可以分为 (客户) <---交互---> [ Client Interface --- Presentation Tier --- BizLogic Tier --- Integration Tier --- Resource Tier ]
Client Interface 典型的客户界面为IE, Swing, Applet, WAP等,客户与之直接交互
Presentation Tier 负责接受客户请求并返回相应的处理结果。登陆,权限检查,会话管理在此进行,从技术角度就是JSP HTML等
Business Logic Tier 负责处理业务逻辑和数据,是J2EE的核心,它也同时管理事务Transaction,EJB等在这一层
Integration Tier 负责连接业务逻辑层与系统资源层,最常见的JDBC数据库连接就是一个例子
Resource Tier 负责提供上层所需要的资源,比如数据库, File System, Legacy System等等
结合实际应用和设计模式,我们可以将层次进一步划分。多层次会降低效率,也会导致出现很多看似“无用”的代码,但正是这些代码实现了低耦合从而降低了后期维护成本。
1) Presentation Tier应用MVC模式, 将程序流程控制器(Controller) 视图(View)和数据三者分离,如Struts就是其中一员大将。Filtering和User-Role-Priviledge-Resource也常在使用(具体还会开新贴细谈)
2) Business Logic Tier 和Presentation Tier的低耦合由Business Delegate层实现,很典型的例子 BusinessDelegate -> BusinessMgr (EJB) -> ...而Facade模式也经常在这里被用来做封装。
主要参考文献:软件体系架构模式在J2EE中的应用
主要参考项目:Medlog Logistic PACE2 SCS
J2EE学习笔记(4) 软件工程与系统框架
时间: 2024-09-26 13:35:56
J2EE学习笔记(4) 软件工程与系统框架的相关文章
扬扬的J2EE学习笔记(四)Platform Services平台服务
j2ee|services|笔记 每周学一些J2EE,作点笔记. 目标:能熟练使用Websphere做J2EE的开发工作. 加油!加油!!加油!!! 1. 平台服务概述 1) 为应用编程的部署提供服务. 2) 命名服务:能够帮助应用客户端寻找企业Beans:寻找通过Java Naming Directory Interface(JNDI)访问naming环境的WEB组件. 3) 无须更改源代码就能定制组件 4) 使用JNDI接口,J2EE组件可以定位自己的环境名称内容(envi
Flash/Flex学习笔记(37):不用系统组件(纯AS3)的视频播放器--只有8.82K
以前为了赶项目,利用系统组件制作过一款视频播放器(见Flash/Flex学习笔记(6):制作基于xml数据源的flv视频播放器),但是系统组件实在是太大了,最终生成的swf居然有103K,随着AS3的深入学习,昨天又弄了一个只用AS3的播放器,最终只有8.82K,呵呵,这肥减得那是相当厉害. 用到了上一篇(Flash/Flex学习笔记(35):自己动手实现一个滑块控件(JimmySilder))里自己写的的滑块控件,主要代码如下(关键是NetConnection与NetStream对象的使用):
J2EE学习笔记--Struts中文问题
JSP的中文乱码问题,其根源在于:Web容器默认的字符处理编码是iso-8859-1,对于需要在浏览器页面上显示中文的JSP程序,但在程序中并没有指定中文的字符集,那么中文将在浏览器页面上显示为乱码.当然,前面所说的是指在Tomcat服务器下的,其他服务器有些不是这样的,比如BEA Weblogic和IBM Websphere是从操作系统中取得默认的编码,然后按该编码来转码所有用户请求.以前我也写过一遍JSP的学习笔记,关于本地化和国际化的,那里有详细解释在Tomcat服务器下中文
J2EE学习笔记--MVC框架
MVC是一种软件设计模式,最初是为SMALLTALK-80语言提出来的,但后来在JSP开发中渐渐得到广泛应用,并且成为Sun公司推荐的J2EE平台的设计模式.Sun公司提出的Model2开发模型就是基于MVC设计模式的应用,在Web应用程序开发中,MVC框架应用非常广泛,特别适合应用在大型的.比较复杂的项目开发中. MVC框架即是模型-视图-控制器(Model-View-Controller)设计模式.其中,M代表Model,V代表View,C代表Controller.MVC的核心思想是将来
扬扬的J2EE学习笔记(三)Components and Roles组件和角色
j2ee|笔记 每周学一些J2EE,作点笔记. 目标:能熟练使用Websphere做J2EE的开发工作. 加油!加油!!加油!!! 1. 架构 1) 组件:一个应用级的软件单元 J2SE拥有JavaBeans:J2EE拥有EJB(Enterprise JavaBeans) 2) 系统级实体容器 提供:运行支持.生命周期管理.安全.部署.线程 3) applet和客户应用程序 客户端组件执行自己的Java虚拟机(JVM) 4) WEB组件:
扬扬的J2EE学习笔记(二)J2EE的客户端/服务器
j2ee|笔记|服务器|客户端 每周学一些J2EE,作点笔记. 目标:能熟练使用Websphere做J2EE的开发工作. 加油!加油!!加油!!! 图3 J2EE场景 图三里须注意的是: 1.Tier integration is the center of the J2EE programming model. 2.用户使用Browser方式访问: 1) Browser:使用HTML,HTTP,XML.可能经过防火墙 2) Web container:使用JSP,Serve
扬扬的J2EE学习笔记(一)概述
j2ee|笔记 扬扬今天开始学习J2EE啦! 目标:尽可能在最短时间内,把J2EE体系结构相关了解个大概,以后再慢慢往深处学习. 加油!加油!!加油!!!一.分布式的多层应用程序 图1 分布式的多层应用程序 J2EE平台使用多层分布式的应用模式.应用逻辑根据其功能分成多个组件,各种不同的应用组件构成分布在不同的依赖于层的机器上的J2EE程序.位于不同层的组件有: ☆ 运行在客户机上的客户层组件 ☆ 运行在J2EE服务器上的网络层 ☆ 运行在J2EE服务器上的逻辑层 ☆ 运行在
学习笔记TF062:TensorFlow线性代数编译框架XLA
XLA(Accelerated Linear Algebra),线性代数领域专用编译器(demain-specific compiler),优化TensorFlow计算.即时(just-in-time,JIT)编译或提前(ahead-of-time,AOT)编译实现XLA,有助于硬件加速.XLA还在试验阶段.https://www.tensorflow.org/versions/master/experimental/xla/ . XLA优势.线性代数领域专用编译器,优化TensorFlow计算
扬扬的J2EE学习笔记(五)Installing J2EE SDK(安装J2EE SDK)
j2ee|笔记 每周学一些J2EE,作点笔记. 目标:能熟练使用Websphere做J2EE的开发工作. 加油!加油!!加油!!! 以在Linux下安装为例. 1 准备安装J2SE普通用户身份:./j2sdk-1_3_1_01-linux-i386-rpm.bin运行安装程序,最后生成jdk-1.3.1_01.i386.rpm文件2 安装J2SE SDK1) su root身份:rpm -iv jdk-1.3.1_01.i386.rpm得到jdk-1.3.1_01-fcs2) cd /usr发现