zoukankan      html  css  js  c++  java
  • 分布技术杂谈

    CORBA,RMI/IIOP,COM+,XML-RPC ,SOAP简介

    CORBA(Common Object Request Broker Architecture,通用对象请求代理架构)
    CORBA标准由对象管理组织(OMG)设立并进行控制,CORBA定义了一系列API,通信协议,和对象/服务信息模型用于使得异质应用程序能够互相操作,这些应用程序用不同的编程语言编写,运行在不同的平台上。CORBA因此为定义明确的对象提供了平台和位置的透明性,这些对象是分布式计算平台的基础。

    通常来说,CORBA把用其他语言开发的程序代码和关于该程序代码能力和如何调用该程序代码的信息包到一个开发包(package)中,开发包中的对象则可以在网络上被其他程序(或CORBA对象)调用。 在这个意义上来讲,CORBA可以被看作是一个机器可读的文件档格式,类似于头文件(header),但是具有相当多的信息。

    CORBA使用一种接口定义语言用于刻画对象将体现出来的接口。CORBA又规定了从IDL到特定编程语言,如C++或Java,实现的映射。这个映射精确的描述了CORBA数据类型是如何被客户端和服务器端实现的。标准映射的有Ada、C、C++、Smalltalk、Java、以及Python。 还有一些非标准的映射,为Perl和Tcl的映射由这些语言写的ORB实现。

    CORBA的IDL只是IDL的一个例子。

    在提供用户语言和平台中性的远程过程调用规范的同时,CORBA也定义了通常需要的服务,例如事务和安全。

    RMI(RemoteMethod Invoke,远程方法调用)

        使用java的程序员,对于RMI(RemoteMethod Invoke,远程方法调用)一定不陌生,在java中,为了在分布式应用开发时,能够方便调用远程对象,java提供了RMI的API。在 RMI 中,远程对象按照好象它是本地行事,客户机应用程序会直接调用远程对象存根上的方法,因此,调用起来就如本地对象一样方便。RMI中封装了对象和请求的网 络传送,使得异地的对象服务直接可用。

    但RMI的使用必须是在能够识别java代码的环境下使用,即必须有JVM的支持。因此,他只适合在java程序间的对象通信。如果不在 Java 环境下工作,或者需要与非 Java 环境通信,那么SOAP、RPC、CORAR等都是可以的。

    RPC & XML-RPC

           RPC(Remote Method Invocation,远端过程调用) 与RMI的区别很明显,相比于RMI直接获取远端方法的签名,进行调用的方式,RPC使用的是C/S方式,发送请求到服务器,等待服务器返回结果。

    为了包装RPC的请求信息,推出了XML-RPC,

    SOAP

           SOAP的消息被称为一个SOAP Envelope,包括SOAP HeaderSOAP Body。其中,SOAP Header可以方便的插入各种其它消息来扩充Web Service的功能,比如Security(采用证书访问Web Service),SOAP Body则是具体的消息正文,也就是Marshall后的信息。

           某些程序员每天挣扎于 Perl 和 C 组件、C 和 Java 组件之间的通信。这些开发人员可以从转向基于 SOAP 或基于 XML-RPC 的通信模型中获益匪浅。另一方面,从不转向 Java 以外语言的 Java 开发人员可以转向 RMI 而不是使用 SOAP,他们会看到极大的性能改善。

    WSDL

    WSDL(Web Services Description Language)是描述web服务的,是描述怎样访问web服务的。WSDL是用来描述SOAP的,换句话说,WSDL 文件告诉你调用 SOAP 所需要知道的一切。WSDL也是一段xml。现在各个语言对wsdl的支持都很成熟,可以根据同一份wsdl文件生成自己语言的客户端。

    下面附上是RMI、RPC和SOAP的比较

     

     

    RMI

    RPC

    SOAP

    通信方式

    远程对象按照好象它是本地行事.客户机应用程序直接调用远 程对象存根上的方法

    客户机不直接调用方法,而是向服务器发送请求消息。

    在XML-RPC上,使用规定的XML格式的数据格式来通信。比XML-RPC更具适用性,能够支持更多的类型及数据结构。

    优点

    远程对象按照好象它是本地行事,编译期可以检查错误

    它允许客户机与服务器之间有更大的独立性。

    服务器无需让客户机知道,就可以完全关机和被替换

    非常适合异步通信和针对松耦合的客户机和服务器

    缺点

    只能基于java语言。异常信息容易丢失。客户机与服务器紧耦合。

    丧失了许多可以确保方法和参数是正确的编译时便利。

    必须做大量的运行时检查,而且开发人员丧失了许多可以确保方法和参数是正确的编译时便利。

     

  • 相关阅读:
    ubuntu 制做samba
    《Programming WPF》翻译 第4章 前言
    《Programming WPF》翻译 第4章 3.绑定到数据列表
    《Programming WPF》翻译 第4章 4.数据源
    《Programming WPF》翻译 第5章 6.触发器
    《Programming WPF》翻译 第4章 2.数据绑定
    《Programming WPF》翻译 第4章 1.不使用数据绑定
    《Programming WPF》翻译 第5章 7.控件模板
    《Programming WPF》翻译 第5章 8.我们进行到哪里了?
    《Programming WPF》翻译 第5章 5.数据模板和样式
  • 原文地址:https://www.cnblogs.com/BlogNetSpace/p/1439817.html
Copyright © 2011-2022 走看看