zoukankan      html  css  js  c++  java
  • SOA学习笔记

    I. 名词解释

    COBOL - Common Business Oriented Language(面向公共业务的语言)

    COM - Component Object Model(组件对象模型)

    简单地说,COM是一种跨应用和语言共享二进制代码的方法。与C++不同,C++提倡源代码重用。源码级重用虽然好,但只能用于C++。它还带来了名字冲突的可能性,更不用说不断拷贝重用代码而导致工程膨胀和臃肿。
    COM通过定义二进制标准解决了这些问题,即COM明确指出二进制模块(DLLs和EXEs)必须被编译成与指定的结构匹配。这个标准也确切规定了在内存中如何组织COM对象。COM定义的二进制标准还必须独立于任何编程语言(如C++中的命名修饰)。一旦满足了这些条件,就可以轻松地从任何编程语言中存取这些模块。由编译器负责所产生的二进制代码与标准兼容。这样使后来的人就能更容易地使用这些二进制代码。
    在COM中接口就是一切,对客户说组件就是接口集,客户只能通过接口和组件打交道。说明接口可以保护系统免受外界变化的影响。这是封装的体现。接口实现了使用户使用同样的方式来处理不同的组件。这是多态的体现。

    CORBA - Common Object Request Broker Architecture(公共对象请求代理架构)

    CORBA是由OMG组织制订的一种标准的面向对象应用程序体系规范,它使用一种接口定义语言用于刻画物件将呈现出来的接口。CORBA又规定了从IDL到特定程序语言,如C++或Java,实现的映射。这个映射精确的描述了CORBA资料类型是如何被用户端和服务器端实现的。标准映射的有Ada、C、C++、Smalltalk、Java、以及Python。 还有一些非标准的映射,为Perl和Tcl的映射由这些语言写的ORB实现。
    ORB是一个在对象间建立客户/服务器联系的中件。使用ORB,客户可以调用服务器的对象或对象中的应用,被调用的对象不要求在同一台机器上。由ORB负责进行通信,同时ORB也负责完成后返回结果。客户对象完全可以不关心服务器对象的位置,实现它所采用的具体技术和工作的硬件平台,甚至不必关心服务器对象的与服务无关的接口信息,这就大大简化了客户程序的工作。既然能够这么方便,那ORB就需要提供在不同机器间应用程序间的通信,数据转换,并提供多对象系统的无缝连接。  
    我们通常编制客户/服务器程序时,常常需要自己定义通信协议,而协议的制定往往与硬件和实现的方法有关,而ORB能够简化这一过程。在ORB下,协议通过IDL语言进行定义,保证了一致性,为了照顾到灵活性,ORB允许程序员选择相应的操作系统,执行环境和编程语言。更重要的是它可以使原来的代码通过一定的方式重用。

    DCE - Distributed Computing Environment (分布式计算环境)

    DCOM - Distributed COM

    DOM - Document Object Model

    DTD - Documnet Type Definition

    DTD是XML1.0版规范的一部分,它是XML文件的验证机制,属于XML文件组成得一部分。DTD在XML文件所扮演得角色就是定义XML文件的元素架构,元素标记和属性。
    一旦我们定义好DTD,就可以对编写好的XML文件检查内容是否为合法的XML文件内容。
    顺便介绍一下另一种验证机制 XML Schema。和DTD相比较,其区别主要如下:
    1. DTD拥有自己独特的语法和编写方式,它和XML文件的标记架构完全不同。
    2. XML Schema 本身就是一份XML文件,使用标记语法定义其他的XML文件,因为它就是一份XML文件,所以在学习上不必特别学习DTD语法,而且支持数据类型,能够定义元素的内容。
    XML Schema 是由微软所提出的规范草案,于2001年5月成为W3C标准。

    EAI - Enterprise Application Integration(企业应用集成)

    EDM - Enterprise Data Model(企业数据模型)

    ESB - Enterprise Service Bus(企业服务总线)/Enterprise Software Bus(企业软件总线)

    IDL - Interface Definition Language(接口定义语言)

    IIOP - Internet Inter-ORB Protocol(互联网内部对象请求代理协议)

    它是一个用于CORBA 2.0及兼容平台上的协议。用来在CORBA对象请求代理之间交流的协议。Java中使得程序可以和其他语言的CORBA实现互操作性的协议。
    这个协议的最初阶段是要建立以下几个组件部分:一个IIOP到HTTP的网关,使用这个网关可以让CORBA客户访问WWW资源;一个HTTP到IIOP的网关,通过这个网关可以访问CORBA资源;一个为IIOP和HTTP提供资源的服务器,一个能够将IIOP作为可识别协议的浏览器。
    IIOP是一个实现互操作性的协议,它使得由不同语言编写的分布式程序在因特网中可以实现彼此的交流沟通。它是行业战略性标准,也即公用对象请求代理程序结构(Common Object Request Broker Architecture,CORBA)中至关重要的一个部分。

    JAX - Java API for XML-based

    例如JAX-RPC,JAX-WS(Web Service)等。

    MOM - Message Oriented Middleware(面向消息的中间件)

    指利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

    ORB - Object Request Broker(对象请求代理)

    最常见的ORB实现是CORBA、COM/DCOM和RMI,其中,RMI仅限于Java语言,COM/DCOM仅限于Microsoft平台,而CORBA则扩展到多个平台和编程语言。

    RMI - Remote Method Invocation(远程方法调用)

    RMI是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。

    RPC - Remote Procedure Call(远程过程调用)

    RPC协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。目前,有多种 RPC 模式和执行。最初由 Sun 公司提出。IETF ONC 宪章重新修订了 Sun 版本,使得 ONC RPC 协议成为 IETF 标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算环境(DCE)。

    SAX - Simple API for XML

    SAX是一个用于处理XML的“事件驱动”的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。
    不同于其他大多数XML标准的是,SAX没有语言开发商必须遵守的标准SAX参考版本。因此,SAX的不同实现可能采用区别很大的接口。

    SCM - Supply Chain Management(供应链管理)

    SNA - Systems Network Architecture(系统网络架构)

    SNA是IBM公司开发的网络体系结构,在IBM公司的主机环境中得到广泛的应用。一般来说,SNA主要是IBM公司的大型机(ES/9000、S/390等)和中型机(AS/400)的主要联网协议。SNA的历史早在1974年首次公布的SNA是IBM为了连接他的3270系列产品而推出的方案。

    SOA - Service-Oriented Architectures(面向服务架构)

    SOAP - Simple Object Access Protocol(简单对象访问协议)

    SOAP是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
    SOAP由 IBM 和 Microsoft 提出,在2001年成为W3C推荐标准。
    SOAP 包括四个部分:
      SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。
      SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
      SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。
      SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。
     SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点。在HTTP 上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。SOAP也可以绑定到TCP和UDP协议上。
    SOAP 消息格式:
    <SOAP-ENV: Envelope  Attributes>
        <SOAP-ENV:Body  Attributes>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

    WSDL - Web Service Definition Language(Web服务定义语言)

    XSD - XML Schemas Definition(XML结构定义)

    XML Schema 是DTD的替代品。XML Schema语言也就是XML Schema Definition (XSD)。XSD文件的后缀名为.xsd。

    II. 发展历史

    20世纪80年代,关系数据库成为主流数据库系统,企业数据模型(EDM)项目也因此大行其道。EDM为企业的所有业务实体定义一个全局数据模型,并在公司的所有组织和系统之间共享该模型。但这些EDM项目几乎都以失败而告终。 

    20世纪90年代,基于企业级中间件的标准同化企业应用程序:企业软件总线(ESB)应运而生。ESB试图通过确立软件模块间的、独立于技术、统一的企业级通信标准,从根本上解决应用程序集成问题。而事实上,今天几乎所有企业不仅有应用程序异质问题,还有中间件异质问题。在很多情况下,CORBA等中间件只能针对单个项目解决点对点集成问题,并未建立全局软件总线。在很多企业,不兼容的中间件系统几乎与不兼容的应用程序一样多。曾被奉为“银弹”的多代中间件(如DCE、CORBA、SOAP和WSDL)并未能成功搭建一条普遍适用的“企业软件总线”。

    2000年以后,SOA的思想诞生。

    III. 专题说明

    中间件

    定义
      中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。
    通用中间件类型
      企业服务总线(ESB ):ESB 是一种开放的、基于标准的分布式同步或异步信息传递中间件。通过 XML、Web 服务接口以及标准化基于规则的路由选择文档等支持,ESB 为企业应用程序提供安全互用性。
      事务处理监控器(TPM:Transaction Processing Monitors):为发生在对象间的事务处理提供监控功能,以确保操作成功实现。
      分布式计算环境(DCE:Distributed Computing Environment):指创建运行在不同平台上的分布式应用程序所需的一组技术服务。
      远程过程调用(RPC:Remote Procedure Call):指客户机向服务器发送关于运行某程序的请求时所需的标准。
      对象请求代理(ORB:Object Request Broker):为用户提供与其他分布式网络环境中对象通信的接口。
      数据库访问中间件(Database Access Middleware):支持用户访问各种操作系统或应用程序中的数据库。SQL 是该类中间件的其中一种。
      信息传递(Message Passing):电子邮件系统是该类中间件的其中一种。
      基于 XML 的中间件(XML-Based Middleware):XML 允许开发人员为实现在 Internet 中交换结构化信息而创建文档。

    ...

  • 相关阅读:
    Arcgis中修改字段名方法
    题事件名称为CLR20r3
    【转】CLR20R3 程序终止的几种解决方案
    Ajax+asp.net无刷新验证用户名
    [转载]C/C++编译器cl.exe的命令选项
    [网络整理]DEBUG命令使用解析五
    [网络整理]DEBUG命令使用解析一
    [网络整理]DEBUG命令使用解析六
    [易学C#]C#3.0语言新特性
    [易学C#]C#3.0语言新特性之Lambda表达式
  • 原文地址:https://www.cnblogs.com/jancco/p/2488957.html
Copyright © 2011-2022 走看看