
2022年传统组件模型和SOA体系的消息传递(图文)论文.docx
8页传统组件模型和SOA体系的消息传递(图文)论文导读:另一方面,随着Internet的迅猛开展, 在Internet应用领域已经取得了绝对的领导地位,但是 协议只能使用相当简单的命令(比方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的迅猛开展, 在Internet应用领域已经取得了绝对的领导地位,但是 协议只能使用相当简单的命令(比方GET、POST和PUT)请求和发送数据,而不能在应用程序间自由地交换数据,实现信息和软件模块的共享,Internet应用领域的这种情况推动了SOA体系的诞生SOAP和 一样是一种应用级的协议,因此它可以直接建立在传输协议之上,比方TCP可是,当今的Internet结构中还有代理和防火墙等介入,而它们只允许 通过论文参考网为此,SOAP必须建立在 之上,即任何允许 通信的网络都可以通过SOAP消息而 已经普及到各种计算机平台和设备,所以,建立在 上的SOAP也将可以到达各种计算机平台和设备由于SOAP的最终目的是在应用程序之间实现通信,而Internet上应用程序运行的系统、开发应用程序的语言千差万别,所以为了使用SOAP在不同的系统和平台间交换数据,数据必须使用各种系统和平台都能够理解的格式。
而XML和 一样,几乎所有的计算机平台都能处理它因此XML自然成了SOAP消息格式的选择使用 和XML,SOAP可以基于现有的Internet根本结构,让运行在不同平台上的应用程序实现程序级的通信SOAP为在一个松散的、分布的环境中使用XML对等地交换结构化和类型化的信息提供了一个简单且轻量级的机制二 传统组件模型CORBA1.对象通信一般方法建立分布式应用的两个主要通信模型是消息传递和请求/响应消息传递允许通信任何一方在任何时间发送消息,一般用在祸合度较低的系统中,通常是与外部的并行进程进行通信而基于请求/响应的应用更像一个单进程的应用,因为发送的请求或多或少被阻塞直至收到来自另一个进程的响应这使得请求/响应通信更适合于RPC应用CORBA和DCOM都是被设计用于分布式对象的客户/效劳器模式的通信在这两种对象模型中,都是一个客户调用一个请求,该请求那么由远方的一个对象来实现,远方的对象充当效劳器的角色提供效劳的对象都有一个接口,该接口是通过接口定义语言(IDL)来定义的由于接口的存在,使对象的实现过程对于客户是隐蔽的CORBA和DCOM都是通过RPC和引用远程对象的方法来实现的。
CORBA依赖于IIOP进行远程对象通信,DOOM那么依赖于对象远程处理过程调用(ORPC)以到达相同的目的CORBA体系结构是基于对象请求代理的;DOOM 那么以COM作为它的根底,事务处理那么依赖于MTS或MSMQ2.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:是整个SOAP消息的根元素,也是每个SOAP消息中必须有的元素其他两个元素都在这个元素内部2〕SOAP是SOAP消息中的可选元素,如果有,必须是的第一个子元素.元素中包含多个头条目子元素3〕SOAP是每个SOAP消息中都必须有的元素如果Envelope消息中没有元素,那这个元素必须是元素的第一个直接子元素,否那么它必须是紧接着元素的元素。
元素中包括多个体条目,在该元素中还可以使用元素,当出现错误时使用这个元素1.2 SOAP的消息系统如果要在SOAP消息中发送某个XML文档,那么需要创立一个SOAP消息,并在元素中包括这个文档即可这样的SOAP消息通常成为“文档样式/字面格式〞的SOAP消息如果应用程序内部使用.NET对象表示请求数据,就可以使用.NET串行化类生成XML下面将创立一个Web效劳,效劳端接收发单XML文档,检验其中的数据,并返回一个收据号码客户端向Web效劳器发送包含发货单数据的SOAP消息它们使用的都是文档样式/字而格式的SOAP消息图1显示了这个例子的结构图1 SOAP消息系统结构下面是包含发货单文档信息的请求消息,客户端使用 把SOAP消息发送给Web效劳〈soapenv: Envelope …〉 〈soapenv: Body〉〈invoice xmlms=“ ://schemas.mywebservices /examples/〞 〉 123-CXF-9028 … 下面是Web效劳返回的响应SOAP消息,其中包含收据号码,客户端获得这个消息,取得其中的收据号码 10002SOAP消息系统的实现2. 1效劳器端设计效劳端的任务是接收客户发送的发货单数据,检验它的正确性,然后对其做相应的处理,比方存入数据等。
如果发货单数据正确,效劳器还要向客户返回一个包含收据编号的文档这里使用ASP.NET来实现效劳器,使用VisualStudio.NET创立ASP.NET应用程序文件名 ://localhost/MessageServer/ Webform1. aspx程序的方法首先从Request中读取客户提交的发货单XML文档,然后取得元素,接着使用反串行化的方法,把元素中的XML文档串行化到类invoice的对象中,此后可以在应用程序中方便地处理发货单数据,比方把数据存入数据库等,方法的最后调用Write-SOAPRespons方法向客户返回一个包含收据号码的SOAP消息文档在实际应用中,收据号码应该来自数据库或者由其他信息决定2. 2 客户端设计客户端的任务是把发货单数据发送给Web效劳客户端的实现涉及到两个功能:一个是与效劳器建立连接,发送数据;另一个是根据SOAP协议的规定格式化一个文档样式/字面格式的SOAP消息2. 2.1与效劳器通信这里使用.NET的 WebRequest类来实现与效劳器通信为了把通信和格式化SOAP消息两个功能分开,把通信功能放在一个单独的类XML 中,刀把该类放在一个文件(XML . cs)中。
下面是该文件的内容程序类的结构很简单,首先是3个私有成员,分别代表请求的响应消息(responseText)、 请求( Request ) 和 响应( Re-sponse) 其次是3个公开的方法:0pen方法用指定的 方法翻开与指定URL的连接,并设置请求内容的M1M};格式Send方法向 Re-quest写入流中写入数据,写完数据后,就可以读取效劳器的响应内容;Set RequestHeider方法用于添加 头,使用 发送SOAP消息时需要指定SOAPAction头最后是ResponseString属性,返回响应内容2. 2. 2 格式化SOAP消息SOAP消息有既定的格式,需要把发货单文档放到SOAP的元素中这里把格式化的SOAP消息和使用XML 类发送SOAP消息合并到了SOAPSender类中包含该类的代码文件名为SOAPSender.cs由于该文件很长,下面只用类的说明形式描述该类的CreateSOAPEnvelope方法用于创立SOAP消息的框架,也就是创立一个包含Envelope的XML文档WriteBodyXml方法把指定的XML文档插入到元素内部,也就是SOAP消息的局部。
调用Send方法时将使用XML 类翻开与指定URL的连接,设置SOAP Action头,并发送SOAP消息该类中的其他方法用于创立体条目、子元素和属性等。
