精华内容
下载资源
问答
  • 不会还有人不知道中间件吧?

    千次阅读 2020-10-13 10:25:02
    不会还有人不知道中间件吧?引言一. 中间件是什么?二. 中间件能干?2.1 中间件在应用开发中担任的角色三. 中间件特点四. 中间件的分类 引言 中间件(middleware)一词每天都被不同的人群所提及,中间件的产品也...

    常用中间件

    引言

    中间件(middleware)一词每天都被不同的人群所提及,中间件的产品也大量出现在软件市场,但中间件的定义却一直比较模糊,导致中间件的分类也不很统一。也许正因为如此,才使人们不断地设计和开发新的产品,并冠以中间件的标签,推动着中间件的内涵和市场不断地向前发展。

    相信大家看这篇文章的初心就是单纯想了解一下 中间件是啥?能干啥?我为什么要学它?公司中为啥要有做中间件的程序员?我平时学的dubbo等 属于中间件的什么类型?中间件有分类吗?这个答案在网络上一直没有一个准确的回答,这篇文章带你了解 中间件
    推荐一个Process on上的总结中间件很好的大佬

    一. 中间件是什么?

    应用中间件(Application Middleware),又名中间件,一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。

    中间件是为应用提供通用服务和功能的软件。数据管理、应用服务、消息传递、身份验证和 API 管理通常都要通过中间件。

    中间件可以帮助开发人员更有效地构建应用。它就如同是应用、数据与用户之间的纽带

    对于具有多云和容器化环境的企业而言,中间件可以助您大规模、经济高效地开发和运行应用

    二. 中间件能干啥?

    中间件的作用简单来说就是试图通过屏蔽各种复杂的技术细节使技术问题简单化。

      1. 中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。所以说中间件带给应用系统的,不只是开发的简便、开发周期的缩短,同时也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。
      1. 中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发的应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。

    2.1 中间件在应用开发中担任的角色

    经过精心设计,现代业务应用可以在本地或跨云端大规模运行。为了构建这些应用,开发人员需要一种具备统一基础功能的应用环境。中间件正是打造这种环境的关键。

    我们可以将这些功能分为四层,外加相应的工具:

    容器层

    中间件的这一层将以统一的方式管理应用生命周期的交付。它提供带有 CI/CD 的 DevOps 能力、容器管理功能以及服务网格功能。

    运行时层

    该层包含了自定义代码的执行环境。中间件可以为高度分布式云环境(例如微服务)、内存中缓存(用于快速访问数据)和消息传递(用于快速数据传输)提供轻量级运行时和框架。

    集成层

    集成中间件可提供相关服务,以通过消息传递、集成和 API 来连接自定义与购买的应用及 SaaS 资产,从而形成功能正常的系统。此外,它还可以提供内存数据库和数据缓存服务、数据/事件流以及 API 管理功能。

    流程自动化和决策管理层

    这是开发中间件的最后一层,旨在强化关键智能,实现优化和自动化,以及加强决策管理。

    工具

    除了上述四层中间件之外,还有相应的应用开发工具。它允许团队使用预设的模板和容器来构建应用,并促进了有效的代码共享和联合开发。这些工具可在本地和云端提供连贯一致的应用开发和交付体验。

    三. 中间件特点

    1. 应用支撑

    中间件的最终目的是解决上层应用系统的问题,而且也是软件技术发展到今天对应用软件提供最完善彻底的解决方案。现代面向服务的中间件在4个方面形成了很高地应用支撑能力,分别为软件的结构、模型、开发方法以及互操作,而要最终解决软件的灵活应变问题、效率问题、质量问题、互操作问题这四大问题,需要在软件技术的内在结构、架构层面进行思考。

    1. 耦合关系

    中间件基于SOA架构,在松耦和解耦过程中演变成了境界。而传统软件将软件之中核心三部分数据转换、网络连接和业务逻辑所有的都耦合在一个整体,产生为铁板一块的软件,然后动一点而动全身,这样的软件就很难适应市场的需求。而分布式对象技术可以分离连接逻辑,消息中间件异步处理连接逻辑,形成了很大的灵活性。中间件分离分布式对象与消息代理的数据转换。SOA架构以服务的封装,解耦实现了业务逻辑、数据转换与网络连接等。

    1. 互操作性

    传统中间件在软件的互操作方面,通过标准化的API完成了同类系统之间的调用互操作,但是连接互操作离不开原有的特定的访问协议,比如CORBA用于的IIOP,JAVA用于的RMI等。而SOA以支持Internet、标准化及操作系统无关的SOAP协议完成了连接互操作。并且服务的封装一般使用XML协议,它有自定义及自解析的特性,因此基于SOA的中间件能够完成语义互操作。

    1. 软件复用

    软件复用也称为软件的重用,是指在一定范围内不修改或者略有修改都属于重复使用。其实说白了其意思就是不断提升抽象级别,然后扩展复用的范围。最早使用的复用技术一般是子程序,自从发明子程序之后,人们就可以在不同系统之间进行软件复用。但子程序只是最原始的复用,因为这种复用范围只是在一个可执行程序内中的复用,静态开发期的复用,一旦子程序被修改,那么就需要重新对所有调用这个子程序的程序进行编译、测试以及发布。

    1. 平台化

    我们所说的平台是指能够独立运行并且自主存在的,能支撑上层系统和应用提供运行所依赖的环境。显然,不是所有的系统或者应用都可以称之为平台的。中间件是一个平台,因此中间件是必须独立存在,它在操作的系统软件,为上层的网络应用系统提供一个运行支撑环境,同时围绕标准的接口与API来隔离系统,完成其独立,也就是平台性。总的来说,中间件在完整业务复用、灵活业务组织方面的发展趋势集中体现在服务化,其核心技术是提升IT基础设施的业务敏捷性。中间件因此将成为SOA的主要实现平台。

    四. 中间件的分类

    从广义上讲,中间件涵盖了从 Web 服务器,到身份验证系统,再到消息传递工具等一切内容。以下是现代化开发中一些常见的中间件用例。
    红帽官网的这几张图完美解决了这个疑惑:

    F0D56454-48E1-4B45-9427-9F3184F9B51D.jpeg
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    看到这里应该就可以解决大家的大多数问题了,下面就是在百度百科上找的分类,我个人感觉写的大同小异!!!

    目前,针对不同的应用涌现出各具特色的中间件产品。从不同的角度和层次对中间件有不同的分类。根据中间件在系统中所起的作用和采用的技术不同,可以把中间件大致划分为以下几种:

    1. 数据访问中间件(Data Access Middieware)

    在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型、复合文档型、具有各种存放格式的多媒体型,或者是经过加密或压缩存放的,数据访问中间件是在这种系统中建立数据应用资源互操作的模式,实现异构环境下的数据库联接或文件系统联接的中间件,从而为在网络上虚拟缓冲存取、格式转换、解压等带来方便。数据访问中间件在所有的中间件中是应用最广泛、技术最成熟的一种。一个最典型的例子就是ODBC,ODBC是一种基于数据库的中间件标准,它允许应用程序和本地或者异地的数据库进行通信,并提供了一系列的应用程序接口API,当然,在多数情况下这些API都是隐藏在开发工具中,不被程序员直接使用。不过在数据访问中间件处理模型中,数据库是信息存贮的核心单元,中间件完成通信的功能,这种方式虽然是灵活的,但是并不适合于一些要求高性能处理的场合,因为它需要大量的数据通信,而且当网络发生故障时,系统将不能正常工作。

    1. 远程过程调用中间件(RPC)

    远程过程调用是另外一种形式的中间件,它在客户/服务器计算方面,比数据库中间件又迈进了一步。通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程。它的工作方式如下:当一个应用程序A需要与远程的另一个应用程序B交换信息或要求B提供协助时,A在本地产生一个请求,通过通讯链路通知B接收信息或提供相应的服务,B完成相关处理后将信息或结果返回给A。RPC的灵活特性使得它有比数据库中间件更广泛的应用,它可以应用在更复杂的客户/服务器计算环境中。远程过程调用的灵活性还体现在它的跨平台性方面,它不仅可以调用远端的子程序,而且这种调用是可以跨不同操作系统平台的,而程序员在编程时并不需要考虑这些细节。RPC也有一些缺点,主要是因为RPC一般用于应用程序之间的通信,而且采用的是同步通信方式,因此对于比较小型的简单应用还是比较适合的,因为这些应用通常不要求异步通信方式。但是对于一些大型的应用,这种方式就不是很适合了,因为此时程序员需要考虑网络或者系统故障,处理并发操作、缓冲、流量控制以及进程同步等一系列复杂问题。

    1. 面向消息中间件(MOM)

    消息中间件能在不同平台之间通信,实现分布式系统中可靠的、高效的、实时的跨平台数据传输,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同;其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。另外消息中间件不会占用大量的网络带宽,可以跟踪事务,并且通过将事务存储到磁盘上实现网络故障时系统的恢复。当然和远程过程调用相比,消息中间件不支持程序控制的传递。消息中间件适用于需要在多个进程之间进行可靠的数据传送的分布式环境。它是中间件中唯一不可缺少的,也是销售额最大的中间件产品,目前在Windows2000操作系统中已包含了其部分功能。

    1. 面向对象的中间件

    面向对象的中间件(Object Oriented Middieware)。当前开发大型应用软件通常采用基于组件技术,在分布系统中,还需要集成各节点上的不同系统平台上的组件或新老版本的组件;组件的含义通常指的是一组对象的集成,其种类有数百万种,但这些组件面临着缺乏标准而不能相互操作,各厂家的组件只能在各自的平台上运行。为此,连接这些组件环境的面向对象的中间件便应运而生。面向对象的中间件是对象技术和分布式计算发展的产物,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。在这些面向对象的中间件中,功能最强的是CORBA,可以跨任意平台,但是太庞大;JavaBeans较灵活简单,很适合于作浏览器,但运行效率差;DCOM模型主要适合Windows平台,已广泛使用。但是DCOM和CORBA这两种标准相互竞争,而且两者之间有很大的区别,这在一定程度上阻碍了面向对象中间件的标准化进程。当前国内新建系统实际上主要是UNIX(包括LINUX)和Windows,因此针对这两个平台建立标准的面向对象中间件是很有必要的。

    1. 事务处理中间件(TPM)

    事务处理中间件是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;它是针对复杂环境下分布式应用的速度和可靠性要求而实现的。它给程序员提供了一个事务处理的API,程序员可以使用这个程序接口编写高速而且可靠的分布式应用程序——基于事务处理的应用程序。事务处理中间件向用户提供一系列的服务,如应用管理、管理控制、已经应用于程序间的消息传递等。常见的功能包括全局事务协调、事务的分布式两段提交(准备阶段和完成阶段)、资源管理器支持、故障恢复、高可靠性、网络负载平衡等等。

    1. 网络中间件

    它包括网管、接入、网络测试、虚拟社区、虚拟缓冲等,也是当前研究的热点。
    终端仿真/屏幕转换中间件
    它的作用在于实现客户机图形用户接口与已有的字符接口方式的服务器应用程序之间的互操作。

    以上就是关于中间件的全部内容,欢迎大家关注我!!!

    展开全文
  • 中间件

    千次阅读 2016-04-06 22:49:48
    一、究竟啥是中间件?网络上竟然找不到一个确切的定义。总结起来,中间件是一种独立的软件,位于两个或多个系统之间,起联结通信、数据处理作用。(在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件...

    有时会听到“中间件”这个词,不懂,隐约地觉得很高大上。我直觉那是个跟小型机、UNIX/LINUX、JAVA等牵扯在一起的东东。

    一、究竟啥是中间件?

    网络上竟然找不到一个确切的定义。总结起来,中间件是一种独立的软件,位于两个或多个系统之间,起联结通信、数据处理作用。(在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

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

    二、中间件有以下特征或优点:
    1、独立性。
    中间件独立存在。是运行时刻的系统软件,为上层的网络应用系统提供一个运行环境,并通过标准的接口和API来隔离其支撑的系统,实现独立性。

    例如j2ee应用服务器,提供JAVA应用的运行环境,是经典的中间件。

    2、应用支撑
    中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。

    3、复用
    这个好理解。

    4、松耦合
    利于整个系统结构逻辑分离,解耦。

    5、互操作性
    中间件通过标准化API和接口,实现了不同系统(同类或异构)之间的调用互操作。
    这里写图片描述

    三、中间件与SOA的关系
    基于中间件的定义和作用,让人觉得它很像SOA。那么二者是啥关系?

    SOA与中间件的关系最为紧密,可以理解为鱼与水的关系。这种关系包括两层意思:一是说采用中间件产品可以很好的构建SOA的应用;再就是采用中间件产品开发出来的应用,将很容易被整合进SOA架构。

    据说,中间件将成为SOA的主要实现平台。

    参考文章:
    未来中间件 操作系统 数据库走向融合

    中间件与SOA的关系

    展开全文
  • 什么是中间件中间件是什么意思? 经常听人提起“中间件”这个名词,什么是中间件中间件是什么意思呢?中间件是指的架构吗? 中间件应该是支撑大型网站架构的一些基础的组件和服务,因为这些组件/服务介于应用与...

    什么是中间件,中间件是什么意思?

    经常听人提起“中间件”这个名词,什么是中间件,中间件是什么意思?中间件是指的架构吗?

    中间件应该是支撑大型网站架构的一些基础的组件和服务,因为这些组件/服务介于应用与应用,以及应用与底层数据库之间,所以被称为中间件了吧

    中间件(Middleware)通常是指在一个大型分布式的系统中,负责各个不同组件(Component)/服务(Service)之间管理以及交互数据的。举个例子,在分布式系统中,数据库往往是N多个,不同的数据库可能是按照数据ID的hash,也可能根据业务模块来分配的。而且这种分配可能随着数据增长或者业务变更而改变。这个时候,你想修改某条数据,显然就不太可能直接访问数据库了,而是需要访问数据访问层,由它来负责对最终的数据库的读写,乃至负责多个数据库之间的事务一致性。

    展开全文
  • 中间件工作的同学是干的? 开源中间件有哪些? 中间件领域包括哪些知识点?
  • 中间件 Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。 我们可以...

    中间件

    Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。

    我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。

    1 中间件的定义方法
    定义一个中间件工厂函数,然后返回一个可以被调用的中间件。

    中间件工厂函数需要接收一个可以调用的get_response对象。

    返回的中间件也是一个可以被调用的对象,并且像视图一样需要接收一个request对象参数,返回一个response对象。

    def simple_middleware(get_response):
        # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次。
    
    def middleware(request):
        # 此处编写的代码会在每个请求处理视图前被调用。
    
        response = get_response(request)
    
        # 此处编写的代码会在每个请求处理视图之后被调用。
    
        return response
    
    return middleware
    

    例如,在users应用中新建一个middleware.py文件,

    def my_middleware(get_response):
        print('init 被调用')
        def middleware(request):
            print('before request 被调用')
            response = get_response(request)
            print('after response 被调用')
            return response
        return middleware
    

    定义好中间件后,需要在settings.py 文件中添加注册中间件

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'users.middleware.my_middleware',  # 添加中间件
    ]
    

    定义一个视图进行测试

    def demo_view(request):
        print('view 视图被调用')
        return HttpResponse('OK')
    

    执行结果

    在这里插入图片描述注意:Django运行在调试模式下,中间件init部分有可能被调用两次。
    2 执行流程
    在这里插入图片描述3 多个中间件的执行顺序

    • 在请求视图被处理前,中间件由上至下依次执行
    • 在请求视图被处理后,中间件由下至上依次执行
      在这里插入图片描述示例:

    定义两个中间件

    def my_middleware(get_response):
        print('init 被调用')
        def middleware(request):
            print('before request 被调用')
            response = get_response(request)
            print('after response 被调用')
            return response
        return middleware
    
    def my_middleware2(get_response):
        print('init2 被调用')
        def middleware(request):
            print('before request 2 被调用')
            response = get_response(request)
            print('after response 2 被调用')
            return response
        return middleware
    

    注册添加两个中间件

    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'users.middleware.my_middleware',  # 添加
        'users.middleware.my_middleware2',  # 添加
    ]
    

    执行结果

    init2 被调用
    init 被调用
    before request 被调用
    before request 2 被调用
    view 视图被调用
    after response 2 被调用
    after response 被调用
    
    展开全文
  • 中间件是什么,常用的中间件有哪些

    万次阅读 多人点赞 2020-11-16 20:42:09
    一、中间件是什么? 中间件(英语:Middleware)顾名思义是系统软件和用户应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,是一种独立的系统软件或服务程序,分布式...
  • 什么是中间件

    多人点赞 热门讨论 2021-05-25 23:24:48
    一、百度百科 中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所...从这个意义上可以用一个等式来表示中间件中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件
  • 什么是中间件

    千次阅读 2018-03-14 11:58:37
    初次接触到中间件这个词是去年一次天猫的一面时,当面试官问到研究过那些开源框架和中间件时,一句:中间件?让自己尴尬了,面试官接着说:就是类似WebLogic 、Tomcat、Jboss、等等一些开发时你用到的一些技术。...
  • 究竟什么是中间件

    千次阅读 2015-09-23 00:04:09
    中间件
  • 中间件是什么

    2007-09-07 09:48:00
    中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。 中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用...
  • 中间件是什么?

    千次阅读 2014-07-16 23:11:23
    以前做过关于中间件的开发,但是一直不知道中间件的具体概念是什么?这里转了 中间件的起源
  • 使用了中间件之后,以前直接连接的前台应用程序和数据库之前就多了个中间件,现在前台程序把请求发给中间件中间件再把请求发给数据库,数据库处理结束之后把结果返回到中间件中间件再把结果送回给前台。...
  • 什么是中间件中间件的作用,怎么使用中间件及应用场景 如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。 可能你还想在view执行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 343,889
精华内容 137,555
关键字:

中间件是啥