请教 .net 中对应 CORBA技术 的是什么?

外星人oo 2004-08-31 04:42:59
转:
CORBA技术简介

一. CORBA技术产生的背景

CORBA技术的产生,发展和成熟是面向对象技术的发展及分布式网络环境发展的必然结果。

面向对象技术的产生和发展

随着计算机软件及硬件的发展,计算机已经应用到科研,教育,国防,及经济发展的各个领域,软件的规模不断扩大,复杂的计算机应用使得模块化的软件设计及开发已经不适合大型软件的设计与开发。面向对象技术的产生和发展解决了代码的可重复利用,数据封装等模块化设计难以解决的问题。同时面向对象的设计和开发使得代码更容易控制和维护,从而更适合于大型软件的设计与开发,成为软件设计的发展趋势。

网络及分布式软件的发展

随着计算机网络(INTERNET/INTRANET)的发展,计算机应用的重心从主机(mainframe)时代逐渐向client/server的结构发展。不同的硬件厂商,不同的操作平台,以及日趋复杂的网络应用,使得分布式软件的设计开发变得复杂,软件成本提高,并且在不同平台上难以兼容。

首先,分布式软件要跨越网络的边界。在CORBA技术以前,常见的client/server结构下的软件开发一般是直接通过socket编程,自己定义通讯协议,自己管理连接和数据传输。使得程序设计和开发人员不能把注意力集中在应用的业务逻辑上。此外,RPC技术在client/server 的结构的软件也被广泛地应用。RPC使得client程序可以直接调用server端的子程序。但RPC没有提供对Server对象成员函数的调用,不能使面向对象技术透过网络屏障。

其次,分布式软件要跨越不同的操作系统和不同的编程语言的障碍。在不同的操作系统平台上和用不同的编程语言所设计和开发的软件难于相互移植和相互操作。

分布式网络环境下的面向对象软件

面向对象的软件技术和分布式网络环境是软件和网络发展的趋势。CORBA(Common Object Request Broker Architecture)技术的出现就是为了解决面向对象软件在分布式,异构的网络环境下的代码可重用性,可移植性和可互操作性。

二. CORBA的结构和实现

CORBA提供了面向对象的数据通讯机制,在这种机制下,各对象可以透明地穿过网络屏障发送请求和接收应答,不同的硬件平台下的对象系统可以相互通讯。

CORBA的系统结构

典型的CORBA应用的结构如下图所示,client应用通过ORB运行对象中的某一成员函数。 ORB核心负责找到Server对象所在的机器,封装client请求的数据,并把client的请求和数据传给server中的对象并运行client请求中要求运行的成员函数,当函数运行完毕,ORB核心负责把运行结果封装,并传回client。Client 运行Server中对象的某一成员函数,就象调用自己程序中的对象的成员函数一样,在程序流程上无须意识到这是网络应用。Client应用也不必关心所调用的对象具体运行在哪一台主机上。ORB核心完成了原来我们关心所有数据通讯。在这样的系统结构下,面向对象的技术就可以透过网络屏障,充分发挥面向对象技术的在软件开发中的优势。正如RPC使得client应用可以直接调用server端的过程一样,CORBA使得client可以直接调用server中的对象的成员函数。

CORBA的接口定义语言

CORBA 结构中client和server的对象调用接口是通过接口定义语言(IDL)定义的。接口定义语言描述对象,对象中的成员函数,及成员函数的参数数量及类型。接口定义言语言是一种描述性语言,不是一种编程语言。IDL的接口定义作用类似于RPC中的接口定义。一但对象调用接口确定,client和server可以分别根据调用接口实现,client和server的具体实现不受编程语言限制,只要你使用的CORBA中的接口定义语言可以映射成相应的编程语言。例如,server的对象用C++实现,而client应用程序可以由Java实现。

CORBA应用的实现

如下图所示,根据接口定义语言定义的对象调用接口,用CORBA提供的接口定义语言到编程语言的映射工具分别生成client端和server端的编程接口(stub和skeletons),client端编程接口stub 是client程序用来与ORB建立联系。而server端编程接口(skeleton)则是实现对象与ORB的接口。Client和server程序分别编译和连接相应的CORBA调用接口,则实现依赖CORBA通讯的client与server应用程序。CORBA应用的实现步骤很类似用RPC实现远程过程调用。所不同的是RPC中不能定义对象的调用接口,此外,相比较而言,CORBA的接口定义语言更接近面向对象编程语言,而且定义的内容也比RPC的接口定义更广泛和完善。

CORBA的技术特性

CORBA的跨平台,CORBA的跨平台和编程语言是通过对象的接口定义实现,Client与Server的实现不依赖对方的操作系统和编程语言

CORBA的可扩展性,CORBA的通讯和管理机制提供了应用的可扩展性,使得同一服务可以有多个实例运行在分布式网络环境下。

CORBA的互操作性,CORBA的互操作性定义了异构网络环境下的分布式对象的综合灵活的通讯机制。一般可以通过两种方法实现:

在不同的对象系统之间建立网关,例如要实现微软的DCOM对象系统与ORB中的对象系统的通讯,可以在两个对象系统之间建立网关,实现两个对象系统之间的平滑通讯。
不同厂商提供的CORBA共同遵循IIOP(Internet Inter Orb Protocol)协议,通过共同支持的IIOP协议,不同ORB实现的对象系统可以相互通讯
...全文
255 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
外星人oo 2004-08-31
  • 打赏
  • 举报
回复
Remoting.Corba是一个开源项目,它的目标是在.NET Remoting体系结构中集成CORBA/IIOP 支持, 便于.NET开发者开发能够与采用IIOP的系统(CORBA, J2EE/EJB,各种应用服务器与中间件)进行互操作的系统.
除了让.NET使用Corba之外,它还是一个使用其他的网络协议扩展.NET Remoting的示例。
Remoting.Corba是全部用C#编写的,不需要除了.NET Framework之外的任何软件包。所有源代码都是开放的。任何与Common Language Specification兼容的编程语言都可以使用它。
Remoting.Corba仍然处于初始开发阶段,但已经实现了很多有用的功能。
要了解这个项目的信息,请访问:Remoting.Corba Wiki。
Remoting.Corba是在SourceForge上进行开发的,http://sourceforge.net/projects/remoting-corba/。

基于.NET的开源项目越来越多,这说明了.NET越来越受欢迎,我觉得.NET不仅仅属于微软,它已经成为软件开发领域的一种标准。即使微软现在不提供对它的支持,它也将继续发展下去。
个人觉得国内开发人员对开源世界的贡献太小,开源已经是大势所趋,软件是一种服务,封闭式开发也许不久会被淘汰。我们国内开发人员的确应该为开源世界做点什么!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