??xml version="1.0" encoding="utf-8" standalone="yes"?>
l常被用来区分Y件架构和软g设计开发的关键几点包括 伸羃性和抽象E度的增加以?qing)作出正设计决{意义的增强。Y件架构是通过一个全局的观点,宏观的视角来理解软gpȝ作ؓ(f)一个整体如何工作?
即ɘq能够帮助区分Y件开发和架构Q它q不能帮助理解某人如何从开发提升到架构?q且Q它也不能帮助识别谁能够成ؓ(f)一个好的Y件架构师Q如果你想雇人的话你如何d找他们以?qing)你是否是一个Y件架构师?
阅读全文
]]>
OSGi技术的研究和讨?/p>
1. 开发效?/font>
2. 性能、预?/font>
3. W合OO设计
4. 避免复杂?/font>
5. 可维护性、可扩展性,可重用?/font>
分布式应?/span>
不Q?/font>
1Q?/font> 增加?jin)应用的复杂?/font>
2Q?/font> Ҏ(gu)能?x)造成一定的影响
3Q?/font> l?/span>OO Design带来一定的困难
优点Q?/font>
1Q?/font> 能满_cd客户端的需求(applet, swingQ?/span>
2Q?/font> 能同时将lg部vC同的应用服务?/font>
采用前提Q?/font>
1Q?/font> 客户端需要?/span>J2EE技术,比如Swing
2Q?/font> Z(jin)与已有的分布式应用集?span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;" new="" times="">Q?
需要将J2EElg部v到多个应用服务器3Q?/font> 实现对多应用lg部vq行控制Q提高系l灵zL、可靠?/font>
可选技术:(x)
可通过集群和负载^衡(remote interface调用单服务器应用Q来实现分布式应用的健壮性、灵zL?/span>
EJB技?/span>
~点Q?/font>
1Q?/font> 试困难
2Q?/font> 部vȝ(ch)Q?/span>classloader复杂、部|描q符复杂、开发-部vQ测试周期长Q?/span>
3Q?/font> 采用remote interface?/span>EJB不符?/span>OO Design
4Q?/font> 技术复杂,可能简单需求变得复杂开?/font>
5Q?/font> 减少?jin)应用服务器的选择
优点Q?/font>
1Q?/font> 能远E访问组?/font>
2Q?/font> 能将应用lg部vC同服务器Q分布式应用Q?/font>
3Q?/font> 支持多客L(fng)讉K
4Q?/font> 使用到异步消息模式的时候可以采?/span>message driven bean
5Q?/font> 能实现复杂的事务理
采用前提Q?/font>
1?/font> ?/span>EJB底层比较熟?zhn)?/span>
2?/font> 需要?/span>EJB的角色安全访?/span>
3?/font> 需要?/span>EJB的事务管?/span>
4?/font> 需要?/span>EJB的线E安全管?/span>
5?/font> 需要用基?/span>RMI/IIOP的分布式架构
4U?/span>J2EE基本框架
一Q非分布式框?/span>
1?/span>(Web UI tier + Business Logic tier) + implement tier + DBMS
实现单、能满大部分需求,是中型J2EE目中采用最多的框架Q虽然没有?/span>EJBQ但是层ơ清晰?/span>
优点Q?/font>
1Q简?/span>
2Q速度?/span>
3Q符?/span>OO设计
4Q容易测?/span>
~点Q?/font>
1Q仅仅适用?/span>Web UI
2Q自q理事?/span>
3Q无法实现高q发处理
4Q无法?/span>entity bean
5Q不支持?/span>JVM应用
2?/span>Web UI + local EJB + DBMS
E微复杂Q能使用EJB容器的事务,U程理Q没有采用分布式Ҏ(gu),性能比远E调用稍?/span>
优点Q?/font>
1Q降低了(jin)EJB的复杂度
2Q不?x)对基础框架造成影响
3Q本地调用对性能有一定优?/span>
4Q可以?/span>EJB容器的事务和U程理
5Q可以?/span>entity bean
~点Q?/font>
1Q比U?/span>web应用复杂
2Q单JVMq行
3Q单客户端(webQ支?/span>
4Q测试困?/span>
二.分布式框?/span>
1Q基于远E调用的分布?/span>
架构最复杂Q对有远E访问客L(fng)的需求是理想选择Q健壮、灵z,但是不容易维护、测试、实现困?/font>
优点Q?/font>
1Q?/font> 多客L(fng)支持
2Q?/font> 可将应用lg部v到多台服务器Q?/span>JVMQ?/span>
~点Q?/font>
1Q增加了(jin)复杂?/span>
2Q媄(jing)响性能
3Q调试困?/span>
4Q必dEJB容器中运?/span>
5Q异常处理复?/span>
6Q?/span>OO设计困难
2Q基?/span>Web Service的分布式
寚wJ2EE客户端调用适用性好Q无分布式调用,往往作ؓ(f)W一、第二架构的变(sh)?/span>
优点Q?/font>
1Q?/font> 通用标准Q能支持更多客户端类?/font>
2Q?/font> 提供?/span>Web service接口?/span>RMI接口更好
3Q?/font> Web service传输协议?/span>RMI更友?/span>
~点Q?/font>
1Q?/font> 性能?/font>
2Q?/font> 需要作object?/span>xml之间的{?/span>
3Q?/font> 相对?/span>java client来说Q性能也不?/span>
UI框架部分
选择UI的几个决定性因素:(x)
1Q?/font> 用户的实际需?/font>
2Q?/font> 目的性能要求
3Q?/font> 当前开发h员技术水q?/font>
J2EE框架设计几个需要强调的观点
?/font>
可维护?/font>
性能
开发效?/font>
J2EE框架设计通用法则
1Q?/font> 使用J2EEQ而不是让J2EE늝d赎ͼ因需而用Q而不是因有而用Q?/span>
2Q?/font> 万不得已不要使用EJBQ谬论:(x)?/span>EJB视ؓ(f)J2EE核心(j)Q?/span>
3Q?/font> 万不得已不要采用分布式架?/font>
4Q?/font> 企业应用不要仅仅局限于J2EE技术(业务知识Q?/span>.NET技术)(j)
5Q?/font> J2EE不仅仅是一个规?/font>
6Q?/font> 谨慎处理数据库通用性,数据?/span>J2EE应用的寿命更?/span>
7Q?/font> 利用?/span>JDBC(SQL)技?/span>
8Q?/font> 不要忽略数据库的能力
9Q?/font> 单即是美
10Q有时候?/span>EJB的好处可能来自于无状?/span>Bean
11Q在目启动初期应该考虑到性能问题
12Q在设计的时候考虑应用在集环境下q行的可能?/span>
13Q好?/span>J2EE设计来自于好?/span>OO设计
14Q用辅助类来隐藏底?/span>API实现
15Q在web UI层采?/span>MVC框架
J2EE框架设计成则
1Q?/font> 底层设计必须着眼当前可用规范而不是未来新规范
2Q?/font> 没有针对实际需求的单例E参考h(hun)值有?/font>
3Q?/font> Ҏ(gu)架进行详的试
4Q?/font> 对代码进行详注?/font>
5Q?/font> 可能早的对风险加以解决
6Q?/font> 目启动时就定所采用的服务器
7Q?/font> 在项目早期实现自动测试和构徏
8Q?/font> 在项目启动时雇䄦J2EE设计专家
9Q?/font> 避免重复发明轮子
10Q统一设计和编码风?/span>