用Open Source软件架构J2EE应用
Architecting J2EE Application
with Open Source Softwares
第一原则
一个好的J2EE应用首先是一个好的Java应用
一个好的Java程序首先是一个好的面向对象程序
什么是好的J2EE应用
可用(availability)
坚固(robust)
可维护、可扩展(mantainability and extensibility)
可伸缩(scalability)
可测试(testability)
什么是好的J2EE应用(continued)
可移植(migratability)
可复用(reusability)
支持多种客户端(multi-client)
简单(simplicity)
Heavy-Weight vs. Light-Weight
. 功能齐备
. 概念完整
. 支持丰富
. 简单易用
. 高定制性
. 便于测试
J2EE应用的典型架构
资源层(DAO)
数据源
数据
业务层(Service)
表现层
client
Aspects
对象
对象
架构策略
. 分层。每一层集中于本身的功能,每一层都可以屏蔽本
身的修改。
. 基于POJO。避免框架锁定,便于移植和测试。
. AOP infrastructures。用AOP解决横切问题,避免通过
OO手段解决这类问题。
资源层:O/R mapping
entity bean
TopLink
Castor
Hibernate
选择ORM工具的标准
并发和事务(支持JTA)
映射能力(类层次的映射、对象关联的映射)
封装性(对象的存储机制、CRUD操作、数据库)
遗留系统和效率(游标、非对象查询、动态查询)
业务层:容器
EJB容器
Avalon
Spring和PicoContainer
业务层:基础设施
EJB infrastructures
AOP solutions
两者的区别:
all-in-one vs. as-you-need
up-front vs. on-demand
业务层:基础设施
对象体系
错误处理
安全性
事务控制
持久化
日志
Remoting
AOP:正交分离关注点
某些问题横跨多个
对象体系,解决方法
分散在多个代码段中,
无法抽象为对象
AOP提供正交的模块
化能力
OHA OHB OHC
Aspect
Hessian简介
表现层:Thin Client vs. Rich Client
Web框架:Struts、WebWork、Velocity
Rich Client:WebStart、Applet
折中之道:XMLHTTP
基本原则
测试先行
基于POJO,摆脱锁定
面向对象
力求简单
Thanks!
熊节
xiongjie@youkuaiyun.com
http://gigix.blogdriver.com