领略分布式编程乐趣--[3]

                     领略分布式编程乐趣

RedStar81 9/9/200313/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,更重要的是由于历史和这些技术运行平台的演化,技术本身从实现上来说,有本质的区别.)来列集/散集(序列化技术/反序列化).

  DCOMMS COM+的分布式计算的基础.

  RMISUN JINI底层通信采用的分布式对象计算技术.

  RemotingMS dotNET平台分布对象计算新技术.

这里我想谈谈DCOMRMI从上面提及的所谓平台演化角度看实现本质的问题,我们不谈Remoting的比较,因为基本上,RMIRemoting在寄于的平台这个角度来说,没什么区别.
  COM(Component Object Model)
初衷是特定的历史时期寻求二进制级别上的软件复用,克服语言/编译系统带来的诧异而产生的技术,从历史走来,如今基于COM的技术和应用已经比较成熟当然也异常的复杂,体系结构异常庞大,原因在哪?个人感觉,在于这只是一种技术,永远逃避不了底层系统的束缚和影响,从基础的二进制重用就堆砌了大量的实现技术细节,一层层叠加,最后不可避免的,体系机构异常复杂.然而Java来了,dotNET来了,他们都基于Virtual 平台,一个Class,天然的就是一个Assembly,是可重用的,不需任何的额外技术来支持。天大的诧异就从这里开始.如今的Java Applet/.NET下多种Control 的开发复杂度和功能都比基于COMControl有着不可比拟的优越性.这样基于COMDCOM自然也继承了这等劣势.另外一点:RMI/Remoting可以说呈现给客户的都是对象视图,DCOM是接口视图.这一点也算是本质上的区别.

 

 

                                四、几种分布式语言简介

  什么样的语言才能叫分布式语言?

  Java?C#?SmallTalk?Dejay?

  你注意到目前的分布式开发是怎样的一种形式?正如开始讲的,我们目前的分布式计算技术走: 在网络上部署分布式计算环境(中间件的形式部署,这里可能MSDCOM与系统的集成度较高),并且提供开发的工具和公共服务,支持分布式应用,实现资源的共享和协同工作这条路,现在的分布式开发核心基本还定位在在什么样的基础架构上作开发,你用过原生支持分布式计算的语言?我们下面提及的两种典型的语言:EmeraldDejay。其中,只有Emerald算是较为纯粹的分布式编程语言,Dejay则是基于我们上面提及的ObjectSpace公司的VoyagerJava开发的,当然从语法上,还算比RMI等东西更靠近分布式编程语言范围这一层.

  Emerald20世纪80年代,由华盛顿大学开发的一门兼面向对象和分布特性的语言,为分布式应用编程提供了方便.它的研发重点之一就是分布式方面的处理。这门语言首先算是一门较为纯粹的面向对象语言,当然了,当你亲生接触它的时候,请不要以现代的OO语言来看待它,也不要说它很怪异,因为毕竟不谈分布式特性,OO80年代,也算很新的技术,它的所有语言机构都是基于单一的对象模型,所有的结构和数据类型都是由对象代表.详细请参考: http://www.cs.ubc.ca/nest/dsg/emerald.html或是http://www.eci.ie/first.asp

  Dejay是汉堡大学的一个研究项目。它基于VovagerJava语言开发的。Dejay遵循的目标就是开发一门基于Java的分布式编程语言,用来促进分布式应用的发展.这门语言由于基于voyager,从语法层次上,很容易的支持远程对象,对象迁移,名字服务,持久化,异常处理等特性。后面我们会好好的利用这门语言来体验分布式编程的乐趣的。请访问www.dejay.org .

 

 

 

 

Part2.实践
                    
五、分布式编程实践

下面,我们就来亲身领略分布式编程带来的兴奋和乐趣.当然了,这里基本上,用较为基础的例子,然后加上解说。想系统和深入地掌握这些技术,你需要自己去涉猎相关专业书籍.。本文重在引导和激发大家的学习兴趣。

 

1.ObjectSpace Voyager

  Voyager基本来说,是一个库和一个运行期环境。充当存在于系统(OSJVM)之上的底板。支持分布应用的各种行为特性。你可以从www.objectsapce.comwww.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一样,你需要设置一下PATHCLASSPATH环境变量.(:我从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.         LindaSun JavaSpace ,IBM Tspace

7.         JINI

8.         Emerald VS. Dejay

9.         Pjama

10.     IBM Mobile Computing Interface : Aglets

.综合应用分析

1.       利用多线程和分布对象计算技术模拟高性能并行计算

2.       利用Vdejay计算几何分形图

 

 
  声明:

1。本人不是专门研究分布式的,完全出于兴趣写下这篇文章.希对分布式计算应用爱好者有所帮助。
2
。水平有限,欢迎指正。
3
。由于本文讲述内容较多,很多讲述不可能太细致。而且考虑到读者群的问题,理论性内容尽量的省略。
  
如果读者有兴趣,可参考列出的参考书籍和网络资源。

4。可任意的转载、不过请注明出处;不可用于商业用途。

 

 


你可能感兴趣的:(分布式/智能计算(DC/IC))