欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

传统组件模型和SOA体系的消息传递(图文)

时间:2011-04-23  作者:秩名

论文导读:另一方面,随着Internet的迅猛发展,HTTP在Internet应用领域已经取得了绝对的领导地位,但是HTTP协议只能使用相当简单的命令(比如GET、POST和PUT)请求和发送数据,而不能在应用程序间自由地交换数据,实现信息和软件模块的共享,Internet应用领域的这种情况推动了SOA体系的诞生。CORBA和DCOM都是被设计用于分布式对象的客户/服务器模式的通信。随着分布式计算对于企业应用越来越重要,CORBA和DOOM竞争也越激烈,但实际应用中常常需要两者兼顾,这就需要DOOM和CORBA对象的互操作,目前比较流行是COM-CORBA桥或利用COM和CORBA兼容的API技术方案,但是他们执行效率比较低,实现也比较复杂,现在SOAP协议的出现,使得分布式对象模型之间有效、简单的通信成为可能。
关键词:组件模型,CORBA,SOA体系,SOAP协议
 

一 传统组件模型和SOA体系的简介

网络的快速发展,计算机使用者的不断增加使分布式计算日益受到重视。为了简化网络应用程序的开发和实现基于组件的软件骨架,逐渐演化出分布式的对象模型。分布式对象模型中,通常参与计算的计算体(分布对象)是对称的,分布对象往往又被称为组件,组件是一些独立的代码的封装体,在分布计算的环境中大多数情况下是一组相关对象的复合体,提供一定的服务。分布式环境下,组件是一些灵敏的软件模块,它们可以位置透明、语言独立和平台独立地互相发送消息,实现请求服务。

目前国际上,分布式对象模型有两大派COBRA和DCOM/COM。

另一方面,随着Internet的迅猛发展,HTTP在Internet应用领域已经取得了绝对的领导地位,但是HTTP协议只能使用相当简单的命令(比如GET、POST和PUT)请求和发送数据,而不能在应用程序间自由地交换数据,实现信息和软件模块的共享,Internet应用领域的这种情况推动了SOA体系的诞生。

SOAP和HTTP一样是一种应用级的协议,因此它可以直接建立在传输协议之上,比如TCP。可是,当今的Internet结构中还有代理和防火墙等介入,而它们只允许HTTP通过。论文参考网。为此,SOAP必须建立在HTTP之上,即任何允许HTTP通信的网络都可以通过SOAP消息。而HTTP已经遍及到各种计算机平台和设备,所以,建立在HTTP上的SOAP也将可以到达各种计算机平台和设备。

由于SOAP的最终目的是在应用程序之间实现通信,而Internet上应用程序运行的系统、开发应用程序的语言千差万别,所以为了使用SOAP在不同的系统和平台间交换数据,数据必须使用各种系统和平台都能够理解的格式。而XML和HTTP一样,几乎所有的计算机平台都能处理它。因此XML自然成了SOAP消息格式的选择。

使用HTTP和XML,SOAP可以基于现有的Internet基本结构,让运行在不同平台上的应用程序实现程序级的通信。SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化和类型化的信息提供了一个简单且轻量级的机制。

二 传统组件模型CORBA

1.对象通信一般方法

建立分布式应用的两个主要通信模型是消息传递和请求/响应。消息传递允许通信任何一方在任何时间发送消息,一般用在祸合度较低的系统中,通常是与外部的并行进程进行通信。而基于请求/响应的应用更像一个单进程的应用,因为发送的请求或多或少被阻塞直至收到来自另一个进程的响应。这使得请求/响应通信更适合于RPC应用。

CORBA和DCOM都是被设计用于分布式对象的客户/服务器模式的通信。在这两种对象模型中,都是一个客户调用一个请求,该请求则由远方的一个对象来实现,远方的对象充当服务器的角色。提供服务的对象都有一个接口,该接口是通过接口定义语言(IDL)来定义的。由于接口的存在,使对象的实现过程对于客户是隐蔽的。CORBA和DCOM都是通过RPC和引用远程对象的方法来实现的。CORBA依赖于IIOP进行远程对象通信,DOOM则依赖于对象远程处理过程调用(ORPC)以达到相同的目的。CORBA体系结构是基于对象请求代理的;DOOM 则以COM作为它的基础,事务处理则依赖于MTS或MSMQ。

2.CORBA分布对象模型

CORBA(Common Object Request BrokerArchitecture)公共对象请求代理体系结构是由OMG组织制订的一种标准的面向对象应用程序体系规范,是得到承认的企业规模的分布式计算环境的中间件互操作标准。它由对象请求代理ORB、对象服务、公共设施、域接口和应用接口这几个部分组成。

CORBA制定了一套对象间通信的协议,通信介质被称为ORB(Object Request Broker)ORB提供了一种机制,通过这种机制,对象可以透明地发出请求和接收响应。分布的、可以互操作的对象可利用ORB构造可以互操作的应用。它负责在对象之间传递消息。ORB可看作是在对象之间建立客户/服务关系的一种中间件。基于ORB,客户可以透明地调用服务对象提供的方法,该服务对象可以与客户运行在同一台机器上,也可以运行在其他机器上通过网络与客户进行交互。ODB截取客户发送的请求,并负责在该软件总线上找到实现该请求的服务对象,然后完成参数、方法调用,并返回最终结果。

随着分布式计算对于企业应用越来越重要,CORBA和DOOM竞争也越激烈,但实际应用中常常需要两者兼顾,这就需要DOOM和CORBA对象的互操作,目前比较流行是COM-CORBA桥或利用COM和CORBA兼容的API技术方案,但是他们执行效率比较低,实现也比较复杂,现在SOAP协议的出现,使得分布式对象模型之间有效、简单的通信成为可能。

