最近这段时间正在学习中间件的内容,从这篇文章开始我们开始学习中间件的相关内容。
在学习中间件知识之前我们先了解下软件开发技术的发展,从软件开发技术的一步步发展中慢慢的衍生出了中间件的技术,现在我们开始依次介绍软件开发技术的发展。
1.基于主机的系统
基于主机的系统最开始的时候是只有硬件和程序组成的,这时候的程序还没有分操作系统和应用程序,经过长时间的发展,人们慢慢的发现程序中有稳定的成分那就是计算资源管理这部分,人们根据程序的稳定成分也可以说是共性成分,这部分共性成分也就是操作系统,人们从程序中产生了操作系统同时分离出了应用程序。
2.两层的Client/Server系统
在基于主机系统最后已经进化为硬件、操作系统和应用程序了这时已经是两层CS系统了的初始状态了,两层的CS系统经过发展,人们从应用程序中发现了程序共性的成分也就是数据管理,在这种情况下,人们从应用程序中产生了数据库管理系统同时分离出了应用软件。
3.三层(n层)体系架构
两层的CS系统最后发展成了硬件、操作系统、数据库管理系统和应用程序,这时已经是n层体系结构的初始状态了,人们从应用软件中发现程序的共性成分那就是网络资源管理,在这种情况下,人们从应用软件中产生了应用服务器中间件同时分离出了业务逻辑(构件)。
这时系统的n层体系结构,主要是分为硬件、操作系统、数据库管理系统、应用服务器(中间件)、业务逻辑(构件)、web表示层。
应该说,中间件技术是伴随网络而发展起来的一种面向对象的技术。以前的计算机系统多是单机系统,多个用户是通过联机终端来访问的,没有网络的概念。网络出现后,产生了Client/Server的计算服务模式,多个客户端可以共享数据库服务器和打印服务器等等。随着网络的更进一步发展,许多软件需要在不同厂家的网络产品、硬件平台、网络协议异构环境下运行,应用的规模也从局域网发展到广域网。在这种情况下,Client/Server模式的局限性也就暴露出来了,于是中间件应运而生。中间件是位于操作系统和应用软件之间的通用服务,它的主要作用是用来屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使应用软件能够比较平滑地运行于不同平台上。同时中间件在负载平衡、连接管理和调度方面起了很大的作用,使企业级应用的性能得到大幅提升,满足了关键业务的需求。所以将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术的思想最终构成了中间件这类软件。
中间件处于操作系统软件与用户的应用软件的中间。我们使用用中间件的原因主要有四个原因:易用性、性能、数据完整性、控制;
易用性也就是说利用中间件我们可以用来屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使应用软件能够平滑的运行于不同平台上。
性能上中间件负载平衡、连接管理和调度方面起了很大的作用,使企业级应用的性能得到大幅提升,满足率关键业务的需求。
数据完整性指利用中间件传输数据,数据不容易丢失和重复,数据格式也不容易被破坏。
控制就是在中间件操作系统与应用系统之间的一层软件,为分布式应用的开发、部署、运行与管理提供支持,对于分布式系统需求提供的服务:远程方法调用、事务、负载平衡、故障恢复、安全等等都可以做的很好。
中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用就是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件也就是为分布式应用的开发、部署、运行与管理提供支持。
中间件是基础软件的一类,处于操作系统(或网络协议)与分布式应用之间,从而屏蔽操作系统(或网络协议)的差异,实现分布式异构系统之间的互操作。
目前,对中间件还没有形成一个统一的定义,比较公认的IDC的定义是:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
中间件应该具备两个关键特征:首先要为上层的应用层服务,这是一个基本条件;此外,又必须连接到操作系统的层面,并却保持运行工作状态,具备了这样两个特征才能称为中间件。
我们对中间件的概念进行进一步的介绍,
中间件是一类软件,而非一种软件
中间件不仅仅实现互连,还要实现应用之间的互操作
中间件是基于分布式处理的软件,最突出的特点是其网络通信功能
中间件是位于平台(硬件和操作系统)和应用之间的通用服务,即中间件=平台+通信
中间件是一个用API定义的分布式软件管理框架,具有强大的通信能力和良好的可扩展性。客户端上的应用程序需要从网络中的某个地方获取一定的数据或服务,这些数据或服务可能处于一个运行着和客户端不同的操作系统服务器中。客户/服务器应用程序中负责寻找数据的部分只需通过调用中间件的API访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而传输客户请求、重组答复信息,最后将结果送回应用程序的任务。
关于中间件的知识这篇文章就介绍到这里,下篇文章我们将对中间件的具体分类知识的学习。