房
房客
Unregistered / Unconfirmed
GUEST, unregistred user!
图片版请访问http://jp.njuct.edu.cn/crystal/uploadtools/members/COM_DCOM_CORBA_EJB_RMI_WebServices.mht
COM/DCOM、CORBA、EJB、RMI和WebServices
作者:房客 tingweb@wx88.net
引言:COM/DCOM是解释业务逻辑的一种表现方式,目前不断发展的衍生、相关技术还有CORBA、EJB(J2EE)、RMI、SOAP(WebServices)等,群雄逐鹿。
COM/DCOM
COM/DCOM(Common Object Modal/Distribute Common Object Modal)在Windows操作系统应用为代表(内部集成),但也能应用在UNIX、IBM大型机,只不过Microsoft一向集成为免费的代名词,是否完全免费目前还不得而知,可以使用VC++,DELPHI,VB,COBOL等语言工具开发,COM/DCOM系统是一种二进制标准,开发人员通过一些虚拟表格(vTable)中的函数指针来调用操作Object的方法。从表现形式通俗的说,COM为您提供一个对象(Object),一个对象可以拥有多个接口(Interface),一个接口可以拥有多个方法(Method)和多个属性(Property)等。操作系统的注册表记录接口ID和类ID(都以GUID,全球唯一标识符表示,硬件地址+时间+随机数以及其他信息合成),顺便提一下GUID的作用,全球趋势一个是保护个人隐私,另一个是全球信息的统一,正象你编写的书籍有ISBN,让全国的图书编目索引管理更高效,你也可以想象你的秘密应用系统的每个用户如果在入侵你系统的同时留下GUID,你可以考虑马上去雇FBI了。。。
我们不妨挖掘DELPHI提供的类型编辑器,此外使对象还能容纳Enum、Record、Union、Module等,我们很容易的添删,并能将其转换到其他接口描述语言MIDL或CORBAIDL。
CORBA
CORBA(Common Object Request Broker Architecture)的核心是是ORB(Object Request Broker,对象请求代理),ORB负责CORBA体系在时间和空间对于不同对象的管理和调度(以TCP/IP协议作为通信基础),而IIOP(Internet ORB协议)是ORB之间的通信协议,这个标准的建立使更多的开发环境可以交互,可以说带来了一个新的互联网开发时代。这样看来,CORBA的结构比COM/DCOM更加强壮,并且伸缩性更强。
所幸,CORBA中对对象(基对象)的基本处理是COM基础上的扩展,但对于对象的接口和指针的使用减少了。CORBA使用ORB来创建对象,对于对象的开发概念与COM/DCOM类似,不再介绍,对象的标识不同于COM/DCOM的GUID,CORBA使用IOR(互操作对象引用结构),IOR可能没有GUID那么有争议,但它在CORBA结构中却承担着更加重要的作用,IOR是早期IBM在创立SOM(Standard Object Modal)的时候设立的,特点是结构强大、伸缩性强,它负责对对象所在物理载体或者其他ORB来定位。
同时CORBA使用了代理、骨架来描述其架构,通过图11来理解其作用更加具有鲜明度。
(图11)
对于CORBA的欢迎度,可能也是Microsoft急于推出COM+的原因之一。
RMI
RMI(Remote Method Invocation)结构的最直接用途是协调Java虚拟机之间Java对象和其他对象的交互。通常我们看到的应用是建立在RMI/IIOP基础上的,因为RMI的核心就是建立在Internet上CORBA的Java对象通信方式,而且由于IIOP标准协议的引入,对于非Java对象也能自由为之服务。
基本的开发流程是创建一个实现类(实现远程接口方法)、创建一个设置类(将可激活类的实例信息和标识符的注册为Remote MethodID)、,在实际开发中要注意的有很多实际问题,如如果不是自动激活对象,Remote object需要每次在服务器启动时加载并注册,RMI只能(必须)返回可序列化(serializable)的类。
EJB
EJB(Enterprise Java Bean)的作用是为所有JavaAPI设立标准的对象和接口,把业务逻辑封装起来提供给开发商、应用商使用。从此我们清楚地认识到网络计算(Network Computing)和基于组件的开发模型(Component-based Dev),开创了中间件技术(Mid-ware)的基于服务器端中间层构件的开发领域革命。
EJB的强大首先归功于JAVA技术的强大和广泛应用。其技术范畴有:Java 2 Standard Edition、RMI/IIOP、JDBC、Java Message Service、Java Name Directory Interface、Servlet、Java Service Page、Java Mail、Java Bean Activeaction FrameWork、Enteprise Java Bean、Java Transaction API等。
我们认识到COM/DCOM、CORBA的相似点在于对象拥有如创建、标识等基本方法,EJB使用具有更多特性的“容器”技术,EJB在容器(Container,管理一个或多个EJB类/实例的抽象)中发挥更多作用,如:生存期的管理、方法调用的状态管理、用户授权管理、事务回滚提交和数据永久性,如图12。
(图12)
此外,初识EJB的朋友如果重视EJB中角色的分类和理解就更容易明白EJB的体系:
EJB的提供者、EJB的组装者、EJB部署者、EJB服务器供应商(如BEA等)、EJB容器提供商和EJB系统管理员。
实体(Entity)Bean和会话(Session)Bean来体现业务逻辑的描述,可以简单理解为暂时性的和持久性的。关于J2EE中数据流程中EJB做主导的作用以图来解释更加直观,如图13:
(图13)
开发EJB的三个关键构件为EJBHome 接口(扩展自javax.ejb.EJBHome接口,使用factory设计模式,定义创建、查找EJB的方法)、EJBObject接口(扩展自javax.ejb.EJBObject接口,使用proxy设计模式,定义Bean中实现业务逻辑的方法)和Bean实现类(实现javax.ejb.EntityBean/SessionBean,实现业务逻辑)。
因此EJB的开发流程可以简单描述如下:
1.创建远程接口
2.创建Home接口
3.创建Bean的实现类
4.创建“部署描述符”
5.将上述文件打包(EJB-jar)
6.部署EJB
对于EJB系统开发关系的理解如图14:
(图14)
SOAP
SOAP(Simple Object Access Protocal)。
我们先简单了解WebServices运作模式。服务端生成服务描述文件WSDL(Web Services Description Language,类似COM的Interface Description Language),如果接收客户端的SOAP请求消息(XML格式数据),解析其调用和参数,根据WSDL和WSML(Web Services Meta Language,Microsoft为描述WSDL里提供的方法与实现该方法的COM对象之间的映射关系而特地设立),调用相应COM对象完成指定功能,并返回到SOAP消息遣至用户;客户端取得并解析服务端的服务描述文件从而得知服务端的服务内容及调用方式,生成SOAP请求消息(指定调用的方法名称和参数)送往服务端。
WebServices技术自从标准设立以来已经引起众多开发商关注。目前比较常用的有Microsoft SOAP Toolkit(http://msdn.microsoft.com/soap)、IBM Web Services Toolkit(http://www.alphaworks.ibm.com/aw.nsf/reqs/webservicestoolkit)等推出,BORLAND DELPHI6在其出名的RAD方式推出其WebServices Wizard、Microsoft .NET开发环境中的C#也能够快速开发WebServices,此外还有Apache SOAP(http://xml.apache.org/dist/soap)等。
(图15)
Microsoft SOAP Toolkit(其包含内容如图15)的关键在于提供了一整套的COM 对象来处理与SOAP相关的所有数据。Microsoft SOAP Toolkit提供的客户端的组件,可以让你指定WSDL,然后轻松调用对应的Web Service,其服务端的组件,可以让你指定WSDL、WSML和COM对象,自动为你生成Web Service,其底层的处理组件,可以让你操纵SOAP消息的具体创建、处理和传输的过程。还提供了高低二种开发接口,高层开发使用户简单操作SoapClient和SoapServer二个COM对象实现WebServices(确实在.NET开发系统中WebServices的建立被做得极其简单),如果开发者需要控制和SOAP的处理过程,可以在其低层开发接口基础定义一些特殊对象来处理诸如代理服务器、连接信息以及对结果进行序列化等。
IBM Web Services Toolkit是建立在Java应用的Web Services开发包,需要安装SUN JDK或者IBM JDK,是Linux下进行Web Services开发的利器,能出色地和IBM其他软件系统产品进行握手和交互。这无疑为Java在SOAP WebServices应用架起了桥梁。
IBM在此基础上开发出又一工具包直接面向商用开发,Web Services Process Management Toolkit。其应用结构如图16:
(图16)
Borland DELPHI6也不甘落后,以其出名地Wizard快速开发建立WebServices的DELPHI IDE,依据其快速的数据库开发效率和出色的技术接口完全可以建立在列强中争得一席之地,甚至可以只写数行代码完成一个能接口各种数据库的WebServices(和.NET开发环境中C#号称地方便如出一辙),如图17:
(图17)
Microsoft .NET在其推出的C#开发工具中提供了快速的WebServices开发环境,如图18:
(图18)
过分地是在其建立的项目代码中将初始的注释还原就是一个WebServices之C#版的HelloWorld。编译结果如图19:
(图19)
至此,我们看到了软件开发从COM时代到WebServices的功能和架构,但每一项都是具有强大发挥潜力的开发概念,需要我们共同去挖掘,如果您作为一个软件开发经理是否拿得出几个稳定、高效、安全、拓展能力强的设计理念?
COM/DCOM、CORBA、EJB、RMI和WebServices
作者:房客 tingweb@wx88.net
引言:COM/DCOM是解释业务逻辑的一种表现方式,目前不断发展的衍生、相关技术还有CORBA、EJB(J2EE)、RMI、SOAP(WebServices)等,群雄逐鹿。
COM/DCOM
COM/DCOM(Common Object Modal/Distribute Common Object Modal)在Windows操作系统应用为代表(内部集成),但也能应用在UNIX、IBM大型机,只不过Microsoft一向集成为免费的代名词,是否完全免费目前还不得而知,可以使用VC++,DELPHI,VB,COBOL等语言工具开发,COM/DCOM系统是一种二进制标准,开发人员通过一些虚拟表格(vTable)中的函数指针来调用操作Object的方法。从表现形式通俗的说,COM为您提供一个对象(Object),一个对象可以拥有多个接口(Interface),一个接口可以拥有多个方法(Method)和多个属性(Property)等。操作系统的注册表记录接口ID和类ID(都以GUID,全球唯一标识符表示,硬件地址+时间+随机数以及其他信息合成),顺便提一下GUID的作用,全球趋势一个是保护个人隐私,另一个是全球信息的统一,正象你编写的书籍有ISBN,让全国的图书编目索引管理更高效,你也可以想象你的秘密应用系统的每个用户如果在入侵你系统的同时留下GUID,你可以考虑马上去雇FBI了。。。
我们不妨挖掘DELPHI提供的类型编辑器,此外使对象还能容纳Enum、Record、Union、Module等,我们很容易的添删,并能将其转换到其他接口描述语言MIDL或CORBAIDL。
CORBA
CORBA(Common Object Request Broker Architecture)的核心是是ORB(Object Request Broker,对象请求代理),ORB负责CORBA体系在时间和空间对于不同对象的管理和调度(以TCP/IP协议作为通信基础),而IIOP(Internet ORB协议)是ORB之间的通信协议,这个标准的建立使更多的开发环境可以交互,可以说带来了一个新的互联网开发时代。这样看来,CORBA的结构比COM/DCOM更加强壮,并且伸缩性更强。
所幸,CORBA中对对象(基对象)的基本处理是COM基础上的扩展,但对于对象的接口和指针的使用减少了。CORBA使用ORB来创建对象,对于对象的开发概念与COM/DCOM类似,不再介绍,对象的标识不同于COM/DCOM的GUID,CORBA使用IOR(互操作对象引用结构),IOR可能没有GUID那么有争议,但它在CORBA结构中却承担着更加重要的作用,IOR是早期IBM在创立SOM(Standard Object Modal)的时候设立的,特点是结构强大、伸缩性强,它负责对对象所在物理载体或者其他ORB来定位。
同时CORBA使用了代理、骨架来描述其架构,通过图11来理解其作用更加具有鲜明度。
(图11)
对于CORBA的欢迎度,可能也是Microsoft急于推出COM+的原因之一。
RMI
RMI(Remote Method Invocation)结构的最直接用途是协调Java虚拟机之间Java对象和其他对象的交互。通常我们看到的应用是建立在RMI/IIOP基础上的,因为RMI的核心就是建立在Internet上CORBA的Java对象通信方式,而且由于IIOP标准协议的引入,对于非Java对象也能自由为之服务。
基本的开发流程是创建一个实现类(实现远程接口方法)、创建一个设置类(将可激活类的实例信息和标识符的注册为Remote MethodID)、,在实际开发中要注意的有很多实际问题,如如果不是自动激活对象,Remote object需要每次在服务器启动时加载并注册,RMI只能(必须)返回可序列化(serializable)的类。
EJB
EJB(Enterprise Java Bean)的作用是为所有JavaAPI设立标准的对象和接口,把业务逻辑封装起来提供给开发商、应用商使用。从此我们清楚地认识到网络计算(Network Computing)和基于组件的开发模型(Component-based Dev),开创了中间件技术(Mid-ware)的基于服务器端中间层构件的开发领域革命。
EJB的强大首先归功于JAVA技术的强大和广泛应用。其技术范畴有:Java 2 Standard Edition、RMI/IIOP、JDBC、Java Message Service、Java Name Directory Interface、Servlet、Java Service Page、Java Mail、Java Bean Activeaction FrameWork、Enteprise Java Bean、Java Transaction API等。
我们认识到COM/DCOM、CORBA的相似点在于对象拥有如创建、标识等基本方法,EJB使用具有更多特性的“容器”技术,EJB在容器(Container,管理一个或多个EJB类/实例的抽象)中发挥更多作用,如:生存期的管理、方法调用的状态管理、用户授权管理、事务回滚提交和数据永久性,如图12。
(图12)
此外,初识EJB的朋友如果重视EJB中角色的分类和理解就更容易明白EJB的体系:
EJB的提供者、EJB的组装者、EJB部署者、EJB服务器供应商(如BEA等)、EJB容器提供商和EJB系统管理员。
实体(Entity)Bean和会话(Session)Bean来体现业务逻辑的描述,可以简单理解为暂时性的和持久性的。关于J2EE中数据流程中EJB做主导的作用以图来解释更加直观,如图13:
(图13)
开发EJB的三个关键构件为EJBHome 接口(扩展自javax.ejb.EJBHome接口,使用factory设计模式,定义创建、查找EJB的方法)、EJBObject接口(扩展自javax.ejb.EJBObject接口,使用proxy设计模式,定义Bean中实现业务逻辑的方法)和Bean实现类(实现javax.ejb.EntityBean/SessionBean,实现业务逻辑)。
因此EJB的开发流程可以简单描述如下:
1.创建远程接口
2.创建Home接口
3.创建Bean的实现类
4.创建“部署描述符”
5.将上述文件打包(EJB-jar)
6.部署EJB
对于EJB系统开发关系的理解如图14:
(图14)
SOAP
SOAP(Simple Object Access Protocal)。
我们先简单了解WebServices运作模式。服务端生成服务描述文件WSDL(Web Services Description Language,类似COM的Interface Description Language),如果接收客户端的SOAP请求消息(XML格式数据),解析其调用和参数,根据WSDL和WSML(Web Services Meta Language,Microsoft为描述WSDL里提供的方法与实现该方法的COM对象之间的映射关系而特地设立),调用相应COM对象完成指定功能,并返回到SOAP消息遣至用户;客户端取得并解析服务端的服务描述文件从而得知服务端的服务内容及调用方式,生成SOAP请求消息(指定调用的方法名称和参数)送往服务端。
WebServices技术自从标准设立以来已经引起众多开发商关注。目前比较常用的有Microsoft SOAP Toolkit(http://msdn.microsoft.com/soap)、IBM Web Services Toolkit(http://www.alphaworks.ibm.com/aw.nsf/reqs/webservicestoolkit)等推出,BORLAND DELPHI6在其出名的RAD方式推出其WebServices Wizard、Microsoft .NET开发环境中的C#也能够快速开发WebServices,此外还有Apache SOAP(http://xml.apache.org/dist/soap)等。
(图15)
Microsoft SOAP Toolkit(其包含内容如图15)的关键在于提供了一整套的COM 对象来处理与SOAP相关的所有数据。Microsoft SOAP Toolkit提供的客户端的组件,可以让你指定WSDL,然后轻松调用对应的Web Service,其服务端的组件,可以让你指定WSDL、WSML和COM对象,自动为你生成Web Service,其底层的处理组件,可以让你操纵SOAP消息的具体创建、处理和传输的过程。还提供了高低二种开发接口,高层开发使用户简单操作SoapClient和SoapServer二个COM对象实现WebServices(确实在.NET开发系统中WebServices的建立被做得极其简单),如果开发者需要控制和SOAP的处理过程,可以在其低层开发接口基础定义一些特殊对象来处理诸如代理服务器、连接信息以及对结果进行序列化等。
IBM Web Services Toolkit是建立在Java应用的Web Services开发包,需要安装SUN JDK或者IBM JDK,是Linux下进行Web Services开发的利器,能出色地和IBM其他软件系统产品进行握手和交互。这无疑为Java在SOAP WebServices应用架起了桥梁。
IBM在此基础上开发出又一工具包直接面向商用开发,Web Services Process Management Toolkit。其应用结构如图16:
(图16)
Borland DELPHI6也不甘落后,以其出名地Wizard快速开发建立WebServices的DELPHI IDE,依据其快速的数据库开发效率和出色的技术接口完全可以建立在列强中争得一席之地,甚至可以只写数行代码完成一个能接口各种数据库的WebServices(和.NET开发环境中C#号称地方便如出一辙),如图17:
(图17)
Microsoft .NET在其推出的C#开发工具中提供了快速的WebServices开发环境,如图18:
(图18)
过分地是在其建立的项目代码中将初始的注释还原就是一个WebServices之C#版的HelloWorld。编译结果如图19:
(图19)
至此,我们看到了软件开发从COM时代到WebServices的功能和架构,但每一项都是具有强大发挥潜力的开发概念,需要我们共同去挖掘,如果您作为一个软件开发经理是否拿得出几个稳定、高效、安全、拓展能力强的设计理念?