RedStar81 于9/9/2003~13/9/2003
[email protected]
[email protected]
首次修改时间:13/9/2003
个人文集:http://www.csdn.net/develop/author/netauthor/RedStar81/
三、几种分布对象计算技术简介
总的来说,传统的分布对象技术DCOM/RMI/CORBA/Remoting等无一例外的,基于代理/存根架构。由客户端和服务器端基础服务控制器来通过RPC或是类RPC(这里每种的具体情况又很多,如早期的DCOM还涉及LPC,更重要的是由于历史和这些技术运行平台的演化,技术本身从实现上来说,有本质的区别.)来列集/散集(序列化技术/反序列化).
DCOM是MS COM+的分布式计算的基础.
RMI是SUN JINI底层通信采用的分布式对象计算技术.
Remoting是MS dotNET平台分布对象计算新技术.
这里我想谈谈DCOM和RMI从上面提及的所谓平台演化角度看实现本质的问题,我们不谈Remoting的比较,因为基本上,RMI和Remoting在寄于的平台这个角度来说,没什么区别.
COM(Component Object Model)初衷是特定的历史时期寻求二进制级别上的软件复用,克服语言/编译系统带来的诧异而产生的技术,从历史走来,如今基于COM的技术和应用已经比较成熟当然也异常的复杂,体系结构异常庞大,原因在哪?个人感觉,在于这只是一种技术,永远逃避不了底层系统的束缚和影响,从基础的二进制重用就堆砌了大量的实现技术细节,一层层叠加,最后不可避免的,体系机构异常复杂.然而Java来了,dotNET来了,他们都基于Virtual 平台,一个Class,天然的就是一个Assembly,是可重用的,不需任何的额外技术来支持。天大的诧异就从这里开始.如今的Java Applet/.NET下多种Control 的开发复杂度和功能都比基于COM的Control有着不可比拟的优越性.这样基于COM的DCOM自然也继承了这等劣势.另外一点:RMI/Remoting可以说呈现给客户的都是对象视图,而DCOM是接口视图.这一点也算是本质上的区别.
四、几种分布式语言简介
什么样的语言才能叫分布式语言?
Java?C#?SmallTalk?Dejay?
你注意到目前的分布式开发是怎样的一种形式?正如开始讲的,我们目前的分布式计算技术走: 在网络上部署分布式计算环境(中间件的形式部署,这里可能MS的DCOM与系统的集成度较高),并且提供开发的工具和公共服务,支持分布式应用,实现资源的共享和协同工作这条路,现在的分布式开发核心基本还定位在在什么样的基础架构上作开发,你用过原生支持分布式计算的语言?我们下面提及的两种典型的语言:Emerald和Dejay。其中,只有Emerald算是较为纯粹的分布式编程语言,而Dejay则是基于我们上面提及的ObjectSpace公司的Voyager和Java开发的,当然从语法上,还算比RMI等东西更靠近分布式编程语言范围这一层.
Emerald是20世纪80年代,由华盛顿大学开发的一门兼面向对象和分布特性的语言,为分布式应用编程提供了方便.它的研发重点之一就是分布式方面的处理。这门语言首先算是一门较为纯粹的面向对象语言,当然了,当你亲生接触它的时候,请不要以现代的OO语言来看待它,也不要说它很怪异,因为毕竟不谈分布式特性,OO在80年代,也算很新的技术,它的所有语言机构都是基于单一的对象模型,所有的结构和数据类型都是由对象代表.详细请参考: http://www.cs.ubc.ca/nest/dsg/emerald.html或是http://www.eci.ie/first.asp 。
Dejay是汉堡大学的一个研究项目。它基于Vovager和Java语言开发的。Dejay遵循的目标就是开发一门基于Java的分布式编程语言,用来促进分布式应用的发展.这门语言由于基于voyager,从语法层次上,很容易的支持远程对象,对象迁移,名字服务,持久化,异常处理等特性。后面我们会好好的利用这门语言来体验分布式编程的乐趣的。请访问www.dejay.org .
Part2.实践
五、分布式编程实践
下面,我们就来亲身领略分布式编程带来的兴奋和乐趣.当然了,这里基本上,用较为基础的例子,然后加上解说。想系统和深入地掌握这些技术,你需要自己去涉猎相关专业书籍.。本文重在引导和激发大家的学习兴趣。
1.ObjectSpace Voyager
Voyager基本来说,是一个库和一个运行期环境。充当存在于系统(OS和JVM)之上的底板。支持分布应用的各种行为特性。你可以从www.objectsapce.com或www.dejay.org得到这个产品。解压后,你将得到如下文件:
/bin Voyager utilities
/doc Documentation files
/examples Example files
/lib voyager2.0.0.jar file (Voyager .class files)
/voyagerDb Support Distributed Data Persistence
像设置JDK一样,你需要设置一下PATH和CLASSPATH环境变量.(注:我从Dejay下载的,发现/bin下的文件并不是可执行的,原因尚不清楚.这里面有两个小工具cgen/igen和一个Voyager运行时启动程序。既然这里的文件是不可执行的,那么下面将要讲解的从控制台启动Voyager就不可以了,只能通过编程实现.)
1)程实现运行时环境的启动
import com.objectspace.voyager.*;
public class VoyagerStart{
public static void main(string[] args){
try{
Voyager.startup();
}catch(StartupException exception){
System.err.println(“Voyager is already running.”);
}
Voyager.shutdown();
}
}
请注意,上面的程序演示了一个客户端运行时环境的启动,要启动一个Server端的Voyager,需要指定端口号,这样才能远程寻址到它的服务。如:
Voyager.startup(“9000”);
待续:
2. DCOM
3. CORBA
4. WebServices
5. Sun RMI VS. dotNET Remoting
6. Linda和Sun JavaSpace ,IBM Tspace
7. JINI
8. Emerald VS. Dejay
9. Pjama
10. IBM Mobile Computing Interface : Aglets
六.综合应用分析
1. 利用多线程和分布对象计算技术模拟高性能并行计算
2. 利用Vdejay计算几何分形图
1。本人不是专门研究分布式的,完全出于兴趣写下这篇文章.希对分布式计算应用爱好者有所帮助。
2。水平有限,欢迎指正。
3。由于本文讲述内容较多,很多讲述不可能太细致。而且考虑到读者群的问题,理论性内容尽量的省略。
如果读者有兴趣,可参考列出的参考书籍和网络资源。
4。可任意的转载、不过请注明出处;不可用于商业用途。