版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于windows消息队列机制的远程通信研究摘 要随着硬件设备和软件技术的发展,网络上的应用也越来越复杂,应用程序的体系结构也从单层、两层、三层到多层。分布式的网络应用成为网络应用的发展趋势。但是,人们在感受到分布式网络应用在解决大型复杂任务的优越性的同时,也愈来愈发现构建和维护分布式应用面临的困难。一个是由于应用程序往往分布在不同的不同的系统、不同的计算机上,如何将这些应用程序有效的集成起来协同工作;另外,在以往,应用程序之间的通讯一般是同步的通讯,而现在在很多情况下要求异步的通讯。应用程序之间要能够实现异步的消息传输。为解决这样的问题,消息队列中间件应运而生。它的突出功能就表现在实现应用程
2、序之间异步的消息传输以及集成分布的应用程序。微软的消息队列中间件技术MSMQ是消息队列中间件中的优秀代表,它也是本文重点研究的对象。本文从消息中间件技术的出现原因引出消息中间件技术的相关概念并加以阐述,同时说明了MSMQ技术的实现方法与API函数,最后在介绍了基于MSMQ的一个远程通讯系统的实现,在该系统中封装了MSMQ的windowsAPI函数。关键词:分布式网络应用,中间件石消息队列中间件;异步消息传输;MSMQAbstractWith the hardware and software technology development, application on the network
3、also more complex, application architecture from single-layer, two-story, three-tier to high-rise. Distributed network applications become the development trend of network applications. However, it was felt in the distributed network applications in resolving large and complex task of the superiorit
4、y at the same time, also found that more and more construction and maintenance of distributed applications the difficulties facing them. As an application is often distributed in various different systems, different computer, how effective these applications work together to integrate addition, in t
5、he past, communication between the application is generally synchronous communication, and now In many cases the requirements of asynchronous communication. Applications must be achieved between the news asynchronous transmission. To solve this problem, message queue middleware emerged. It functions
6、 on the outstanding performance in achieving the application of information between asynchronous transmission and distribution of integrated applications. Microsoft's Message Queue middleware technology MSMQ message queue is in an excellent representative of middleware, it is this focus on the t
7、arget. This article from the news middleware technology leads to the emergence of the reasons for information related to the concept of middleware technology and expand the MSMQ technology at the same time that the method and API function, in the final based on MSMQ on a long-range communications sy
8、stems to achieve, in the system Packaging in the MSMQ the windowsAPI function.Key Words: distributed network application,middleware,message queuemiddleware,asynchronous message transmission,MSMQ 目 录1 绪论11.1 课题提出的背景和意义11.1.1网络应用面临的挑战11.1.2 消息队列中间件(MQM)的出现11.2 国内外发展现状21.3 本文主要研究内容32. 应用程序体系结构42.1 单层应用
9、体系结构模型42.2 两层应用体系结构模型42.3 多层应用体系结构模型52.4Internet应用体系结构63 中间件83.1什么是中间件83.2 中间件要解决的问题83.3 中间件的分类93.4中间件技术的发展趋势124. MSMQ概述134.1 MSMQ的功能134.2 MSMQ的网络拓扑144.3 MSMQ网络组件164.3.1MSMQ服务器164.3.2MSMQ独立客户端164.3.3MSMQ从属客户174.3.4MSMQ Exchange连接器与MSMQ API174.4 MSMQ队列类型184.5 消息类型184.6消息路由204.7队列管理器204.8组件队列215. MSMQ
10、的安装246MSMQ的编程246.1COM246.6.1com概述246.6.2接口256.2MSMQ编程模型286.3创建队列296.3.1公有队列296.3.2私有队列296.4队列定位296.5消息发送306.6消息接收与窥探307. MSMQ API的封装307.1创建发送与接收队列327.2发送消息到远程计算机消息队列并保存到本机337.3消息的组包发送377.4队列的删除407.5队列中消息的删除428.系统的实现458.1系统主界面458.2消息发送468.2.1发送消息468.2.2组包消息发送478.3队列消息查看488.3.1查看发送队列488.3.2查看接收队列48参考文
11、献50致 谢511 绪论1.1 课题提出的背景和意义1.1.1网络应用面临的挑战网络技术近些年来发展得很快,硬件设备的性能越来越强大,所承载的网络应用也越来越复杂。体系结构从集中式,到两层模式,到三层模式,直至多层模式。毫无疑问,网络应用的复杂化,大型化是软件技术发展的必然,也是任务复杂化直接推动的结果。分布式的网络应用在许多领域都提供了最佳的解决方案。以至分布式网络成为一个极为热门的研究方向。但是,在分布式网络应用发展的过程中,却面临着两个颇为棘手的问题。(1) 在大型的分布式网络应用中,不同的应用运行在不同的进程,分布在不同的计算机上,甚至跨系统,跨网络,如何将这些应用有效地集成,使不同的
12、应用能够保持良好的通讯,真正发挥分布式应用的巨大优越性。这一点成为衡量一个网络应用是否可靠,是否稳定的重要标准。(2) 在分布式网络应用中,越来越多的应用程序之间的通讯不仅要求可以同步发送接收,还要求能够实现异步的通讯。而传统的通讯技术一般都要求发方应用和接收方应用同时在线,而且发送者和接收者还要知道互相的程序对程序的调用接口。实际情况却是,应用程序并不总是同时在线;网络的硬件故障往往不可避免;数据的流量具有突发性,可能造成网络的信息拥塞;某个应用需要立即得到处理,而另外一个应用却可以缓一缓,它们应当区别对待;这样一来,应用之间的异步通讯问题变得非常突出。1.1.2 消息队列中间件(MQM)的
13、出现应用消息队列中间件(MessageQueueMiddleware)技术,就能够很好的解决以上问题。总的来讲,消息队列中间件的作用体现在两个方面,一是集成大型的分布式应用,二是确保分布式应用之间的异步通讯。MQM提供可靠的异步的和松散偶合的通信服务。MQM在其它传统的通讯方法不能奏效时能够成功,因为它满足三个重要的条件:1) 发送者和接收者无须同时连接。2) 即使发送者和接收者之间的通讯不是同时发生的,也会有极强的请求和回答传送保障。3) 请求和回答可以通过发送方和接收方之间的路由器进行翻译和重新格式化。 利用MQM,应用程序通过一系列消息在彼此间进行通信。当消息在发送方和接收方之间进行传送
14、时,MQM提供方将消息限定在控制域内,这个控制域叫做队列,因此才有“消息队列中间件”的名称。队列防止消息在传输过程中被丢失,并在消息准备好时为接收方提供一个寻找消息的地方.应用程序通过向预定接收方相关的队列发送消息来产生请求。如果发送方希望得到回答,它们通常在所有发送给接收方的请求中包含应答队列的名字。MQM的作用主要体现在以下几点(1)存储和转发(Store-and-forward)通信MQM能使应用程序向其他应用程序发送请求,而那些应用程序不必正在运行或是可到达。(2)防御通信MQM 软 件 使用强大的技术来保证消息在传送中不会丢失,打乱顺序或重复传送。(3)并发执行使用MQM ,应用程序
15、可以向许多不同的接受方发送请求而不必等待响应;等待接受方可以平行地处理请求;当所有的响应消息都到达时,或无论什么时候只要方便,应用程序就处理结果。(4) 日志通信MQM产品可以产生日志,以利于记录,核查和错误恢复。1.2 国内外发展现状消息队列中间件技术并不是最新技术,早期,由于没有统一的,适合各种情况和平台的消息队列产品,人们往往自己编写消息队列中间件,这些消息队列中间件虽然可以起到相关的作用,但是它们还是太专门,太原始,费用太高。因此,许多大的公司就开始开发适用于各种情况和平台的消息队列中间件产品,最著名的有IBM的MQSeries和Microsoft的MSMQ,这两个产品都有很好的跨平台
16、性,适用面很广,现在许多公司采用它们作为中间件的一部分。而最近两三年,由于中间件的(包括消息队列中间件)市场销t以惊人的速度增长,国外专门做中间件的公司越来越多,工业级的产品也越来越多。中间件技术在保证系统的安全性,可伸缩性,可用性,可管理性,互操作性,适应性,分布式需求等等方面都有了很大的进展。中间件被广泛用于银行,电信,金融,电子商务,大型企业化制造,国家安全等等领域。据工DC预测,到2002年全球中间件市场销售额将达到80亿美元;在中国,1998年中间件市场总值仅为12.34亿美元,而到2004年将达到90.3亿美元,年增长率高达39.7%。中间件市场空间之大,成长率之高,由此可见一斑。
17、面对全球中间件技术和市场的发展态势,我们国家的情况是怎样的了?客观来讲,我们在计算机系统软件,以及一些关键性的大型应用软件方面的落后是不争的事实,这一点,相信国人都有切肤之痛.但是对于中间件,我们再也不能落后了。理由有二:首先中间件作为操作系统之上的独立的系统软件或服务程序,其市场潜力极其巨大,如果我们将这一市场再次拱手让给外国,我们将会面临巨大的经济损失。这里有一个现实的例子.BEA中间件刚进入中国的时候,报价是4000万美元,后来出现了一个国内的竞争者清华北美公司,BEA的报价马上就降为300万人民币,其间的悬殊令人乍舌。其次,中间件技术在国外的发展历史也不长,也是近几年的事情,我们虽然起
18、步稍微迟了一点,但是完全有赶上的可能。目前国内专门的中间件厂商虽然只有一两家,但是它们的技术在很多方面并不比国外差。譬如东方通的TongLINK/Q(消息队列中间件)已经占领了中国建设银行的业务份额,另外几家大的金融单位和电信单位(包括中国联通)也采用了东方通的产品.1.3 本文主要研究内容论文从网络应用面临的问题和挑战入手,研究了中间件技术,对其概念、功能、类别、发展趋势等方面进行了阐述。接着对中间件中最热门,发展最快的消息队列中间件技术进行了剖析,尤其是它的消息处理机制和同步通讯协议的对比。消息队列技术的优秀代表MSMQ,是本论文的研究的重点,详细阐述了它的基本概念、特点、使用和管理、编程
19、等等方面。并结合一个具体的应用来展示消息队列技术在应用程序通讯,数据传输方面的优越性。文章最后以一个系统为例详细说明对MSMQAPI的封装,与消息队列基本功能的实现。2. 应用程序体系结构任何一个应用程序的设计开发的最重要的元素之一就是如何进行系统架构。系统架构定义一个应用程序的各个模块之间如何相互作用,以及每个模块负责执行什么样的功能。从纯功能的观点来看,大多数应用程序主要处理如下三种任务:获取用户输入,将输入存储为数据,按预定的操作程序处理这些数据。目前流行的主要有三种应用程序体系结构模型,各应用体系模型就是根据在用户与数据之间所具有的层次来划分的。每一层次一般都运行在不同的系统或是相同系
20、统的不同进程空间内。这三种应用体系结构模型分别就是单层应用体系结构模型、两层应用体系结构模型、多层(可以是三层或三层以上)应用体系结构模型。2.1 单层应用体系结构模型单层应用体系结构模型在单一的应用层内实现用户界面、商业规则、数据管理。对数据本身来说,它可以是物理上位于一个远端位置,但是存取数据的逻辑却是应用程序的一部分。在这样的体系结构中,数据处理主要不是通过数据库,而是文件来存取数据,应用程序自己定义如何进行数据的存储、查询、读取等运算逻辑。单层应用的一个最普遍的例子就是字处理器:它有一个用户界面用于接收键盘输入以及显示输出,它有众多商业规则来完成页码标记、拼写检查等功能,它还有一些文件
21、存取程序来管理数据文档。单机应用特别是Windows的应用程序多数属于这种单层模型。这种模型的好处在于应用程序的前期分析和设计比较简单,但是后期的维护会变得非常麻烦,因为用户界面、商业规则、数据管理交织在一起,对任何一部分的改动都会影响到其它部分。2.2 两层应用体系结构模型在两层应用体系结构模型中,商业规则和用户界面仍然结合在一起构成应用程序的客户端。但是数据的存取和管理独立出来由单独的通常是运行在不同的系统上的程序来来完成,这样的数据存取和管理程序通常就是象SQL Server或Oracle这样的数据库系统。熟知的Client/Server就是这样的两层结构,基于Client/Server
22、结构的应用在局域网的应用中占绝大多数。以下是该结构的典型模型:图 1典型的两层体系结构模型在两层应用体系结构模型中,还有一种情况是用户界面单独为一层,商业规则和数据处理合而为一构成另一层。这种结构的典型例子就是商业规则以存放在数据库服务器内的存储过程来体现。存储过程是数据库系统的一个重要功能,每个存储过程就是存储在数据库服务器上的一段程序,它指明如何进行一系列的数据库操作。存储过程可以直接被客户端调用,此外还有一种触发机制可以调用执行存储过程:当数据满足一定条件时,触发一个事件,引起相应的存储过程被调用执行.Client/Server结构模型的一个最大的好处在于:通过允许多用户同时存取相同的数
23、据,来自一个用户的数据更新可以立即被连接到服务器上的所有用户访问。这种结构的缺点也很明显:当客户端的数目增加时,服务器端的负载会逐渐加大,直到系统承受不了众多的客户请求而崩溃;此外,由于商业规则的处理逻辑和用户界面程序交织在一起,因此商业规则的任何改动都将是费钱、费时、费力的。虽然两层结构模型为许多小规模商业应用带来简便、灵活性,但是对快速数据访问以及更短的开发周期的需求驱使应用系统开发人员去寻找一条新的创建分布式应用的道路,那就是多层应用体系结构模型.2.3 多层应用体系结构模型在多 层 应 用体系结构模型中,商业规则被进一步从客户端独立出来,运行在一个介于用户界面和数据存储的单独的系统之上
24、。现在,客户端程序提供应用系统的用户界面,用户输入数据,查看反馈回来的请求结果,对于Web应用,浏览器是客户端用户界面,对于非Web应用,客户端是独立的编译后的前端应用程序;商业中间层由封装了商业逻辑的组件构成,这些商业逻辑组件模拟日常的商业任务,通常是一种COM组件或者CORBA组件:数据层可以是一个象SQLServer这样的数据库管理系统,或者是象Exchange这样的非结构化数据交换系统,还可以是象事务处理或消息队列这样事务处理机制,应用程序可以选择一个或多个这样的数据服务。商业规则处理并确保所有的商业过程正确执行。在这种多层体系模型中,客户端程序不能直接存取数据,从而为数据的安全性和完
25、整性带来保障。这种结构带来的好处就是应用系统的每一个部分都可以被单独修改而不会影响到另外两个部分。此外,因为每一层之间是通过接口来相互通信的,所以只要接口保持不变,内部程序的变化就不会影响到系统的应用其余部分。以下是典型的应用程序结构:图 2典型的多层应用体系结构模型在多层体系结构模型中,各应用层并不一定要分布在网络上不同机器的物理位置上,而可以只是分布在逻辑上的不同位置,此外各应用层和网络物理拓扑之间并不需要有一一对应关系,每个应用层在物理拓扑上的分布可以按系统需求而变化.比如,商业中间层和数据处理层可以位于装有IIS Web服务器和SQLServer数据库服务器的同一台机器。使用多层体系结
26、构模型为应用程序的生命周期带来诸多好处,包括:可复用性、适应性、易管理性、可维护性、可伸缩性。你可以将你创建的组件和服务共享和复用,并按需求通过计算机网络分发。你可以将大型的、复杂的工程项目分解成简单安全的众多子模块,并分派给不同的开发人员或开发小组。你可以在服务器上配置组件和服务以帮助跟踪需求的变化,并且当应用程序的用户荃础、数据、交易t增加时可以重新部署。多层应用程序将每个主要的功能隔离开来。用户显示层独立于商业中间层,而商业中间层独立于数据处理层。设计这样的多层应用程序需要进行权衡:它在初始阶段需要更多的分析和设计,但在后期阶段会大大减少维护费用并且增加功能适应性。中间商业层组件可以按响
27、应时间或其它规则的需要移动到不同的位置。例如,移动到用户层以加强用户界面处理功能并且可以减少网络的数据往复,通过存储过程将数据规则移动到数据层来实现。只有当具有多重数据源时,数据规则独立为一层才变得至关重要。在多层体系结构模型中,客户端应用程序变得比在Client/Server这样的两层体系结构模型中更为小巧,因为服务组件已经分布在中间商业层。这种方式带来的结果是在用户上的一般管理费用降低,但是由于服务组件分布在不同的机器上,因此系统的通信量会大大增加。2.4Internet应用体系结构过去的一段时间,许多大大小小的公司都在为功能越来越强大、费用越来越低廉的个人计算机建立强壮的应用程序。而当这
28、些应用程序每天被成百上千万的用户使用时,新兴的技术也同时为应用软件开发人员及应用软件系统平台带来意义深远的影响.Internet 技术的发展为全球信息在大小企业以及个人之间的共享奠定了基础。Internet催动着技术创新,竞争和加速的变化脚步使得对快速开发具有高适应性应用程序的方法模型的需求日益迫切。各种应用体系结构模型都可以用于Internet应用开发,但是在单层、两层、多层这三种模型中,多层应用体系结构模型是开发Internet应用的最好的应用模型。基于 We b的应用多数属于多层应用体系结构.Web技术如HTML,D HTML.XML等表示的标记语言为用户层界面带来了更好的信息显示方式,
29、丰富了用户界面层的应用;Web服务器如IIS. Apache等架设在用户层浏览器和数据层数据库服务器之间,一方面通过CGI. ASP等直接为Web应用提供中间商业层服务,另一方面驱动商业逻辑组件提供中间层服务:接受来自浏览器的服务请求,传递给数据库服务器,并将从数据库服务器返回而来的数据提供给用户层浏览器;随着Web应用的增加,数据层数据库服务器也变得日益重要。应用于Internet的三层应用体系结构模型也有很大的缺限。这种模型将绝大部分工作交由服务器进行:数据存储在服务器,商业应用程序代码存储在服务器,数据的加工、处理在服务器端进行,程序的执行也在服务器端,客户端浏览器只简单地用于显示由服务
30、器端传来的标记语言页面。这是一种瘦客户端-胖服务器端模式,它缺点之一是代价昂贵,能满足要求的服务器价格是不菲的;缺点之二是客户端计算功能的严重浪费,今天的PC机已具有相当大的运算能力以及相当低廉的价格,真正好的应用模式应该对PC运算能力加以充分利用;缺点之三是写服务器商业应用程序的要求是很苛刻的,应用程序的任何微小的失误在多用户访问情况下将很快导致服务器系统的崩溃;缺点之四是集中式的数据访问将会在Web服务器上产生数据传输瓶颈。如果采用单层或两层体系结构模型,那么当用户想要运行一个应用程序时,必须将该应用程序整个下载到客户端用户机器,即便用户只需要该应用程序的部分功能或只须临时用一下该应用程序
31、。不言而喻,这种模式不适合Web应用。Web应用的一个特点是Web上存在着无数的应用程序,如果用户每访问一个这样的应用程序都必须先完全下载完全安装然后才能运行,那么无论是时间效率还是用户的机器都是不现实的。此外,这种应用模式在安装、升级、维护方面都极为不便,这是因为每次安装、升级、维护都必须在每台用户机器上进行。分析一下从单层体系结构到两层体系结构再到多层体系结构的发展过程,可以看出隐含其间的是一个完整的应用程序逐步被分割为不同的组成成份:先是数据存取和管理独立出来成为单独的数据层,然后是商业逻辑处理独立出来构成单独的商业中间层。每一次的分割都带来不同层度的好处。分割到最后,一个完整的应用就包
32、括用户层显示页面、商业中间层的商业逻辑组件、数据层数据库系统。当前流行的商业逻辑组件主要是基于COM/DCOM组件模型或者基于CORBA组件模型。所有的这些页面或组件都成为不可再分割的单元。3 中间件3.1什么是中间件中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通讯.从中间件的定义可以看出,中间件是一类软件,而非一种软件;间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能.图 3 中间件在应用中的位置3.2 中间件要解决的问题 首先,应用
33、的互连和互操作是中间件要解决的第一位的问题。不管这些应用分布在什么硬件平台上,使用了什么数据库,透过了多么复杂的网络,或是同一电脑中的不同应用系统.这里所说的互连和互操作是应用之间而不是说系统之间的,因为中间件是一种应用级的软件,是一种应用集成的关键构件,一个好的中间件产品要能解决应用互连带来的各种问题,通讯要支持各种通讯协议、各种通讯服务模式、传输各种数据内容、数据格式翻译、流量控制、数据加密、数据压缩等;中间件核心要解决名字服务、安全控制、并发控制、可靠性保证、效率保证等。应用开发要能提供基于不同平台的丰富的开发接口、支持流行的开发工具、支持流行的异构互连接口标准(如XA、工DL等);系统
34、管理要解决对中间件本身的配置、监控、调谐,为系统的易用易管理提供保证.其次 , 针 对不同的应用领域,对中间件又有各种不同的要求。由于实际的应用环境千差万别,不能指望有一种包罗万象的中间件解决所有的问题。对于邮件系统需要提供存储转发功能;对工作流应用需要以条件满足状态将信息从一个应用传递到另一个应用;对联机交易处理系统,需要保证数据一致性、不停机作业、大量并发的高效率;对于一个数据采集系统需要保证可靠传输,等等.3.3 中间件的分类在讨论中间件的分类前,先分析一下应用之间常用的会话方式。一般地,应用级的会话有两种方式,各类中间件都是基于这两种会话方式一种是同步方式,客户方向服务方发出请求后,等
35、待服务方返回的结果,在收到服务方的处理结果前不做其它处理。在这种方式下,客户方在等待服务方的处理结果时,可以结合“超时”概念,在规定时限内,如果客户方还未收到服务方的处理结果,则本次请求失败。同步方式可能因为拥挤的网络环境造成灾难,当客户方超时时间到而未收到服务方的应答时,客户方本次请求失败,它会去重新发起请求。这会造成恶性循环,大大降低网络上的处理效率.另一种会话方式是异步方式,客户方在等待服务方的处理结果时可以去完成其它任务。在异步方式下,当一个节点向另外一个节点发出消息后,不等待应答。因而一个消息发送完成后,发送方就可以去处理其它事情。但不幸的是发送方也可以发送新的消息,因而同样会造成网
36、络拥堵.中间件的分类方式很多,按照IDC的分类方法,中间件可分为六类(1)终端仿真/屏幕转换用 以实 现 客户机图形用户接口与已有的字符接口方式的的服务器应用程序之间的互操作(2)数据访问中间件适用于应用程序与数据源之间的互操作模型,客户端使用面向数据库的API,以提请直接访问和更新墓于服务器的数据源,数据源可以是关系型、非关系型和对象型。这类中间件大都基于SQL语句,采用同步通讯方式.此类中间件使应用开发简单,但如果是透过广域网使用,会带来严重的效率问题,因为在低速网上来回交互SQL语句会使通讯流量过大,同时对数据压缩、加密带来不便.(3)远程过程调用中间件远程 过 程 调用是一种广泛使用的
37、分布式应用程序处理方法。一个应用程序使用RPC来“远程”执行一个位于不同地址空间里的过程,并且从效果上看和执行本地调用相同。事实上,一个RPC应用分为两个部分:server和client.server提供一个或多个远程过程:client向server发出远程调用。server和client可以位于同一台计算机,也可以位于不同的计算机,甚至运行在不同的操作系统之上。它们通过网络进行通讯。相应的stub和运行支持提供数据转换和通讯服务,从而屏蔽不同的操作系统和网络协议。在这里RPC通讯是同步的。RPC机制可用以构造客户机/服务器方式的应用,但由于它是同步方式,因而在工作的时候,要求客户方和服务方均
38、能正常工作才能很好地运行,有一方不能工作将导致RPC失败。这在网络故障、机器故障存在的情况下,这一要求是很难保证的。还有一点值得注意的是,不管客户方能做什么或做的多快,它必须依靠服务方才能有效工作。有些恢复机制可以在一个远程调用阻塞时转而去调用另一个服务器上的过程,但这种路由方式也会影响效率。也有的RPC机制采用异步方式,客户方非阻塞地调用远端的过程,但这种方式不太标准而且很难采用。另外,由于大多数RPC机制很难建立点到点的关系,因而也很难用在面向对象的编程当中。(4)交易中间件交易 中 间 件是专门针对联机交易处理系统而设计的。联机交易处理系统需要处理大量并发进程,处理并发涉及到操作系统、文
39、件系统、编程语言、数据通讯、数据库系统、系统管理、应用软件,是一个相当艰巨的任务,但是工作的难度可以通过采用一个交易中间件来简化。交易中间件就是一组程序模块,用以大大减少开发一个联机交易处理系统所需的编程量。交易中间件管理由应用声明和提交的交易,并通过两阶段提交协议等方式保证分布式交易的完整性、控制并发、实现交易路由和均衡负载.(5)对象中间件面向对象的中间件提供一个标准的构件框架,能使不同的厂家的软件通过不同的地址空间、网络和操作系统互相交互访问。该构件的具体实现、位置及所依附的操作系统对客户来说都是透明的。例如,我们可以通过简单的组装或扩展已有的构件就可以建立一个客户机/服务器结构的信息系
40、统。面向对象的中间件技术的目标就是为软件用户及开发者提供一种应用级的即插即用的互操作性,就象现在使用集成块和扩展板一样。对象 请 求 代理(ObjectR equestB roker)是对象中间件的核心组件它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。CORBA规范包括了OR的所有标准接口。1991年推出的CORBA 1.1定义了接口描述语言OMG IDL和支持Client/Server对象在具体的ORB上进行互操作的API. CORBA 2.0规范描述的是不同厂商提供的ORB之间的互操作.对象请求代理(ORB)是对象总线,它在CORBA规范中处于核心地位,定义异构环
41、境下对象透明地发送请求和接收响应的基本机制,是建立对象之间client/server关系的中间件。ORB使得对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可以位于本地也可以位于远程机器。ORB拦截请求调用,并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等.client对象并不知道同server对象通讯、激活或存储server对象的机制,也不必知道server对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分。值得 指 出 的是client和serve:角色只是用来协调对象之间的相互作用,根据相应的场合,ORB上的对象可以是cli
42、ent,也可以是server,甚至兼有两者。当对象发出一个请求时,它是处于client角色:当它在接收请求时,它就处于server角色。大部分的对象都是既扮演client角色又扮演server角色。另外由于ORB负责对象请求的传送和server的管理,client和server之间并不直接连接,因此,与RPC所支持的单纯的Client/Server结构相比,ORB可以支持更加复杂的结构.(6)消息中间件尽管消息中间件不象RPC机制那样流行,但越来越多的分布式应用采用消息中间件来构建,基于消息的机制更多地适用于事件驱动的应用,当一个事件发生时,消息中间件通知服务方应该进行何种操作使用消息中间件编
43、程采用的是消息中间件的API,可以很好地扩展到不同的操作系统和硬件平台上.消息中间件的核心安装在需要进行消息传递的系统上,在它们之间建立逻辑通道,由消息中间件实现消息发送。消息中间件可以既支持同步方式,又支持异步方式,实际上它是一种点到点的机制,因而可以很好地适用于面向对象的编程方式。中间件领域目前最热门的技术是异步的消息中间件,异步中间件技术比同步中间件技术具有更强的容错性,在系统故障时可以保证消息的正常传输,因而在过去的两年里增长迅速.异步中间件技术可以分为两类:广播方式和发布/订阅方式。广播方式把消息分发给系统的所有用户。发行/订阅方式可以指定哪种类型的用户可以接收哪种类型的消息。发布/
44、订阅方式由于更加智能有效,事实上已成为异步中间件的非正式标准.3.4中间件技术的发展趋势根据有关组织的预测,消息中间件是目前中间件技术的发展热点,如果也把交易中间件看成是一类特殊的消息中间件的话,那么消息中间件在目前的市场上占据主导地位,而且发展势头迅猛。消息中间件以其独特的优势为各种分布式应用的开发注入了强大动力,极大地推动了应用系统集成的发展.对象中间件技术也发展迅速,各大硬软件厂商都在积极参与有关标准的制定和产品开发工作,象IBM, HP, DEC, AT&T, ICL, Microsoft等都制定了相应的战略。许多对象中间件的专门厂商也相继诞生,未来的对象中间件市场会出现群雄逐
45、鹿的局面.中间件的另一个发展动向是向Intemet的延伸,Intenret门ntranet技术早己在全球范围内广泛采用,但由于其自身的技术特点,在构造许多大型企业级应用时仍显不足,如并发控制、负载均衡、可靠传输、数据路由等,因而仍然存在供中间件发展的中间地带。总之,中间件技术作为软件行业新崛起的一个崭新的分支,正在全球范围内迅猛发展,根据IDC组织的预测,到2002年,全球的中间件市场将达到70亿美元。中间件技术的发展,也将把分布式应用的带到一个新的境界。4. MSMQ概述MS M Q是微软的消息队列中间件产品,它是Windows2 000操作系统中消息应用程序的基础,也是用于创建分布式,松散
46、连接的消息通讯应用程序的开发工具。为消息队列开发的应用程序可以将消息发送到队列,这些队列是用来确保消息能够到达目标的临时存储位置。这些应用程序可以通过不同种类的网络进行通讯,也可以与脱机的计算机通讯。消息队列提供了有保障的消息传递、有效的路由、安全性、事务处理支持以及基于优先级的消息传递。具有这些功能的软件产品通常在业界叫做消息队列软件、存储转发软件或面向消息的中间件。使用消息队列,最终用户能够在断开连接的网络和计算机之间通讯,而不管网络和计算机的当前状态如何。系统管理员可以用消息队列高效地管理大型复杂的计算机和消息队列网络。通过消息队列,MIS决策者可以得到更加可靠的通讯,并且更有效地使用网
47、络资源。开发人员可以只关注商业规则,而不必关心网络问题,因为消息队列能够提供有效的网络通讯。4.1 MSMQ的功能在Windows2000以前,MSMQ的基本功能如下:(1)无连接消息传递使用存储和转发消息队列,计算机不会受到网络的干扰,也不必建立会话。因为在应用程序级使用无会话模式,所以源计算机和目标计算机不需要支持相同的网络协议。既支持网际协议(IP),也支持Internet数据包交换(IPX)协议。(2)消息优先化消息优先化允许先发送紧急或重要的消息,再发送次重要消息,这样可以保证对关键的应用程序有足够的响应时间,而忽略不太重要的应用程序。(3)有保障的消息传递消息可以存储在基于磁盘的队
48、列中,然后转发以提供有保障的消息传递.(4)事务处理消息。使用事务处理功能,可以将一些相关活动在一个事务处理中连接起来,保证消息按顺序传递,保证消息只传递一次并确认消息能够从目标队列成功返回。(5)动态队列创建可以随意创建或更改队列属性,而不影响消息应用程序.(6)消息路由消息队列能够根据网络的物理拓扑、会话集中性需要以及传输连通性提供消息路由,会话的集中性,易于有效的利用慢速的网络连接。(7)不同系统的集成消息队列可以跨越各种硬件平台使用。(8)跨平台支持MSMQ-M QSeriesB ridge扩展7消息队列的功能,提供与IBM MQSeriesVersion2和Version 5平台的无
49、缝、事物处理连通性.消息队列连接器(MQC)可用于将消息队列的功能扩展到其他非Windows的操作系统,包括:UNIX,AS/400,T andem,DigitalVMS,CICS/MVSH 和UnisysClearPathH MP.在 Windows2000中,MSMQ有T一些新的功能。(1) Active Directory集成集成 并 扩展ActiveD irectory目录服务,以便存储所有配置和状态信息。(2)混合模式操作消息 队 列 可以在混合模式域环境下操作,这意味着在WindowsN T4 .0下运行的MSMQ 1.0控制器服务器和Windows 2000下运行的消息队列服务器
50、能够进行无缝通讯。(3) Windows 2000安全集成消息 队 列 仍然可以通过使用访问控制、审核、加密和身份验证支持保密和安全性,并且能够对嵌入Windows 2000中的新安全功能起到平衡作用,例如Kerberos V5安全协议。(4)工作组支持消息 队 列 可以在Windows2 000工作组中安装和运行,而不是在域中。此外,安装在工作组中的消息队列能够在以后加入到域中,然后再从域分离。Active/active群集支持。目前消息队列完全支持服务器群集中的active/active操作,这意味着消息队列能够同时在服务器群集中的所有节点上运行。(5) Windows CE支持消息 队
51、列 客户端的特殊版本预装在运行WindowsC E3 .0(或更高版本)操作系统的手持式和掌上型计算机中。消息备份和还原.万一计算机发生故障,则消息存储文件、日志文件、事务处理日志文件和注册表设置都可以备份和还原。(6) Microsoft管理控制台(MMC)支持目前使用MMC控制台中的管理单元管理消息队列。4.2 MSMQ的网络拓扑消息队列是由在Windows2 000网络上提供不同功能和连接的计算机所组成的消息基础结构。消息队列既可以在域环境中,也可以在工作组环境中使用。在消息队列环境中,域环境包括提供Active Directory之类目录服务的域控制器,而工作组环境是不提供这种目录服务
52、的任意环境。1域环境在域环境中,消息队列在Windows2 000域控制器上运行,提供对ActiveDirectory的访问。Windows 2000网络中所有域的总和叫做树林。消息队列也可以在混合模式域环境中运行,这个域由在Windows NT 4.0上运行的MSMQ1.0控制器服务器和在Windows 2000上运行的能够互相通讯的消息队列服务器组成。在域环境中,消息队列网络分成不同的Windows 2000站点,这些站点由路由链接互连。站点映射网络的物理结构,而域通常映射单位的逻辑结构。逻辑结构和物理结构是相互独立的,因此一个站点中可能有多个域,也可能在一个域中有多个站点。在消息队列的环
53、境中,站点包含下列内容:(1) Windows 2000域控制器,它在Active Directory 目录服务中保留配置和状态信 息 ,并 可以使用站点链接在站点之间复制这些信息。ActiveD ierctory使用多 主 机 模式,这意味着任何Windows2 000域控制器都可以读取或写入存储 在 A ctiveD irectory中的对象。(2)所有Windows 2000计算机都使用相同的网络协议(一般为IP)。一个站点中 使 用 相同网络协议的任意两台计算机之间都是直接连通的。这种连通性意 味 着 快速而廉价的通讯。(3)相关子网的集合,每个子网都有单独的IP子网地址。2 工作组环
54、境消息队列可以在不是域的环境下运行,例如工作组或其他不提供目录服务的环境。如果消息队列在工作组中的计算机上运行,则该计算机可以随后加入Windows 2000域.相反,消息队列计算机可以是域的一部分,然后再加入工作 组。该计算机可以随后重新加入相同的域.但是在非域环境下使用消息队列存在下列限制:(1) 计算机发送的消息不能由与需要的目标计算机直接连通的消息队列服务器发送(2)不能访问Active Directory。因此,只能在本地计算机上创建和管理专用队列。不能查看或管理公用队列及ActiveD irectory 内的任何其他信息。当然,如果直接连通,则可以将消息发送到专用队列或从中读取消息
55、。(3) 不能使用内部证书发送经过身份验证的消息:必须使用外部证书代替。图 4MSMQ典型网络拓扑4.3 MSMQ网络组件4.3.1MSMQ服务器消息队列服务器是消息队列网络中的通信中枢。所有的消息队列服务器都运行消息队列服务、主控队列、在本地存储消息,并能默认地发送和接收消息。除此之外,它还提供以下服务(1) 目录访问默认情况下,安装在Windows2 000域控制器上消息队列服务器能够让客户查看或更改在ActiveD irectory目录服务中列出的信息。(2)路由服务启用路由服务的消息队列服务器能提供消息路由和中间存储和转发消息队列。当客户之间不能直接连通时,消息队列服务器可以在站点内或
56、不同站点之间发送消息。提供相同站点内的消息路由功能的消息队列服务器叫做传入路由服务器(InRS)或传出路由服务器(OutRs)。提供站点之间消息路由的消息队列服务器叫做站点入口。一对站点入口轮流定义两个站点之间的路由链接。尽管假定使用相同网络协议的站点内的客户直接连通,但是使用传入路由和传出路由服务器在站点内部发送消息会降低网络的带宽要求。客户可以配置使用传入路由和传出路由服务器,以便代表自己提供消息路由选择。在这种情况下,客户发送或接收的所有消息都先通过消息队列服务器发送。这里的“客户”是指本身不能发送消息的消息队列计算机,例如独立客户和没有启用路由的消息队列服务器。该功能不适用于从属客户。从属客户使用支持服务器代表自己发送和接收消息.如果站点入口用来在站点之间发送消息,那么只有指派的消息队列服务器才能在站点间发送消息。消息队列服务器还可以配置成能够让客户使用不同的网络协议(如IP和IPX)相互通信。(3)群集服务消息队列服务器还可以提供群集组环境中的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 13536:2024 EN Soil quality - Determination of the potential cation exchange capacity and exchangeable cations using barium chloride solution buffered at pH = 8,1
- 防控疫情的安全教案8篇
- 福建省宁德市福鼎市2024-2025学年高二上学期第一次月考(10月)数学试题含答案
- 2022师德师风个人自查报告(5篇)
- 2024年传统银饰项目资金需求报告代可行性研究报告
- DB12-T 1116-2021 控制性详细规划技术规程
- 海南省海口市(2024年-2025年小学五年级语文)统编版竞赛题((上下)学期)试卷及答案
- 江西省赣州市(2024年-2025年小学五年级语文)统编版质量测试(上学期)试卷及答案
- 2024年非晶、微晶合金项目资金筹措计划书代可行性研究报告
- 2023年动叶可调轴流电站用风机资金申请报告
- 国企两书一协议参考范本
- 2024年安徽省滁州市琅琊区城市管理行政执法局招聘15人历年高频难、易错点500题模拟试题附带答案详解
- 插画风浙江大学浙大介绍大学介绍
- 畜禽解剖生理5消化系统课件
- 供应链金融物流行业发展趋势及前景展望分析报告
- 建设施工合同书证据目录
- 应收账款保理融资协议
- 期中试卷(1-3单元)(试题)-2024-2025学年六年级上册数学人教版
- 2025届新高考政治复习备考策略及教学建议 课件
- TYNAEPI 0001-2024 有机固废低温绝氧碳化处理工程技术规
- 大棚膜购销合同协议书
评论
0/150
提交评论