友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
八八书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

borland传奇-第章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



动,还未到达像EJB组件模型那样由虚拟服务器控管以提供系统服务等功能。但是, 
Microsoft很快在MTS 1。0中正式加入了这个功能,至此,组件模型能够顺利地加 
入企业核心服务,例如Object Pooling、Role…Based安全权限和交易管理等功能。严 
格地说,在MTS出来之后,组件模型才有资格成为关键性系统的核心组件模型。也 
因为MTS,才有后来的Microsoft DNA架构。在Windows 2000中,MTS正式成熟演进到 
+1。0,除了把MTS调整得和操作系统更契合之外,最重要的进步是大幅提升了执行 
效率,因此,Microsoft的TCPP数据大都是以+加VC++撰写的。   
在不久前推出的Windows XP中,+又进步到1。5版。在+1。5版中,Microsoft对 
+进行了许多改善,其中最重要的便是再次提升了+的执行效率,让它比+1。0 
更快。此外,延展性也是+1。5的调校重点。Microsoft为+1。5加入了Partitioning 
功能,企图让+的Application能够在不同的Container服务器(DllHost。exe)中执 
行,提供对象并联的架构,以增加+应用系统的延展性。不过,从+1。5目前实 
现的程度来看,这应该是初步的规划,未来应该还有很大的进步空间。   
此外,+1。5也加入了Application Pooling的机制,让程序员可以控制+ Container 
服务器执行的数目。当Container服务器的执行数达到右图中集区大小的数目之后, 
Windows操作系统便会重复使用已经存在的Container服务器,而不会允许客户端继续 
建立新的Container服务器,如此一来,就不会让客户端启动太多的Container服务器 
以拖垮Windows操作系统。   
而应用程序回收(Application Recycling)功能则是Microsoft为了克服+内存泄漏 
(Memory Leak)问题加入的。在+1。5中,程序员可以指定+的Application在一 
定时间、或是在+的Application的内存使用到达一定的数量、或是被调用了一定 
的次数、或是被启动了一定的次数之后就重新启动+的Application。这样,可以 
让Container服务器结束运行,而操作系统则可以回收因为+对象泄漏的内存。在 
+尚未像EJB或是一样以虚拟执行环境进行Garbage Collection之前,这倒不 
失为一个好方法,因为Windows 2000和XP在进程安全控制方面有了大幅的精进。   
此外,+1。5的组件服务程序也允许程序员直接管理和设定旧的/D组件,不 
需要再使用DCNFG。exe程序。1。5的组件服务程序整合了所有型态的组件,是相 
当不错的功能。   
从+1。5的发展来看,其他的许多功能都属于小进步,未来+的发展将会很小, 
进而+会真正地转变成Windows的核心服务之一。未来Windows的组件模型应该是由 
的组件架构来接棒,因为Microsoft仍然需要一个提供虚拟执行环境的组件架构, 
以提供良好的Garbage Collection和Partitioning的功能,进一步和EJB竞争企业系 
统的延展性,而这个征兆可以从稍后讨论的发展看得出来。       
SUN的EJB组件模型   
经过了将近2年的时间后,SUN终于在最近推出了新一版的EJB 2。0功能规格,很快也 
被BEA和Borland的BES实现出来。SUN在EJB 2。0中提出了许多先进而复杂的功能,目 
的是为了大幅强化EJB作为企业核心组件架构的本钱,以便在企业系统中和Microsoft 
下一代的组件竞争。   
从SUN定义EJB的规范开始,就展现了其和不一样的观念。EJB一开始就非常重视 
Design Pattern和组件种类,例如Session Bean和Entity Bean各自负责不同的角色, 
再借助于Java的Garbage Collection,提供了成为企业信息系统组件必要的基础。但 
是,在EJB 1。x中,所有的Bean Instance之间的调用都是使用Remote Interface方式, 
因此在许多的应用方面付出了较大的开销,导致一些情况下执行效率不佳。在EJB 1。x 
中发展出了许多的Design Pattern来改善这种现象,例如鼓励使用Coarse…Grained对 
象,以减少网络Round…Trip和Bean之间的调用次数。   
在EJB 2。0中,SUN终于为改善这个问题而提出了Local Interface。所谓Local  
Interface,是指当Bean Instance在同一个EJB Container中时,EJB Container可以 
使用Local Interface调用来代替Remote Interface调用,这样可以增加3倍以上的对 
象启动效率。另外,SUN加入Local Interface功能的重要原因是为了支持EJB 2。0中 
大幅强化的CMP(Container Managed Persistence)功能。   
简单地说,EJB 2。0中的CMP允许程序员使用EJB Query Language来定义Bean之间的关 
系。只要程序员使用EJB QL定义了一个Bean和另外一个Bean的关系(Relationship), 
那客户端便可以在存取了主要Bean之后,再通过Bean定义的Finder或是Selector方法 
取得所有的从属Bean。如果读者不太了解这个意思,可以参考下面的示意图。在客户 
端建立主CMP之后,可以通过主CMP的Finder或是Selector方法取得所有的从属Bean, 
此时,主CMP便可以通过EJB QL向数据源查询所有相关的数据,再由EJB Container根 
据查询的数据自动建立从属Bean、并且和主CMP建立关联。如此一来,2。0的CMP可以 
免除程序员自行撰写存取数据和建立CMP的程序代码的麻烦,并且允许EJB Container 
使用最佳化的方式从数据源存取数据和建立CMP。为了增加这个过程的执行效率,EJB  
2。0的功能规范要求这种Bean必须支持Local Interface,当然,这也代表着这些会 
建立关系的Bean必须执行在一个相同的EJB Container中。EJB 2。0的CMP增加了功能 
和效率,但是也增加了Bean之间相互依靠的关系,这会影响EJB程序员在设计系统时 
的布局。此外,EJB 2。0的CMP虽然提供了这么强大的功能,但这也是不同厂商实现的 
EJB服务器执行效率有差距的地方。不同EJB服务器使用的实现方法的不同,会大大影 
响执行效率。这就是为什么SUN定义了ECperf标准来检验和评比EJB服务器的真正执行 
效率的原因,这稍后会谈到。   
因此,在EJB 2。0功能规格中,SUN定义了数个机制来增加EJB服务器的执行效率,这 
在EJB的架构已经很完整的情形下是很自然的下一步。当然,除了上述的功能外,EJB  
2。0功能规格也增加了MDB(Message Driven…Bean),MDB可以让程序员使用异步的方式 
传送信息,事实上把原本JMS的功能加入到EJB的功能规格中,是为了对抗Microsoft 
把MSMQ整合进+。请看EJB进化的示意图,我认为EJB 2。0最重要的进步便是执行效 
率、OR Mapping以及EJB的查询语言。EJB的查询语言开启了未来和JDO(Java Data  
Object)的整合,目的是和Microsoft在中定义的OPath和数据对象相互竞争,这 
在稍后也会再说明。至于OR Mapping,则是一个非常复杂的机制。它规范了Bean  
Instance和数据源之间的关系,这个标准可能会让许多小的EJB服务器厂商退出EJB市 
场,或是无法完整地支持EJB 2。0的功能规格。   
再看看Local Interface的意义。在EJB 1。x中,客户端调用Bean Instance时,在 
Container中Bean和Bean之间都是使用Remote Interface的方式进行调用,如下图所示:   
事实上,图中显示的启动模式是非常浪费资源的,因为图中的Bean都属于同一个 
Container之中,为什么要使用缓慢的Remote调用模式呢?因此在EJB 2。0中定义了 
Local Interface。如下图,现在只有在跨越网络或是跨越不同的Container时才需要 
使用Remote调用模式,这大大地改善了使用的资源和调用效率。   
更好的是在EJB 2。0中,一个Bean可以同时定义Remote Interface和Local Interface。 
如此一来,Bean的使用者和组合者(Assembler)可以更有弹性地分发和部署EJB Bean。 
在EJB 2。0中,Bean只要从EJBLocalObject继承下来,就可以拥有Local Interface的 
功能。例如程序员可以用下面的程序代码来提供Local Interface的功能。本质上, 
实现和定义Local Interface的方式和原本的Remote Interface非常类似,因此EJB 
的程序员可以很自然地学会这个新的EJB功能。   
public interface YourobjectClass exten
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!