[/*Java*/][转]何为容器(Container) |
nybon 发表于 2005/3/6 19:13:24 |
何为容器
容器是基于面向服务架构(SOA)的特定规范框架,J2EE大量运用了容器和组件技术来构建分层的企业级应用。在J2EE规范中,相应的有WEB Container和EJB Container等。WEB Container,给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP、SERVLET直接跟容器中的服务接口交互,不必关注其它系统问题。WEB Container主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。比如,Resin 2.1.x以上版本提供的Servlet Container就实现了J2EE的Servlet 2.3规范。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。容器的职责
容器的职责因具体执行的服务调用规范的不同而有差别,比如Servlet Container只需实现Servlet 2.3规范。而Portlet Container,如Pluto,则需要具体实现基于JSR 168portlet 规范,具体的技术规范,比如需要实现基于容器级的事件处理机制Action Event、Message Event等。从水平的方向来看,通常容器提供系统级的服务调用。容器与应用服务器
容器是服务调用规范的具体实现,比如EJB Container是对EJB 2.0规范的实现。然而,实现只是衡量规范的执行程度,通常容器是由应用服务器来具体执行,从这个层面来说,应用服务器又可以称之为容器的容器。
容器与IOC原则
IOC,Inversion Of Control,即倒置控制,IOC自面向对象诞生起就存在,并不是最新技术,象SRP、OCP和DIP等面向对象的基本法则一样。Inversion Of Control,这个短语是由Brian Foote在他的一篇论文中最先使用的(http://www.laputan.org/drc/drc.html)。组件所需的一切通过Contexts、Configurations和Loggers的方式赋予组件。
在组件容器中,组件不需要实现或扩展(不依赖)容器类和接口,由容器在组件需要时提供其它依赖组件实例。反例:EJB其中的EJB组件需要实现几个接口,需要用JNDI或全局注册表得到其它EJB实例。
IOC,实现了组件与容器间的解耦,意味着在开发组件时同样可以采用从上至下的方法。不需要建立一个注册类,客户端必须调用此注册类才能获得组件实例。
容器与AOP技术
Aspect Oriented Programming,即“面向方面编程”。诞生于业界非常著名的施乐Palo Alto研究中心(Palo Alto Research Center,简称PARC),从AOP的概念雏形到2001年AspectJ 1.0版本仅仅花了7年时间。AOP起源于Gregor Kiczales领导的一个研究反射(reflection)和元对象协议(metaobject protocol)的小组,小组的研究领域曾被认为是在面向对象程序中提供灵活性至关重要的技术。然而,在多年以后,他们才认识到横切(crosscutting)正在他们寻找的技术。
目前,基于Aspect研究技术,诞生了很多基于Aspect的Framework。具体请参见:AOSD(Aspect Oriented Software Development)http://www.aosd.net/。
下表为当前三种成熟Aspect Framework比较:
Framework
Language
Pointcuts
Weaving method
Dynamic/Fluid
Nanning
Java (or XML)
Method calls,
instantiation
Dynamic proxies
Yes
AspectJ
Language extension to Java
Anything
Source code
No
Aspectwerkz
Java and XML
Method calls,
instantiation,
field access,
more
Byte code
Yes
当前,基于AOP的容器不多, 构建在PicoContainer之上的NanoContainer则使用了Nanning的Aspect Framework。
|
|
|

.: 公告
This blog focuses on:
Semantic Web && Java Technology |
|
« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
.: 我的分类(专题)
|

.: 最新日志
.: 最新回复
|

blog名称:SW Portal 日志总数:171 评论数量:219 留言数量:8 访问次数:1044153 建立时间:2004年10月30日 |
|

.: 留言板
|

.: 链接
|

|