精华内容
下载资源
问答
  • 中间件技术

    千次阅读 2012-10-17 22:01:06
    中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担...

    一 、什么是中间件?

      为什么要使用中间件?
      具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。
      中间件定义及分类
      为解决分布异构问题,人们提出了中间件(middleware)的概念。中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如图1所示,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
      也许很难给中间件一个严格的定义,但中间件应具有如下的一些特点:
      满足大量应用的需要
      运行于多种硬件和OS平台
      支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互
      支持标准的协议
      支持标准的接口
      由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。

    二、主要中间件的分类

      中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层次上,对中间件的分类也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称之为平台。基于目的和实现机制的不同,我们将平台分为以下主要几类:
      远程过程调用(Remote Procedure Call)
      面向消息的中间件(Message-Oriented Middleware)
      对象请求代理(Object Request Brokers)
      它们可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等等,在这些基本的通讯平台之上,可构筑各种框架,为应用程序提供不同领域内的服务,如事务处理监控器、分布数据访问、对象事务管理器OTM等。平台为上层应用屏蔽了异构平台的差异,而其上的框架又定义了相应领域内的应用的系统结构、标准的服务组件等,用户只需告诉框架所关心的事件,然后提供处理这些事件的代码。当事件发生时,框架则会调用用户的代码。用户代码不用调用框架,用户程序也不必关心框架结构、执行流程、对系统级API的调用等,所有这些由框架负责完成。因此,基于中间件开发的应用具有良好的可扩充性、易管理性、高可用性和可移植性。

    1、远程过程调用

      远程过程调用是一种广泛使用的分布式应用程序处理方法。一个应用程序使用RPC来“远程”执行一个位于不同地址空间里的过程,并且从效果上看和执行本地调用相同。事实上,一个RPC应用分为两个部分:server和client。server提供一个或多个远程过程;client向server发出远程调用。server和client可以位于同一台计算机,也可以位于不同的计算机,甚至运行在不同的操作系统之上。它们通过网络进行通讯。相应的stub和运行支持提供数据转换和通讯服务,从而屏蔽不同的操作系统和网络协议。在这里RPC通讯是同步的。采用线程可以进行异步调用
      在RPC模型中,client和server只要具备了相应的RPC接口,并且具有RPC运行支持,就可以完成相应的互操作,而不必限制于特定的server。因此,RPC为client/server分布式计算提供了有力的支持。同时,远程过程调用RPC所提供的是基于过程的服务访问,client与server进行直接连接,没有中间机构来处理请求,因此也具有一定的局限性。比如,RPC通常需要一些网络细节以定位server;在client发出请求的同时,要求server必须是活动的等等。

    2、面向消息的中间件

      MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。目前流行的MOM中间件产品有IBM的MQSeries、BEA的MessageQ等。消息传递和排队技术有以下三个主要特点:
      通讯程序可在不同的时间运行:程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
      对应用程序的结构没有约束:在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。
      程序与网络复杂性相隔离: 程序将消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性。

    3、对象请求代理

      随着对象技术与分布式计算技术的发展,两者相互结合形成了分布对象计算,并发展为当今软件技术的主流方向。1990年底,对象管理集团OMG首次推出对象管理结构OMA(Object Management Architecture),对象请求代理(Object Request Broker)是这个模型的核心组件。它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。CORBA规范包括了ORB的所有标准接口。1991年推出的CORBA 1.1 定义了接口描述语言OMG IDL和支持Client/Server对象在具体的ORB上进行互操作的API。CORBA 2.0 规范描述的是不同厂商提供的ORB之间的互操作。
      对象请求代理(ORB)是对象总线,它在CORBA规范中处于核心地位,定义异构环境下对象透明地发送请求和接收响应的基本机制,是建立对象之间client/server关系的中间件。ORB使得对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可以位于本地也可以位于远程机器。ORB拦截请求调用,并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等。client对象并不知道同server对象通讯、激活或存储server对象的机制,也不必知道server对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分。
      值得指出的是client和server角色只是用来协调对象之间的相互作用,根据相应的场合,ORB上的对象可以是client,也可以是server,甚至兼有两者。当对象发出一个请求时,它是处于client角色;当它在接收请求时,它就处于server角色。大部分的对象都是既扮演client角色又扮演server角色。另外由于ORB负责对象请求的传送和server的管理,client和server之间并不直接连接,因此,与RPC所支持的单纯的Client/Server结构相比,ORB可以支持更加复杂的结构。

    4、事务处理监控

      事务处理监控(Transaction processing monitors)最早出现在大型机上,为其提供支持大规模事务处理的可靠运行环境。随着分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控界于client和server之间,进行事务管理与协调、负载平衡、失败恢复等,以提高系统的整体性能。它可以被看作是事务处理应用程序的“操作系统”。总体上来说,事务处理监控有以下功能:
      进程管理,包括启动server进程、为其分配任务、监控其执行并对负载进行平衡。
      事务管理,即保证在其监控下的事务处理的原子性、一致性、独立性和持久性。
      通讯管理,为client和server之间提供了多种通讯机制,包括请求响应、会话、排队、订阅发布和广播等。
      事务处理监控能够为大量的client提供服务,比如飞机定票系统。如果server为每一个client都分配其所需要的资源的话,那server将不堪重负(如图2所示)。但实际上,在同一时刻并不是所有的client都需要请求服务,而一旦某个client请求了服务,它希望得到快速的响应。事务处理监控在操作系统之上提供一组服务,对client请求进行管理并为其分配相应的服务进程,使server在有限的系统资源下能够高效地为大规模的客户提供服务。

    三、面临的一些问题

      中间件能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制;并提供相应的平台以满足不同领域的需要。因此,中间件为应用程序提供了一个相对稳定的高层应用环境。然而,中间件服务也并非“万能药”。中间件所应遵循的一些原则离实际还有很大距离。多数流行的中间件服务使用专有的API和专有的协议,使得应用建立于单一厂家的产品,来自不同厂家的实现很难互操作。有些中间件服务只提供一些平台的实现,从而限制了应用在异构系统之间的移植。应用开发者在这些中间件服务之上建立自己的应用还要承担相当大的风险,随着技术的发展他们往往还需重写他们的系统。尽管中间件服务提高了分布计算的抽象化程度,但应用开发者还需面临许多艰难的设计选择,例如,开发者还需决定分布应用在client方和server方的功能分配。通常将表示服务放在client以方便使用显示设备,将数据服务放在server以靠近数据库,但也并非总是如此,何况其它应用功能如何分配也是不容易确定的。

    四、中间件市场概况

      中间件是软件技术发展的一种潮流,被誉为发展最快的软件品种,近年来势头强劲,当然,这也是源于市场在全球范围内对中间件的支持。毫无疑问,中间件正在成为软件行业新的技术与经济增长点。
      1999年,Nasdaq股市上投资回报率最高的并非某些名声显赫的网站,而是全球最大的独立中间件厂商BEA公司,其股票升幅高达884.6%。时至今日,BEA的营业收入已连续18个季度保持高速增长。
      国际数据集团(IDC)在日前发表的一份报告中预计今后五年中间件市场将快速成长。IDC预计全球中间件和商业软件收入将从1999年的27亿美元增长到2004年的近97亿美元,增长255%。据GlobalSight公司预计,全球电子商务市场到2001年将达到1.2万亿美元。 ForresterResearch则估计,仅仅是BtoB电子商务,到2003年的年收入就将达到1.3万亿美元。而业内人士认为,未来基于 Internet的电子商务业务将有79%建筑在中间件的基础之上。无疑,这将带来一个潜力巨大的市场。
      在中国,有关数字同样让人兴奋,1998年中间件市场总值达12.34亿美元;1999年为17亿美元;预测到2004年将达到90.3亿美元,年增长率为39.7%,远远高于软件业的平均增长水平。

    五、流行中间件产品介绍

      IBM MQSeries是IBM的消息处理中间件。MQSeries提供一个具有工业标准、安全、可靠的消息传输系统。
      它的功能是控制和管理一个集成的系统,使得组成这个系统的多个分支应用(模块)之间通过传递消息完成整个工作流程。MQSeries基本由一个信息传输系统和一个应用程序接口组成,其资源是消息和队列。
      MQSeries的关键功能之一是确保信息可靠传输,即使在网络通信不可靠或出现异常时也能保证信息的传输。MQSeries的异步消息处理技术能够保证当网络或者通信应用程序本身处于“忙 "状态或发生故障时,系统之间的信息不会丢失,也不会阻塞。
      TongLINK/Q是面向消息的中间件。TongLINK/Q的主要功能是在不同的网络协议、不同的操作系统和不同的应用程序之间提供可靠的消息传送
      * 高效、可靠、灵活的传输功能
      通过预建连接、多路复用、流量控制、压缩传输、断点重传、传输优先级管理、服务(类)驱动等机制来保证实现。
      * 事件代理机制
      事件代理机制提供了一种异步应用开发模型,用户只需要定义一个事件及怎么处理,TongLINK/Q自动完成操作。利用事件代理机制,可以实现事件订阅与发布,实现策略管理。
      * 会话管理
      TongLINK/Q通过一个简单的会话标识来描述一种复杂的通信关系,实现了更高层次、更抽象的通信服务。
      * 良好的易用性和可管理性
      TongLINK/Q实现了实时监控和管理,提供了日志机制、动态配置、远程管理功能。并提供多层次安全管理,支持多种开发工具。
      BEA TUXEDO是目前最成功的中间件产品,它有以下特点:
      * 高速数据甬道机制,减少客户机与主机和数据库的联接,降低整个系统的负担
      * 提供名字服务和数据依赖路由机制,提高系统设计的灵活性
      * 提供7种客户机/服务器通讯方式,使应用开发灵活方便
      * 提供多个层面的系统负载均衡机制,能最有效地运用系统资源
      * 提供服务优先级机制,区分服务的不同级别,使重要服务得到最快的响应
      * 提供网络通讯压缩和加密机制,使通讯性能和安全性大大提高
      * 提供动态伸缩机制,方便应用系统的扩充和维护
      * 提供故障恢复等机制,保证应用的高可用性
      * 提供多个层面的安全机制,保证应用的安全性
      * 支持XA协议,保证涉及多场地、异构数据源交易和数据的一致性
      * 提供多个层面的应用管理机制,使应用管理方便容易
      * 提供网络调度功能,实现网络资源的充分利用并支持通讯失败的自动恢复
      * 与其他多种系统互联,保护用户投资
      * 支持异构系统数据格式的透明转换,方便系统扩展
      * 支持包括声音、图象在内的多种数据类型,不同编程语言数据格式的区别由TUXEDO自动转换(如C和COBOL),其中FML类型更支持网上只传输有效数据和可改变的多种数据类型组合等功能
      * 提供域的划分与管理功能,使超大规模应用成为可能
      * 提供DES(Data Entry System)功能,支持字符界面的开发
      * 支持国际化,可用中文显示诊断和系统消息
    展开全文
  • J2EE与中间件技术

    千次阅读 2015-04-25 10:24:31
    J2EE的四层模型描述 J2EE规范 一个多层次的分布式应用模型和一系列开发技术规范 简化和加速企业级应用开发 J2EE Blue Prints 是一组集成的企业API库软件和开发工具 参考实现 快速原型化J2EE应用 ...

    Web应用工作方式

    内容在发送到浏览器之前由Web站点动态生成
    基于浏览器/服务器模式(B/S)
    浏览器
    Microsoft Internet Explorer, Netscape Navigator, Safari
    服务器

    • Web Server

    如MS IIS/IBM Http Server/Apache

    • Web Application Server

    如 IBM WebSphere Application Server

    访问Internet的基本机制

    客户通过指定URL地址,向位于特定位置的计算机提交文件访问请求
    存储请求文件的计算机称为服务器
    服务器为向其发起文件服务请求的任何客户提供服务
    服务器必须一直运行

    Web应用结构组成

    Web服务器
    是安装在Web服务器计算机上的一个软件包
    负责接收用户请求并响应之
    HTTP
    基于请求/应答模式
    是一个支持web浏览器与Web应用之间通信的应用层协议
    无状态、面向对象

    HTTP会话处理

    当用户在浏览器地址栏输入URL时
    客户浏览器建立到服务器的TCP/IP连接
    浏览器向服务器发送服务请求
    服务器发送应答信息给客户
    服务器关闭连接
    注意

    请求页面发送给客户后,服务器通常主动关闭连接,而不管该客户是否会继续向该服务器发送服务请求

    工业界对Web应用的关注

    Web技术变得越来越重要,Web应用成为未来的标准应用模式
    在客户端,IE占有主流地位
    在服务器端,J2EE和.NET成为两个主流且相互竞争的Web服务器架构技术

    企业级应用开发面临的问题

    面向Web环境
    分布式、可移植、可装配
    旧系统集成支持
    满足企业计算要求

    • 一致性
    • 事务性
    • 安全性

    要有好的特性

    • 可伸缩
    • 可扩展
    • 易维护

    “企业”是指一个为了实现某个共同目的而在一起工作的人或实体的组织
    这些组织的形式和大小并不限定,有大有小、是盈利性的或非营利性的、可能是政府机关也可能是非政府机构
    一般使用术语“企业”时,极有可能指的就是大型营利性组织,如Intel、GE、Wal-Mart、摩根银行或eBay等等
    企业通常都有一些共同的需求,例如信息共享与处理、资产管理与跟踪、资源规划、客户机用户管理、商业机密保护等等
    术语“企业软件”就是能够支持企业共同需求的这类软件的总称

    企业软件与中间件
    在软件开发过程中,出现面向对象开发软件的方法后,可以实现代码重用,但只能部分实现,原因之一是对象都细粒度化,造成对象间紧密耦合状态,从而使得大范围的重用变得很困难
    解决途径——设计软件组件
    与对象不同,软件组件是在更高的抽象级别中设计的,可以提供一个完整的功能或服务
    组件间的耦合更为松散。利用组件的接口,可以将组件迅速组合在一起构建更大的应用程序,这样所用的成本也比较合算

    J2EE的优势

    提供一套完整的解决所有这些问题的框架方案
    提供分布式、可移植组件的框架
    为组件与应用服务器提供标准API
    简化服务器端中间层组件的设计
    对开发者及用户而言
    更短的开发时间
    可重用组件
    JSP(Java Server Pages)
    EJB(Enterprise JavaBeans)
    更简化的连接
    XML,JDBC,RMI-IIOP

    客户/服务器结构

    “胖”客户端
    用户界面和程序逻辑绑在一起,代码难以重用
    服务器的数据库必须同每一个活动的客户保持连接,消耗大量的运算资源,随着客户数目的增加性能不断下降,且存在死锁及崩溃的可能
    数据模型“紧耦合”在每一客户端,数据库结构改变将导致全体客户端改变,不利于更新和维护
    客户端应用程序越来越大,对使用者的要求越来越高

    浏览器/服务器模式

    WWW浏览方式带来的变化
    “Browser-based” 的客户端与 “Internetworking”(网际互连)
    计算方式向服务器端的集中转化
    客户端
    业务数据模型与UI分开,更“瘦”
    业务逻辑在中间层
    通过连接池,多线程可以处理多客户端
    早期应用编程困难且性能比较差
    CGI(C/C++, VB, Perl等等),ISAPI ,NSAPI

    N层计算模式

    从逻辑角度看,系统分成客户端、Web服务器、应用服务器、数据库服务器四层
    从物理角度看,应用服务器可以视用户并发数从1到N台进行扩充,以保证客户端用户的响应要求

    每一层可以被单独改变,而无需其它层的改变
    降低部署与维护的开销,提高灵活性、可伸缩性
    引入“瘦客户端”,计算被集中至服务器端,使性能提高成为可能

    J2EE的三层结构部件视图

    这里写图片描述

    N层计算模型特征分析

    优点
    应用程序各部分松耦合,各部分的更新相互独立
    业务逻辑集中放在服务器上由所有用户共享,使得系统的维护和更新变得简单,也更安全
    弱化客户端,计算被集中至服务器端,使性能提高成为可能
    数据库不再和每一个活动的用户保持一个连接,而是由应用程序组件负责与数据库打交道,降低数据库服务器的负担,提高了性能
    缺点
    对企业级应用开发人员要求太高:需熟悉分布式协议(IIOP、IIOPS、HTTP、HTTPS、ISAPI、NSAPI),进行一致性事务处理,负载平衡,考虑安全性……

    J2EE的四层模型描述

    J2EE规范
    一个多层次的分布式应用模型和一系列开发技术规范
    简化和加速企业级应用开发
    J2EE Blue Prints
    是一组集成的企业API库软件和开发工具
    参考实现
    快速原型化J2EE应用
    提供对J2EE平台的操作定义
    兼容性测试组件
    测试J2EE平台产品是否与J2EE规范兼容
    WebSphere Application Server 5.0与J2EE 1.3兼容
    WebSphere Application Server 6.0与J2EE 1.4兼容

    客户层(Client Tier)
    通常是一台桌面计算机,客户可以使用GUI与应用程序进行交互
    中间层(Middle Tier)
    由表示层和业务层组成
    通常由一个或者多个Web服务器和应用服务器组成
    应用服务器处理客户的请求,执行复杂的表示形式和业务逻辑,然后将结果返回给客户层
    企业信息系统层(Enterprise Information System,EIS)
    也称为数据层
    是驻留业务数据的地方,在处理业务逻辑时,由中间层访问EIS层

    J2EE应用程序构成

    J2EE技术提供了一个基于组件的方法来设计、开发、装配和部署企业级应用程序
    一个J2EE应用程序可能包含一个或多个EJB组件、Web组件,或应用程序客户端组件
    组件(component)是一个应用程序级的软件单元
    J2EE组件
    客户端组件
    客户端应用程序和Applet
    服务器端Web组件
    Java Servlet和JSP
    服务器端的商业组件
    Enterprise JavaBeans

    Web客户端 vs. Applet

    Web客户端
    瘦客户
    包括Web组件生成的动态页面及服务器返回的页面
    Applet
    用Java编写的小的客户端程序,嵌入在Web浏览器
    两者比较
    易用性
    Web表现方式丰富、形式多样; Applet交互性强
    性能
    Web页面更新需要经过servlet从服务器获取;Applet直接访问数据库,可保留静态数据,提高了效率
    可维护性和可扩展性
    Web易于定制界面;Swing技术开发Applet较为复杂
    安全性
    Applet需要配置访问策略来控制对本地资源的访问;而Web可通过HTTP来控制
    

    J2EE容器

    运行在服务器上的软件实体,为J2EE组件提供执行环境
    通过容器,J2EE体系结构能在开发和部署间提供无关性,并在不同类型中间层服务器间提供可移植性
    依赖于容器的类型,还可访问一些或全部J2EE API
    每个Web组件、EJB或者应用程序客户端组件都必须在执行前被装配到一个J2EE应用程序中,并部署到相应容器

    设置并定制由J2EE服务器提供的底层支持
    J2EE安全模型:配置Web组件或Enterprise Bean,支持授权访问
    J2EE事务管理:让用户指定组成一个事务中所有方法之间的关系,并将这些方法看成一个整体
    JNDI寻址服务:为企业内的多重名字和目录服务提供一个统一的接口,以便访问名字和目录服务
    J2EE远程连接:管理客户端与EJB间的交互
    生存周期管理:管理EJB的创建/删除
    数据库连接池:提高数据库访问效率

    展开全文
  • 中间件技术发展概述

    千次阅读 2014-04-11 14:57:27
    中间件技术主要用来支撑分布式软件的开发,在大型分布式软件系统中中间件技术发挥着极其重要的作用。但是中间件技术也并不是一夜成名的,像任何其他技术一样它的发展也是经历了一个比较漫长的过程的,本文将带你走进...

    中间件技术主要用来支撑分布式软件的开发,在大型分布式软件系统中中间件技术发挥着极其重要的作用。但是中间件技术也并不是一夜成名的,像任何其他技术一样它的发展也是经历了一个比较漫长的过程的,本文将带你走进中间件技术的世界,让你了解中间件技术的发展过程,以及为什么要使用中间件?为什么会出现中间件集群?希望本文能够让你体会到中间件技术的魅力。

     

    1.      分布式软件的三层/多层结构:

    最早的分布式软件主要是基于两层结构的,所谓的两层结构指的是整个软件的系统架构只分为客户端和服务端(C/S)两层,在两层结构中,简单地将软件系统划分为服务器层和客户层,服务器层又称为数据层。在服务器层,一般放置一个数据库服务器,上面安装一个数据库管理系统,存放系统用到的持久数据。而客户层则实现系统的主要业务功能,实现时需要访问数据库中存放的数据,一般会有多个客户端同时访问数据库服务。这时的系统结构比较简单,就是多个客户端程序共享一个数据库。其结构图如下:

    两层结构下,客户程序直接访问数据库,并且用户界面代码和业务逻辑代码交织在一起,这些导致两层结构存在以下重要的缺陷:

    第一, 客户端的负担比较重。

    第二,  客户端的可移植性不好。

    第三,  系统的可维护性不好。

    第四,  数据的安全性不好。

     

    鉴于以上原因,人们提出了如下图所示的三层结构:

    三层结构中软件开发的主要工作量在中间层,中间层包括除用户界面代码与持久数据之外的几乎所有系统代码,是整个软件系统的核心。在三层结构中,客户层和数据层已被严格定义,但中间层并未明确定义。中间层可以包括所有与应用程序的界面和持久数据存储无关的处理。假定将中间层划分成许多服务程序是符合逻辑的,那么将每一主要服务都视为独立的层,则三层结构就成为了n 层结构。典型地,可将业务逻辑层分离出实现数据持久化操作的持久层,用于实现对于持久数据操作的封装,从而形成由客户层、业务逻辑层、持久层与数据层构成的四层结构。

     

    2.构件技术的出现。

    按照面向对象的观点,软件系统由若干对象组装而成,将这一观点延伸至分布式系统,分布式系统由若干分布式对象组装而成。面向对象的精髓之一在于对象维护自身的状态并通过消息进行通信,这对于分布式计算环境是非常理想的,但是分布式对象与传统对象相比,有其特殊的特性:

    第一、分布式系统由于其规模与分布特性等原因,比集中式系统更容易被拆分给不同的人或团队开发,这就很有可能遇到不同的人或团队习惯使用不同的程序设计语言和环境的情况。

    第二、,分布式系统要求分布式对象可以在任何粒度上透明的使用,也就是说,无需考虑位置与实现。传统的面向对象语言中的对象很难满足上面提到的要求。传统对象的关注点是封装和通过继承对实现进行重用,大大减轻了系统的维护工作。但是分布式系统要求分布式对象要有更好的可插入性,这个要求仅仅依靠传统面向对象的封装和继承是不可能满足的。首先,要求另一层次上的封装,只需暴露公用接口;其次,从重用的角度来讲,继承局限于程序设计语言,而分布式系统不太关注于直接重用代码,而是要求能够利用远程所实现的服务。这就是说,分布式系统中的分布式对象和传统的对象不一样,实际上是具有良好封装特性的软件构件。与对象相比,构件通常具有如下特性:

    (1)构件是一个严格定义的可插入单元:类似于硬件模块,一旦开发完成,就可以方便的用来组装系统。构件一般是基于对象实现的,但也可以不作为对象实现。

    (2)  构件将封装运用到了极限:构件通过封装来隐藏构件的实现以达到构件的实现语言的任意性以及物理位置的任意性。

    (3) 构件通常在容器中进行管理:按照上面的讨论,构件要屏蔽实现语言、实现方式等很多实现细节,使用一个构件时可以不关心具体实现和位置,但是这仅仅是指开发人员不需要去关心,真正去做这些工作的就是对象所在的容器。也就是说,我们所使用的、具备很好特性的构件实际上是容器和我们用各种语言、方式所编写的程序共同协作的结果。这就要求构件遵循所处的容器的规则,并按照标准的途径向容器发送事件。

    (4)  构件可以从容器中获得属性或服务。

    (5)  构件允许对所支持的接口进行动态发现和调用:客户程序可以在运行状态下确定一个构件支持何种功能,然后调用该功能。

     

    3.中间件技术的出现:

    尽管有了构件技术的支持,但是随着软件系统规模与复杂度的不断提高,软件开发过程中复杂度高、开发周期长、可靠性保证难等突出问题并没有得到根本缓解;而分布式软件面临更大的挑战,分布式软件所运行的网络环境具有明显的分布性、开放性、演化性、异构性、并发性等特征,因此分布式软件必须解决互操作、数据交换、分布性、可行性等一系列更复杂的问题。在解决这些问题的同时人们通过不断从应用软件中提取共性、降低高层复杂性,最终导致了中间件的产生。中间件是在操作系统(数据库管理系统)与应用系统之间的一层软件,通常为分布式应用的开发、部署、运行与管理提供支持。最常用的中间件大致有数据访问中间件,远程过程/方法调用中间件,消息中间件以及事务控制中间件等。随着中间件应用越来越广泛,又出现了一个新问题:中间件越来越多,开发时需要安装的支撑环境越来越复杂,开发人员不得不花费越来越多的时间安装与配置需要的各种中间件。因此自然地出现一种中间件集成的强烈需求,在中间件研究的基础上,人们开始考虑将各种中间件的功能集成在一起,现有中间件多以集成中间件的形式出现,集成中间件也称为应用服务器。这些应用服务器为分布式软件系统提供的基本支持与分布式软件所运行的网络环境密切相关,具体可归为提供构件运行环境、提供互操作机制与提供公共服务三个方面。

     

    (1)提供构件运行环境:

    现有中间件均提供构件化的基本支持,支持方便开发与使用符合特定规范的构件(分布式对象)。中间件一般通过构件容器为构提供基本的运行环境,具体功能一般包括管理构件的实例及其生命周期、管理构件的元信息等。

     

    (2)提供互操作机制。中间件系统使用以下集中高层通讯协议来实现系统之间的互操作功能:

    a.远程过程调用(Remote Procedure Call,RPC):RPC 是第一个得到广泛应用的高层通信协议,使用RPC,客户应用程序可像调用本地过程那样调用在远程计算机上执行的C 语言函数。由于是结构化的,因此目前已经基本被面向对象的通信协议取代。

    b.IIOP(Internet Inter-ORB Protocol):IIOP 是CORBA 中使用的一种通信协议,有了它,运行在不同平台上的两个对象可以很方便的进行交互。

    c.DCOM 通信协议:微软在RPC 基础上实现的分布式COM 构件间使用的通信协议。

    d.JRMP (Java Remote Messaging Protocol):特定于Java 语言,支持用Java 语言编写的对

    象之间进行远程交互(Java Remote Method Invocation, Java RMI)的通信协议。

    e.RMI/IIOP:Java 企业版中访问EJB 使用的通信协议,基于IIOP 实现。

     

    提供公共服务:

    1.事务服务(Transactions Service):提供支持事务处理的机制,以保证系统状态与数据

    的一致性与完整性,支持可靠的服务端计算。

    2.安全服务(Security Service):为系统提供在分布式环境下的安全机制,以防止未授权

    用户对系统的非法访问。

    3.命名服务(Naming Service):在分布式系统中,命名服务提供了一种定位分布式对象

    与其它系统资源的机制。

    4.持久性服务(Persistence Service):持久性服务使得分布式对象可以通过持久的数据存

    储来保存、更新和恢复他的状态。

    5.消息服务(Messaging Service):消息处理服务提供异步编程模式,异步模式在很多应

    用中都需要。

    6.分布式垃圾回收服务(Distributed Garbage CollectionService):当一个程序不再使用

    分布式对象时,分布式垃圾回收服务会自动释放分布式对象所占用的存储单元。

    7.资源管理服务(Resource Management Service):一般来说,资源管理器按照使可伸缩

    性最大化的方式来管理分布式对象,即支持大量的客户程序同分布式对象在短时间内进行交

    互的能力。

     

    现有的集成中间件典型地为三层/多层结构的分布式软件系统提供各种开发支撑,因为

    三层结构的分布式软件的核心为中间层,因此支撑主要集中在对中间层开发的支撑上。目前

    应用最广泛的集成中间件有三类:

     

    (1)基于 OMG(Object Management Group,对象管理组织)CORBA 规范的集成中间件。

    (2)基于 SunJEE(Java Enterprise Edition,Java 企业版)规范的集成中间件。

    (3)基于微软.NET架构的集成中间件。

    其中前两种所基于的规范均为工业标准,这两种标准得到了产业界众多厂商的广泛支持,因此可供选择的具体中间件产品较多,也是我们的关注点。第三种基于微软公司的私有技术,因此具体的中间件产品基本局限于微软公司的平台。就目前来看由于基于J2EE规范的集成中间件在项目中的使用更受欢迎,所以在后面的文章中我将重点介绍基于J2EE规范的中间件的开发。

     

     

     

    展开全文
  • 中间件技术简介

    2013-01-04 16:53:25
    什么是中间件  随着计算机技术的发展,IT厂商出于商业和技术利益的考虑,各自产品之间形成了差异,技术在不断进步,但差异却并没有因此减少。计算机用户出于历史原因和降低风险的考虑,必然也无法避免多厂商产品...

    什么是中间件

            随着计算机技术的发展,IT厂商出于商业和技术利益的考虑,各自产品之间形成了差异,技术在不断进步,但差异却并没有因此减少。计算机用户出于历史原因和降低风险的考虑,必然也无法避免多厂商产品并存的局面。于是,如何屏蔽不同厂商产品之间的差异,如何减少应用软件开发与工作的复杂性,就成为技术不断进步之后,人们不能不面对的现实问题。 显然,由一个厂商去统一众多产品之间的差异是不可能的,而单独由计算机用户在自己的应用软件中去弥补其中的大片空档,由于技术深度和技术广度的要求,必然也是勉为其难。于是,中间件应运而生。中间件试图通过屏蔽各种复杂的技术细节使技术问题简单化。在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,这些都是计算机最底层的东西,越底层越复杂,开发者不得不面临许多很棘手的问题:

    1.   一个应用系统可能跨越多种平台,如UNIX,NT,甚至大机,如何屏蔽这些平台之间的差异?

    2.   如何处理复杂多变的网络环境,如何在脆弱的网络环境上实现可靠的数据传送?

    3.   一笔交易可能会涉及多个数据库,如何保证数据的一致性和完整性?

    4.  如何同时支持成千上万乃至更多用户的并发服务请求?

    5.  如何提高系统的可靠性,实现故障自动恢复和故障迁移。保证系统7*24*52可用。

    6.   如何解决与已有应用系统的接口。

     这些与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。于是,有人提出能不能将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件这类的软件。

     

     中间件(middleware)现在是与操作系统,数据库并列的3大基础软件之一,顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。

    在众多关于中间件的定义中,比较普遍被接受的是IDC的定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

     IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。

    最早具有中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为第一个严格意义上的中间件产品。Tuxedo是1984年在当时属于AT&&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司收购。尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在最近10年之中。BEA公司1995年成立后收购Tuxedo才成为一个真正的中间件厂商,IBM的中间件MQSeries也是90年代的产品,其它许多中间件产品也都是最近几年才成熟起来。国内在中间件领域的起步阶段正是整个世界范围内中间件的初创时期。东方通科技早在1992年就开始中间件的研究与开发,1993年推出第一个产品TongLINK/Q。可以说,在中间件领域国内的起步时间并不比国外晚多少。


    中间件的作用:

    具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

    中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。Standish的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。

    其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发展之后,我们以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。

    中间件的分类:

    中间件技术已经日渐成熟,并且出现了不同层次、不同类型的中间件产品。大致可分为以下几类:

     

    消息中间件(Message Orient middleware: MOM)

    将数据从一个应用程序发送到另一个应用程序,这就是消息中间件的主要功能。    它要负责建立网络通信的通道,进行数据的可靠传送。保证数据不重发,不丢失,消息中间件的一个重要作用是可以实现跨平台操作,为不同操作系统上的应用软件集成提供数据传送服务。它适用于进行非实时的数据交换,如银行间结算数据的传送.主要的产品有:IBMMQSeries BEA MessageQ BEA Tuxedo /Q  MicroSoft MSMQ 东方通科技tonglink/q。

     

    交易中间件(Transaction Processing: TP)

    交易中间件也和消息中间件一样具有跨平台,跨网络的能力,但它的主要功能是管理分布于不同计算机上的数据的一致性,协调数据库处理分布式事务,保障整个系统的性能和可靠性。交易中间件所遵循的主要标准是x/open dtp模型。它适用于联机交易处理系统,如银行的ATM系统,电信的计费营收系统.主要产品有:BEA TUXEDO, IBM CICS,东方通科技tongeasy

     

    对象中间件(Object Momitor)  

    对象中间件也叫ObjectTP Momitor,它一般也具有交易中间件的功能,但它是按面向对象的模式来组织体系结构的,在线的电子交易很适合采用这种中间件类型.因为这种类型的应用会被频繁的修改,面向对象的体系结构可以保持足够的弹性来应付这种改动.提到面向对象的中间件,就不得不提到对象请求代理(Object Request Brokers:ORBs),现在有3种对象请求代理体系结构

    ,CORBA,EJB,COM+,ORBs是一组协议或是标准,现在的对象中间件都是按照上面三种体系结构的某一种来构造的.如: Borland VisiBroker,MicroSoftTransaction Server,IONA orbix,IBM componentbroker,东方通科技tongbroker

     

    应用服务器(Application Server)

    应用服务器主要用来构造基于WEB的应用,是企业实施电子商务的基础平台。它一般是基于J2EE体系结构。让网络应用的开发、部署、管理变得更加容易。使开发人员专注于业务逻辑。主要的产品有BEA weblogic IBMwebspere,Borland AppServer等,还有一些开放源代码的J2EE应用服务器,如JBOSS等.

     

    企业级应用集成(Enterprise Application Intergration : EAI)

    一个大型企业内部往往有很多的计算机应用系统,EAI可用于对这些系统进行有效的整合。使它们之间能够互相访问,实现互操作。EAI所提供的上层开发工具或许是EAI和其他中间件最大的区别,它允许用户自定义商业逻辑和自动使数据对象符合这些规则.EAI的典型用户是那些巨型企业的大量应用系统的整合,主要的产品有BEA ELINK, BEA WLI等.

     

    安全中间件(Security Middlewares)

    近几年,随着互联网的发展,信息安全越来越受到普遍关注,安全中间件也应运而生。

    安全中间件是以公钥基础设施(PKI)为核心的、建立在一系列相关国际安全标准之上的一个开放式应用开发平台,向上为应用系统提供开发接口,向下提供统一的密码算法接口及各种ic卡、安全芯片等设备的驱动接口。主要产品有:ENTRUST entrus,东方通科技tongsec等。

     

    上面对中间件的分类描述并不是一个很严格的定义,只是一个大致的划分,中间件是一个快速发展的技术,市场越来越大,除了上面提大的大型厂商提供的通用产品,还有很多小公司专注于专有的领域,为客户提供面向某一领域,更加符合客户需求的中间件产品.如: 清华北美的THMT,JAVATS,青牛公司的CT-USE等。

     

    使用中间件带来的好处

    世界著名的咨询机构Standish Group在一份研究报告中归纳了中间件的十大优越性:

    1.  缩短投放市场所需时间-时间因素绝对是所有项目的首要问题。自行建立软件基础结构耗时长,使用现成的基础结构软件则可以将软件开发时间缩短 25%-50%。如果应用系统每月可带来100万美元的利润或节省100 万美元的开销,那么软件开发时间缩短的每一个月就相当于在银行存入100 万美元。

    2.  节省应用开发费用-Standish组织调查100 个关键任务应用系统,对其编码中的业务/应用部分的代码量和基础结构部分的代码量进行评估。结果表明:只有少于30% 的代码与应用/业务有关,而其余部分均归属于基础结构!如果使用现成的基础结构,费用可节省25%-60%。对于一个200万美元的项目而言,这意味着将节省50万-120万美元。

    3.  减少系统运行开销-一个不采用商用中间件产品部署的系统,其初期购买及运行费用将加倍。许多大企业由于采用中间件产品而在硬件及软件方面节省了大量的投资。一个 200 万美元的项目因此将只需花费100 万,而其中还包括了中间件的投资。

    4.  降低失败率-Standish市场组织对项目失败的定义为项目被取消或没有完成预期的预算、交付使用时间以及业务要求等目标。调查表明自行开发中间件的项目失败率高达 90% 以上,可见这种做法是十分危险 的。其结果可能由100%推翻重来,以至于1000%超出预算。

    5.  提高投资效率-采用中间件产品既能保护现有投资,又能提高投资效率。通过使用中间件产品,用户可以建立专有系统以外的应用程序,不但扩展了主机应用,而且还能将主机应用与整体系统实现无缝连接。许多企业发现其在两层客户机 / 服务器结构下建立的新 的应用系统并不能在 Internet上运行,而已被淘汰的应用程序则更适合 Internet。采用中间件技术可以恢复被 Internet淘汰 的应用程序的生命,该费用将大大低于应用程序重新开发的费用。这笔费用通常会在数十万美元到数亿美元之间。

    6.  简化应用集成-使用中间件产品,现有应用程序、新开发应用程序以及所有其他购买软件均能实现无缝集成。从而能够从开发、投放市场时间两方面节约数百万美元的开支。

    7.  降低软件维护费用-自行开发基础结构成本很高,维护时则更会变本加厉。对于自行开发的基础结构,其年维护费可达开发费用的15%-25%;而应用程序的维护费则达到开发费用的10%-20%。以一个200 万美元的项目为例,其中120万用于基础结构建立,其年维护费为18万-28万美元。而购买现成的中间件仅需项目总成本的15%-20%,依购买规模和供应商的不同还有可能大大低于该价格。

    8.  高质量-在自行建立中间件的应用系统中,每次将新的应用组件加入系统时,相应的新的中间件模块被加入到当前的中间件之上。在一 个实际的应用系统中, Standish集团发现其使用了17000 个应用接口。而商用中间件产品则具有清晰的接口层次,从而大大降低新系统及原有系统的维护成本。此外,由于商用中间件支持数百万的交易吞吐量,其质量远远高于用户自行开发的中间件产品。

    9.  保证技术革新-除了需对自行建立的中间件进行维护,还需对其进行技术革新,而这似乎不太现实。而从第三方购买的中间件产品则会随着其所属公司对其进一步的投资不端得到增强。采用具有层次接口设计的中间件产品,将能节省时间和费用。

    10. 增强应用程序吸引力-由于中间件提供了一个灵活的平台,许多新功能、新特性均可以在应用系统中得以建立。

     

    中间件的市场前景

    据IDC预测:到2002年全球中间件市场销售额将达到80亿美元;建立在中间件基础上的通用组件销售额也会增加至70亿美元。在中国,1998年中间件市场总值达12.34亿美元; 1999年为17亿美元; 到2004年将达到90.3亿美元,年增长率为39.7%,远远高于软件业的平均增长水平。


    展开全文
  • 移动中间件技术简介

    千次阅读 2011-09-20 00:32:08
    移动中间件技术是伴随着网络技术、通信技术、嵌入式操作系统和中间件技术的发展和融合而出现的新兴技术,是当前移动数据业务、未来3G业务以及广大智能终端增值业务的关键共性技术。移动中间件为使包括计算机、笔记本...
  • RabbitMQ消息中间件技术精讲全集

    千次阅读 2019-09-10 12:35:41
    RabbitMQ消息中间件技术精讲 导航:RabbitMQ消息中间件技术精讲一. 主流消息中间件介绍1.1 ActiveMQ1.2 Kafka1.3 RocketMQ1.4 RabbitMQ二. RabbitMQ核心概念及AMQP协议 一. 主流消息中间件介绍 1.1 ActiveMQ ...
  • 中间件技术及其应用

    千次阅读 2009-12-09 12:38:00
    中间件技术及其应用 作者:谷和启 来源:51CMM 一、概述1、中间件的概念 随着计算机技术的飞速发展,各种各样的应用软件需要在各种平台之
  • 中间件技术概述

    2009-05-13 23:04:00
    人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,...
  • 中间件技术介绍整理

    千次阅读 2016-03-02 09:49:53
    中间件=平台+通信 主要分类 中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层次上,对中间件的分类...
  • MQ消息中间件技术浅析

    千次阅读 2017-05-24 14:41:38
    AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 AMQP在...
  • MQ消息中间件技术

    千次阅读 2016-08-08 20:01:42
    AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 ...
  • 第一章中间件产生背景与分布式环境 1. 中间件的定义:中间件是一种软件,处于系统软件(操作系统网络软件)与应用软件之间,它能使应用软件之间进行跨网络的协同工作(也就是互操作),这时允许各应用软件之下所...
  • 那么,为什么不考虑在数据应用领域也采用中间件技术呢? 数据计算中间件 为什么提出数据计算中间件这个概念?因为在开发数据应用的过程,大家通常都会被以下的问题所困扰。 - 需要跨系统跨平台操作,从...
  • 中间件技术的概念与分类  一、为什么要中间件  计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用...
  • 为什么要中间件 计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需在网络...
  • 一、为什么要中间件  计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需...
  • 中间件技术现状及发展 1 市场 在全球范围内, Internet的蓬勃发展和网络计算的需求剧增,使中间件(middleware)正在成为软件行业新的技术与经济增长点。IBM、BEA、Oracle、Inprise(原Borland)、Microsoft及Sun...
  • 开源MQ消息中间件技术-AQMP

    千次阅读 2017-05-16 20:50:07
    AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 ...
  • 点评主流中间件技术平台

    千次阅读 2008-01-30 15:42:00
    于是集软件复用、分布式对象计算、企业级应用开发等技术为一体的"基于中间件的软件开发"(CBSD,Component Based Sortware Development)应运而生,这种技术以软件架构为组装蓝图,以可复用软件构件为组装模块,支持组装...
  • 使用消息中间件是企业应用中降低模块间耦合的重要方式,开源和商用的消息中间件产品也很多,这些产品都遵循一种或多种消息中间件技术标准。在消息中间件领域有两类技术标准: 1、面向接口的消息服务标准:这类标准...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,975
精华内容 20,390
关键字:

中间件技术描述