个人理解,早期WEB项目采用MVC架构,全靠一台服务器扛起来的,随着互联发发展,服务器压力越来越大,分布式框架被大量的运用在B2C等项目中,比如面相服务的SOA架构,所采用的方式就是将各个业务系统拆分开来,独自承担压力,这样的架构就保证了项目的高可用。那么问题也随之而来,各个服务间如何进行通信,使用点对点的方式后期发现调用易造成混乱,所以可以采用这个面相服务治理的中间件Dubbo。嘿嘿,那么中间件到底是干嘛的其实根据上面来说能够稍微知道一点,其实就好像上面大家说的,中间件跟业务无关,仅仅在做各个服务中连接问题,好像一个路由器一样,将所有的子系统统一管理,从dubbo的核心RPC和NIO也能看出来,主要还是在负责服务间连接通信。还有就是它要去使用还需要依赖一个注册中心,官方推荐Zookeeper,我的理解就是dubbo负责连接(就是用自己的方案来获取provider和customer的url)集中交给zookeeper注册中间统一管理。这样我们在调用服务的时候,只需要通过中间件,就可以完成。这样做的好处就是可以让我们不论是前端和后端人员,可以在大型的分布式系统中专注于自身业务即可
作者:(知乎)哈里亮
链接
下面是oracle官方的解释:
由于业务、机构和技术是不断变化的,因此为其服务的软件系统必须适应这样的变化。在合并、添加服务或扩展可用服务之后,公司可能无力负担重新创建信息系统所需的成本。正是在这个关键时刻,才需要集成新组件或者尽可能高效地扩展现有组件。要集成异类组件,最方便的方法不是将它们重新创建为同类元素,而是提供一个允许它们进行通信(不考虑它们之间的差异)的层。该层被称作中间件,它允许独立开发且运行于不同网络平台上的软件组件(应用程序、Enterprise Java Bean、Servlet 和其他组件)彼此交互。当能够进行这样的交互时,网络才成为计算机。
原文地址:原文链接
自己概括一下:中间件就是对服务组件之间进行相互关联和通信的非业务性的组件。
"网络服务"(Web Service)的本质,就是通过网络调用其他网站的资源。
网络服务是相对于本地服务来说的,本机完成本机需要完成的任务,叫“本地服务”,而“网络服务”则是通过网络来调用其他服务器提供的服务。
webService和中间件的关系:webService是一种技术手段,是一种网络中系统之间进行交互的方式。而中间件则是实现这种交互的一种手段(一种软件、服务)。
定义:WebService是一种跨编程语言和跨操作系统平台的远程调用技术(rpc)。
实现平台无关性和语言无关性的关键是用一种标准来统一定义相互通信的接口,而WebService平台技术就是旨在解决统一标准的问题。
引用:Web service是什么?
WebService平台技术
XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。
SOAP和WSDL的详细格式和解析可见:SOAP和WSDL的一些必要知识 or 备用地址
XML和XSD: WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。
XML是WebService平台中表示数据的格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。
XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,64位?这些细节对实现互操作性很重要。
XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web?service时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。
xsd就是基于xml,自己定义了一套标签,用来对webService中的数据表示格式进一步规范。
SOAP: WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。SOAP协议 = HTTP协议 + XML
数据格式SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。
soap基于xml和http,在http的请求头中加入属性用以标记请求内容格式是soap类型的,并且用soap也是和xsd一样,基于xml的基础上自己定义一套标签,来规范webService请求的一系列参数。
WSDL: 好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。
WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web?Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web?service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。
WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。
WSDL也是在xml的基础上进行扩展,它是用来描述webservice的,描述了WebService有哪些方法、参数类型、访问路径等等。
UDDI: UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。也即一种远程服务发布与注册的标准。
原文:https://www.cnblogs.com/iisme/p/10752226.html