中间件.docx_第1页
中间件.docx_第2页
中间件.docx_第3页
中间件.docx_第4页
中间件.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中间件发展动因:初始状态:硬件(ENIAC?ABC!)分离出了程序(汇编)初始状态:硬件 + 程序程序的共性(稳定)成分: 计算资源管理产生了:操作系统(FMS)分离出了:应用程序初始状态:硬件 + 操作系统 + 应用程序程序的共性(稳定)成分:数据管理产生了:数据库管理系统(IMS)分离出了:应用软件初始状态:硬件 + 操作系统 + 数据库管理系统 +应用软件程序的共性(稳定)成分:网络资源管理产生了:中间件(应用服务器)分离出了:业务逻辑(构件)操作系统、数据库管理系统、中间件的类比 :操作系统 数据库管理系统 中间件 产生动因硬件过于复杂 数据操作过于复杂 网络环境过于复杂 主要作用管理各种资源 组织各类数据 支持不同的交互模式 主要理论基础 各种调度算法 各种数据模型 各种协议、接口定义方式 产品形态 不同的操作系统功能类似 不同的数据库管理系统功能类似,但类型比操作系统多 存在大量不同种类中间件产品,它们的功能差别较大 定义:中间件(middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。历史:n 中间件概念最早起源于二十世纪八十年代n 中间件的流行始于二十世纪九十年代n 中间件的流行归由于分布式系统的发展n 中间件更多的是要解决分布式环境中遇到的问题n 中间件的早期概念与“网络操作系统”、“分布式操作系统”、“分布式计算环境”有关。几个重要的里程碑n CICS 诞生于70Sn RPC 诞生于1982n TUXEDO诞生于1984n DTP模型诞生于1990sn 分布式数据库1980sn OMG 成立于1989年n MOMA成立于1993年n J2EE1.0规范诞生于1999 n 应用服务器诞生于1998年CICSCICS :Customer Information Control System 1968 - Package developed by Michigan Bell and IBM on OS/3601971 - CICS available for DOS & DOSE1973 - Development moved to Hursley, England1987 - CICS/VM introduced1992 - CICS/400 version for AS/4001996 - CICS Web Interface Product2003 - TXSeries TuxedoTansaction for UniX Extended for Distributed Operations Pre-1983:Research,TUX,bell lab1984:Release 1.0 1986:Release 2.0 HA1987:Release 3.0 TUXEDO1993:Release 4.2 acquire by Novell1996:Release 6.1 acquire by BEA2003:Release 8.0 RPCEarliest papers on RPC 1975Xeror Courrier RPC was released 1981 XNS SPP transprot + 16bit Xeror NS USED BY Novell NetwareFirst RPC from Sun in 1985(using sockets) UDP/TCP based transport + XDR Synchronous and asynchronous RPC(callbacks) Most prominent application Suns NFSHP DCE RPC in 1989Sun Doors in 1993CORBACorba 1.0 Oct.1991Dec.1993Corba 2.0-2.3 Aug.1996Jun.1999Corba 2.6 Dec.2001 Corba 3.0 Aug.2002J2EEMay 23 1995javaJan 23 1996JDK 1.01996Servlet、JavaBeans 1997JDK1.1Apr 2 1997EJBJun 29 1999J2SE、J2EE、J2MEDec 1999J2EE Platform Releasen 我国最早的消息中间件1993 TongLINK1.01993.6 TongLINK2.01994 TongLINK/Q3.01998 TongLINK/Q4.02000 TongLINK/Q5.02003n 我国最早的交易中间件1994 TongEASY1.01994 TongEASY2.01996 TongEASY3.01998 TongEASY4.02000 TongEASY5.22003n 我国最早的应用服务器TongWeb TongWeb1.02000 TongWeb3.02003n 我国最早的EAI中间件TongIntergrator TongIntergrator1.02002n 我国最早的中间件厂商1998 TongTech n CCID 开始统计我国中间件市场2000年n 我国中间件获得的最高荣誉国家科技进步奖2002主要用途:应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。这一切都对新一代的软件开发提出了新的需求。在这种分布异构环境中,通常存在多种硬件系统平台(如PC,工作站,小型机等),在这些硬件平台上又存在各种各样的系统软件(如不同的操作系统、数据库、语言编译器等),以及多种风格各异的用户界面,这些硬件系统平台还可能采用不同的网络协议和网络体系结构连接。如何把这些系统集成起来并开发新的应用是一个非常现实而困难的问题。 中间件可以满足大量应用的需要运行于多种硬件和OS平台支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互支持标准的协议支持标准的接口。由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。主要功能:在不同的角度或不同的层次上,对中间件的理解也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称之为平台。基于目的和实现机制的不同,实现的功能有如下分类: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),对象请求代理(ObjectRequestBroker)是这个模型的核心组件。它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。CORBA规范包括了ORB的所有标准接口。1991年推出的CORBA1.1定义了接口描述语言OMGIDL和支持Client/Server对象在具体的ORB上进行互操作的API。CORBA2.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、事务处理监控事务处理监控(Transactionprocessingmonitors)最早出现在大型机上,为其提供支持大规模事务处理的可靠运行环境。随着分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控界于client和server之间,进行事务管理与协调、负载平衡、失败恢复等,以提高系统的整体性能。它可以被看作是事务处理应用程序的“操作系统”。总体上来说,事务处理监控有以下功能:进程管理,包括启动server进程、为其分配任务、监控其执行并对负载进行平衡。事务管理,即保证在其监控下的事务处理的原子性、一致性、独立性和持久性。通讯管理,为client和server之间提供了多种通讯机制,包括请求响应、会话、排队、订阅发布和广播等。事务处理监控能够为大量的client提供服务,如果server为每一个client都分配其所需要的资源的话,那server将不堪重负。但实际上,在同一时刻并不是所有的client都需要请求服务,而一旦某个client请求了服务,它希望得到快速的响应。事务处理监控在操作系统之上提供一组服务,对client请求进行管理并为其分配相应的服务进程,使server在有限的系统资源下能够高效地为大规模的客户提供服务。特点:满足大量应用的需要运行于多种硬件和OS平台支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互支持标准的协议支持标准的接口由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。分类: 按照IDC(Internet数据中心)的分类方法,中间件分为: 远程过程调用中间件 分布式对象中间件 数据库访问中间件 事务处理中间件 消息中间件远程过程调用中间件: 本地过程调用的扩展,可透明地调用远地提供的服务 数据表示、可靠传递、服务定位等 分布式计算环境,DCE分布式对象中间件: 简单地说,对象中间件就是用面向对象技术实现的、支持面向对象开发和集成应用的中间件。 对象技术的封装、继承及多态性提供了良好的代码重用功能,并且对象的对外透明性也符合中间件技术的要求。 面向对象的中间件技术基本思想是提供一种统一的接口使对象之间的调用和数据共享不再关心对象的位置、实现语言及所驻留的软硬件系统。 OMG组织的CORBA、Microsoft的COM/DCOM、SUN的J2EE等 数据库访问中间件:连接应用程序和数据库的软件,允许通过单一的、定义良好的接口访问网络中来自不同厂商的数据库产品事务处理中间件: 专门针对联机交易处理系统而设计 分布式事务涉及到多个数据库,且允许这些数据库异构,如在不同的银行间进行资金转账。 分布式事务需要处理大量并发进程,涉及到操作系统、文件系统、编程语言、数据通讯、数据库系统、系统管理及应用软件,是一个相当艰巨的任务. 通过事务处理中间件简化应用开发。由它来负责处理联机交易过程中分布式交易的完整性、并发控制、负载均衡以及出错恢复等。消息中间件: 应用间通过传递消息来进行协作,是一种异步通信模式 主要功能是在不同的网络协议、不同的操作系统和不同的应用程序之间提供可靠的和可恢复的(若发生意外)消息传送。这时应用并不需要消息即时即刻传递到达对方。 客户端将消息放入队列,服务器端在方便的时候取出处理,如果需要,将结果放到传送给客户端的队列。作用: 缩短开发周期 节约应用程序开发成本 降低运行成本 降低故障率 改善决策 应用系统群集/集成 减少软件维护 提高质量 改进技术 提高产品吸引力中间件的新发展平台概念:平台=中间件 + 应用构件 + 专业服务基于目的和实现机制的不同,我们将平台分为以下主要几类:远程过程调用(Remote Procedure Call)-分布式计算环境(DCE)的基础标准成分之一,提供了Client(调用程序)和Server(被调用过程)间的同步数据交换.面向消息的中间件(Message-Oriented Middleware)-构造分布式应用的松耦合方法,最大的特点心异步。对象请求代理(Object Request Brokers)-基于CORBA的面向对象工业标准与事务处理(TP)监控技术的组合,在CORBA规范中定义了:使用面向对象技术和方法的体系结构;公共的Client/Server程序设计接口;多平台间传输和翻译数据的指导方针;开发分布式应用接口的语言(IDL)等,并为构造分布的Client/Server应用提供了广泛及一致的模式.中间件产品:l 任何规范都必须有对应产品的支持才会有影响力l 目前的中间件产品种类繁多,且对规范的实现也有很大的差距: 有的产品仅实现某个特定的规范,象早期的事务中间件、消息中间件产品 有的产品主要实现某个架构中系列规范的部分内容,这是多数中间件产品的现状,因为全部实现系列规范的代价较大,也不必要 有些产品实现多个架构系列规范的部分内容。例如许多实现 J2EE 规范的应用服务器也同时支持 SOA 中的一些访问方式l 早期的中间件市场中事务中间件与消息中间件占的份额最大l 近年来随着 Web应用 的逐渐普及l 支持Web服务和应用的各种应用服务器慢慢蚕食事务中间件和消息中间件的部分市场l 目前应用服务器中间件的占有量已经居于各类中间件的首位l 消息中间件和事务中间件分别居第二,三名l 在银行,电信、证券等许多l 对对效率、可靠性等方面要求严格的关键任务系统中l 消息中间件及事务中间件,仍然将占有重要的地位1、应用服务器根据开发组织的背景,可以将现有的应用服务器产品进行如下划分: 中间件厂商开发的产品例如:BEA公司开发的WebLogic IONA公司开发的iPortal ApplicationServer等 数据库厂商开发的产品例如:Oracle公司开发的 Oracle 9i Application Server等 操作系统厂商开发的产品例如:IBM公司开发的Websphere SUN开发的SUN ONE Application Server开发工具厂商开发的产品例如:Inprise公司开发的Borland Application Server等 其它大量由独立开发组织完成的产品例如:JBOSS组织开发的Jboss OpenEJB组织开发的OpenEjb Ironflare AB开发的Orion Macromedia开发的JRUN 等等 国内在应用服务器的研究与开发上也取得了显著的进展国家863计划支持了若干与应用服务器密切相关的项目北京大学自行开发的PKUAS在支持在线演化、支持多互操作协议等方面具有明显特色金蝶公司发布了Apusic 东方通公司发布了TongWeb 等等 在应用服务器的市场占有量来看,IBM,BEA,Oracle长期处于前3位据Gartner报告,2006年IBM占有31.8%的份额,BEA名列第二,占有10.5%的份额; Oracle占8.6%,名列第三紧随其后的是开源的应用服务器JBoss,Jonas国产中间件产品中,金蝶、东方通、普元等厂商的产品用户认知度有明显的提升IBM 的WebSphere应用服务器l 一个完善的、开放的Web应用服务器l IBM e-business应用架构的核心l WebSphere 应用服务器 提供三个等级的版本 标准版(Standard Edition), 高级版(Advanced Edition),开始支持EJB的编程模型 企业版(Enterprise Edition)。提供一个高可靠的解决方案,使其能够移植到关键性的企业环境l WebSphere是IBM整个一套开发,应用服务器的套件l 把EJB和IBM其它的优秀的产品(TXSerise 和Component Broker)结合在了一起l 在具体的应用中,基于安全的 考虑,性能考虑和系统管理考虑,还可以增加Firewall,WebShpere Performance Pack 和 TivoliBEA 的Weblogicl BEA通过为BEA WebLogic Server 5.1提供一个附加的软件包,实现了对EJB2.0的支持l 凭借BEA WebLogic Server对EJB2.0的支持,BEA可帮助开发人员更快地推出电子商务应用系统,从而让开发人员极大地受益于这一业内最新标准l 作为服务器端商务逻辑的行业标准和Java2平台的基石,Enterprirse JavaBeans是BEA WebLogic应用服务器的主要技术l Enterprise JavaBeans使得开发人员能够专心地开发其应用系统和电子商务设想的商务逻辑,而不必为基础结构的构筑而分心l 凭借对EJB2.0 的支持,BEA WebLogic应用服务器系列可提供事实上的标准基础构架,帮助用户快速开发和部署下一代电子商务和企业应用系统。电子商务中最著名的A所采用的就是BEA的WebLogic Oracle 公司的应用服务器l 最初的产品是Oracle Application Serverl 2008年初,Oracle 收购了 BEA,合并后推出Oracle WebLogic Server 10g R3 支持Java S E 6,具有新的安全标准,包括SAML 2.0, WS-Security 1.1及 WS-SecurityPolicy 1.2 在Web services JAX-WS 2.1、WS-Reliable Messaging 1.1 及WS-Policy 1.5中支持Java EE 5 为Spring的拓展提供支持,Spring开发者将体验Oracle WebLogic更强大、更稳定、易管理的性能 新的HTTP发布/订阅通信特性提供了更具客户化的性能,支持动态更新的Web 2.0风格的用户界面JBOSS组织的 JBoss 应用服务器l JBossAS是一个运行EJB的J2EE应用服务器,是JBoss组织的核心产品l JBOSS AS是一个开源项目,遵循最新的J2EE规范l 从JBoss项目开始至今,它已经从一个EJB容器发 展成为一个基于的J2EE的一个web 操作系统(operating system for web)l 体现了J2EE规范中最新的技术,在JavaWorld Editors Choice 2002评选中获得“最佳Java应用服务器”奖l 无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台l 2006年4月 redhat收购了JBoss ObjectWeb 的 Jonasl 一个纯Java,开放源代码(LGPL授权)的应用服务器l 2006年北京大学自主开发的PKUAS与 ObectWeb的JOnAS对等合并为 JO2nAS2、消息中间件l 典型的消息中间件产品有 IBM 的MQSeries SUN 的JMS (Java Message Service) 微软的MSMQ (Microsoft Message Queue Server)IBM Web Sphere MQl 集成跨平台:跨平台,跨企业,跨应用,确保应用间的信息顺畅沟通l 异步性:在同步通信不能实现情况下,WebSphere MQ支持异步传输信息l 有保障的传递:防止数据丢失,确保数据万无一失l 可扩展性:随着企业信息系统对信息传输要求的不断改变,WebSphere MQ具有良好的扩展l 与FTP相比,FTP需要人工手动操作,WebSphere MQ实现了全自动传输; WebSphere MQ支持断点续传;WebSphere MQ比FTP安全性更高据统计,WebSphere MQ目前在全球已经占据了85%的市场份额,是事实的业界标准Sun Java Message Servicel 采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的企业级应用程序,而把开发人力解放出来l Java消息服务支持两种消息模型:Point-to-Point消息(P2P)和发布订阅消息(Publish Subscribe messaging,简称Pub/Sub) P2P消息模型是在点对点之间传递消息时使用。如果应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。与Pub/Sub消息模型不同,P2P消息总是能够被传送到指定的位置 Pub/Sub模型在一到多的消息广播时使用。如果一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型微软的MSMQl 为Windows平台上的应用软件提供了比较全面的消息队列功能 例如可靠、弹性消息传送,基于成本(cost)的消息路由, 等等,并与事务服务可以很好地协作 MSMQ 还通过MSMQ-MQSeries Bridge提供了与IBM MQSeries 等其它消息中间件产品的无缝集成3、事务中间件l 典型的事务中间件产品有: IBM 的 CICS(Customer Information Control System) BEA 的Tuxedo(Transaction for UNIX has been Extended for Distributed Operation) 微软的MTS (Microsoft Transaction Server) IBM 的 CICSl 一系列为 IBM 和非 IBM 平台上的应用提供联机事务处理和事务管理的产品,功能是为商业应用提供一个事务处理环境l CICS 建立在操作系统、 ISO的 DCE 和 Encina 服务上,它帮助客户建立三层次结构的联机事务处理应用l CICS 为应用程序开发、通信、恢复、显示、数据管理、安全性和内部通信等提供很多项服务l CICS 可以与 DCE 紧密结合,以满足分布式环境对于安全性,名字服务等的特殊需求l CICS 的结构设计也是面向事务处理的,CICS 构建的是一个三层次结构的应用系统,CICS 有效地区分应用系统中的表述逻辑层、业务逻辑层和数据逻辑层,从而使应用系统结构清晰,维护简单易行l 在IBM的全系列计算机系统中均有相应的 CICS 产品,如OS/390、MVS/ESA、VSE/ESA、OS/400、OS/2,并扩展到其它厂商的系统中,如HP、DEC、SUN等等BEA 的 Tuxedol 最早具有中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为第一个严格意义上的中间件 产品l Tuxedo是1984年在当时属于AT&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的 成功,Tuxedo在很长一段时期里只是实验室产品l 后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司 收购l TUXEDO是在企业、Internet 这样的分布式运算环境

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论