三 传统组件模型和SOA体系的消息传递

SOAP协议的出现,使得分布式对象模型之间有效、简单的通信成为可能。

1. SOAP消息系统的结构

1.1 SOAP的结构

SOAP首先是XML,是用XSD大纲定义的XML,所以一定包含XML元素,这些元素在一定程度上可以作为对象,每个对象有各自不同的目的。总体上看,SOAP消息包括以下3个主要元素:

1)SOAP<Envelope>:是整个SOAP消息的根元素,也是每个SOAP消息中必须有的元素其他两个元素都在这个元素内部。

2)SOAP<Header>是SOAP消息中的可选元素,如果有,必须是<Envelope>的第一个子元素.<Header>元素中包含多个头条目子元素。

3)SOAP< Body>是每个SOAP消息中都必须有的元素。如果Envelope消息中没有<Header>元素,那这个元素必须是<Envelope>元素的第一个直接子元素,否则它必须是紧接着<Header>元素的元素。<Body>元素中包括多个体条目,在该元素中还可以使用<Fault >元素,当出现错误时使用这个元素。

1.2 SOAP的消息系统

如果要在SOAP消息中发送某个XML文档,则需要创建一个SOAP消息,并在<Body>元素中包括这个文档即可。这样的SOAP消息通常成为“文档样式/字面格式”的SOAP消息。如果应用程序内部使用.NET对象表示请求数据,就可以使用.NET串行化类生成XML。

下面将创建一个Web服务,服务端接收发单XML文档,检验其中的数据,并返回一个收据号码。客户端向Web服务器发送包含发货单数据的SOAP消息。它们使用的都是文档样式/字而格式的SOAP消息。图1显示了这个例子的结构。

图1 SOAP消息系统结构

下面是包含发货单文档信息的请求消息,客户端使用HTTP把SOAP消息发送给Web服务。

〈soapenv: Envelope …〉 〈soapenv: Body〉

〈invoice xmlms=“http://schemas.mywebservices.com/examples/” 〉

<invoice Number > 123-CXF-9028 <invoice Number>…</invoice>

</soapenv: Body></soapenv: Envelope>

下面是Web服务返回的响应SOAP消息,其中包含收据号码,客户端获得这个消息,取得其中的收据号码。

<soapenv:Envelope…> <soapenv: Body>

<Receiptxmlns=“http://schemas.myWeb-services. com/examples/”>1000</Recerpt >

</soapenv: Body></soapenv: Envelope>

2SOAP消息系统的实现

2. 1服务器端设计

服务端的任务是接收客户发送的发货单数据,检验它的正确性,然后对其做相应的处理,比如存入数据等。如果发货单数据正确,服务器还要向客户返回一个包含收据编号的文档。

这里使用ASP.NET来实现服务器,使用VisualStudio.NET创建ASP.NET应用程序。文件名http://localhost/MessageServer/ Webform1. aspx。

程序的方法首先从Request中读取客户提交的发货单XML文档,然后取得<Body>元素,接着使用反串行化的方法,把<Body>元素中的XML文档串行化到类invoice的对象中,此后可以在应用程序中方便地处理发货单数据,比如把数据存入数据库等,方法的最后调用Write-SOAPRespons。方法向客户返回一个包含收据号码的SOAP消息文档。在实际应用中,收据号码应该来自数据库或者由其他信息决定。

2. 2 客户端设计

客户端的任务是把发货单数据发送给Web服务。客户端的实现涉及到两个功能:一个是与服务器建立连接,发送数据;另一个是根据SOAP协议的规定格式化一个文档样式/字面格式的SOAP消息。

2. 2.1与服务器通信

这里使用.NET的HttpWebRequest类来实现与服务器通信。为了把通信和格式化SOAP消息两个功能分开,把通信功能放在一个单独的类XML HTTP中,刀把该类放在一个文件(XMLHTTP. cs)中。下面是该文件的内容。

程序类的结构很简单,首先是3个私有成员,分别代表请求的响应消息(responseText)、HTTP请求(httpRequest ) 和 HTTP响应(httpRe-sponse) 。其次是3个公开的方法:0pen方法用指定的HTTP方法打开与指定URL的连接,并设置请求内容的M1M};格式Send方法向Http Re-quest写入流中写入数据,写完数据后,就可以读取服务器的响应内容;Set RequestHeider方法用于添加HTTP头,使用HTTP发送SOAP消息时需要指定SOAPAction头最后是ResponseString属性,返回响应内容。

2. 2. 2 格式化SOAP消息

SOAP消息有既定的格式,需要把发货单文档放到SOAP的<Body>元素中。这里把格式化的SOAP消息和使用XML HTTP类发送SOAP消息合并到了SOAPSender类中。包含该类的代码文件名为SOAPSender.cs。由于该文件很长,下面只用类的说明形式描述。

该类的CreateSOAPEnvelope方法用于创建SOAP消息的框架,也就是创建一个包含Envelope的XML文档。WriteBodyXml方法把指定的XML文档插入到<body>元素内部,也就是SOAP消息的<Body>部分。调用Send方法时将使用XML HTTP类打开与指定URL的连接,设置SOAP Action头,并发送SOAP消息。该类中的其他方法用于创建体条目、子元素和属性等。

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:传统动画中的泛贴图概念(图文)
下一篇论文:存储区域网络在数字化校园平台中的应用
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
    无相关信息
最新计算机论文
读者推荐的计算机论文