分享

中间件技术现状及发展

 xos 2008-06-23
中间件技术现状及发展

1         市场

在全球范围内, Internet的蓬勃发展和网络计算的需求剧增,使中间件(middleware)正在成为软件行业新的技术与经济增长点。IBMBEAOracleInprise(原Borland)、MicrosoftSun等国外厂商早已涉足其中,而国内研究与推广中间件产品的公司也日渐增多。业内人士提出,应该将中间件作为发展自主版权基础软件的突破口。根据Forrester Research估计,仅仅是B to B电子商务,到2003年的年收入就将达到1.3万亿美元,而基于Internet的电子商务业务将有79%建筑在中间件的基础之上。无疑这将带来一个潜力巨大的市场。

1.1     国际市场

根据国际数据公司(IDC)预测,1997-2002年,增长率最高的中间件将集中在消息中间件、交易中间件、对象中间件、应用服务器中间件、数据访问中间件5种(统计数据见下表)。
IDC的市场调查分析
中间件类型
1997年销售额
(
亿美元)
2002年销售额(亿美元)
年平均增长率
亚太市场销售额(亿美元)
消息中间件
3.6
24.5
46%
3.6
交易中间件
3.5
16.5
36%
2.6
对象中间件
1.4
7
34%
0.56
数据访问中间件
6.1
16.5
23%
-
应用服务器*
-
40
-
-
安全中间件
1.227
3
-
-
由此可见,消息中间件是近几年中间件产品销售的热点Standish 组织[IEEE-1]2001 年的CIO 调查显示,在新建或是改造战略性应用程序中有47%的计划使用交易中间件,27%使用消息中间件。消息中间件适用于任何需要进行网络通信的系统,可以跨平台操作,为不同操作系统上的应用软件集成提供方便,满足企业内部对系统伸缩性和可扩展性的要求。 根据X/OPEN组织定义的分布式交易处理参考模型建立的交易中间件,适用于联机交易处理系统,管理分布于不同计算机上的数据的一致性,保障系统处理能力的均衡负载。如果也把交易中间件看成是一类特殊的消息中间件的话,那么,消息中间件在目前的市场上占据主导地位。作为此类中间件主要有IBMMQSeriesBEATuxedo
随着面向对象的应用系统的逐渐增长,对象中间件的需求也在逐年加大。对象技术的优势和对象中间件的标准化,促使对象中间件的功能将最终涵盖其它几类中间件的功能而成为中间件产品的主流。各大硬软件厂商都在积极参与有关标准的制定和产品开发工作,如IBMHPDECAT&&TICLMicrosoftBorland等。许多对象中间件的专门厂商也相继诞生,目前Iona在全球面向对象中间件市场份额为22.3 %,居第一位。此外,还有BEA的产品M3BorlandVisiBroker

1.2     国内市场

1999年软件市场构成为[IEEE-2]:应用软件62.6%,支撑软件25.4%,系统软件11.9%。2000年软件市场的分类方法上略有改变,分为平台软件、中间软件和应用软件,其市场情况为:平台软件市场为73.8亿元,中间软件市场为9.2亿元,应用软件市场为147亿元。
虽然国内中间件市场刚刚启步,但随着分布式应用系统逐步完成由两层结构模式向三层结构模式的转变以及互联网和电子商务的迅猛发展,我国中间件软件行业将很快进入迅速成长阶段。近两年国内部分公司在中间件技术上取得突破,东方通科技、东软、北大青鸟、金蝶、托普等软件公司纷纷向中间件领域进军。比较成功的有东方通科技的消息中间件TongLINK/Q 、交易中间件TongEASY、分布对象中间件TongBroker,中科院软件所的网络通信中间件ISMQ、分布对象中间件ISBroker等。
 

2         应用需求

2.1     应用集成和Internet计算

应用集成是推动中间件技术的原动力,企业级应用集成是中间件的主要市场所在。现有的中间件技术和集成解决方案(包括CORBAJ2EEDCOM/COM+及时下十分火热的WebService等)已成功地运用在不同领域、不同规模的应用中。但是,现在分布应用呈现的发展趋势是:企业应用不再具有明显的边界,规模迅速扩大;集成的依托平台从较规则的Intranet拓展到无结构的Internet;集成粒度从单机细粒度成发展成为分布应用的再集成;集成范围从单个企业内部的资源整合发展成为多个企业之间的协同合作。企业级应用面临的新的挑战是:
n         各企业采用的服务器技术不同、服务器提供商不同
n         各企业数据存储模式、信息交互模式不同
n         各企业管理策略不同,彼此存在着相互信任问题
n         WEB环境下访问量的不可预计需要高可伸缩性、高可用性的服务器系统
n         Internet环境需要灵活有效的安全控制和QoS保障
n         企业间的业务合作需要完善的工作流控制
n         分布应用的复杂性需要对分布资源和环境实施有效地管理
n         传统的C/S结构并不适合所有应用模式
n         充分保护已有投资
社会信息化需要打破企业间的信息界限,实现多种服务器技术的互操作、企业间数据充分共享和安全交换、工作流程控制、非集中的管理模式。未来的中间件技术应以松散的结构支持多种模式交互,以标准通用的格式支持数据无边界流动,面向特定领域为端用户提供充分的资源控制;面向复杂的internet环境提供灵活的负载平衡、容错恢复机制。

2.2     服务质量

QoS是一个十分广泛的概念,在很多领域都有对QoS的研究,例如端用户对服务质量的要求、中间件对服务质量的支持,操作系统对服务质量的支持,通信网络对服务质量的支持等。
随着中间件向一些应用领域的扩展(如实时领域),一些新型的QoS敏感的应用(如远程医疗、电视会议、大规模交互式仿真)不断涌现。它们对QoS有方面的需求,如带宽、延迟、抖动,但传统的中间件提供的best-effort能力已经不能这些满足应用的需求,需要在中间件中提供对应的QoS机制以满足应用的需求。此外,对于使用付费服务的客户来说,QoS分级控制与他们的切身利益直接相关,也是他们所关心的。
应用需要QoS中间件一般要具有如下功能[IEEE-3]
l         向应用程序提供一种高级编程范形,使应用程序能够指定QoS要求
l         向应用程序提供QoS协商和QoS控制机制
l         能够操作于开放动态的环境之中,能够适应环境的动态变化(也即具有自适应性)
l         具有一般性和灵活性,能够支持许多(将来的)系统相关的QoS机制,从而支持多维QoS
l         具有QoS监控功能
l         具有QoS管理功能,提供服务质量的中间件应当能够对自己提供的QoS进行管理,能够向高层提供中间件层目前的QoS能力。

2.3     移动设备接入[4]

随着无线互联技术趋于实用,移动设备和其它手持式数字设备成为分布应用的一个不可忽视的平台。无线通信协议(如WAP标准)使得便携式电脑、PDA、手机、车载信息设备有条件摆脱线缆的束缚而提供anywhere &anytime的信息访问能力。但无线设备面对的是一个不均衡、不稳定的网络,不同位置网络带宽相差很大,网络拓扑结构处于不断变化之中,无线设备使用电池也常常使设备从网络连接上断开而成为不可达的结点。因此,适用于无线设备的中间件需要提供机制侦测网络状况的变化,并跟据新的通信条件和服务质量要求重新配置组件。此外,对于某些位置敏感的移动应用,需要中间件提供环境信息来指导应用行为,这与传统中间件的“位置透明”原则是相背的。
 

3         研发热点

3.1     松散藕合的服务器技术

企业应用集成和Internet应用的发展需要不同服务器技术的互操作。目前的研发热点是微软提出、并得到IBMSUN等数家大公司支持合作的WebService,及基于SOAP的服务器互联技术。

3.1.1    技术概述

WebService是一种Internet上松散藕合的软组件技术,它利用十分成熟的WEB技术和XML格式的消息编码,使得服务的远程访问可以突破防火墙和应用服务器的限制,实现广域网范围内的分布计算。它的主要技术特征包括:
l         使用XML描述消息交互
l         使用SOAP协议将静态Web改造成为一个分布计算平台;
l         WSDL进行服务描述
l         基于UDDI进行服务的发布和发现
在某个网络中分布应用程序逻辑并不是新概念,在Web中分布并集成应用程序才是一个新概念。WebService的价值在于提供了简单的服务器技术集成方案,而它可能带来的软件开发和软件销售的变革可能比技术本身更有意义。但是WebService并不是(至少目前尚不是)一套完整的服务器技术体系,实际上它仅规定了服务描述、发布和通信交互的规范,而对服务的具体实现手段没有限制,它自身也没有提供诸如安全、事务等企业应用特性。因此,WebService不可能脱离具体的服务器技术,Service的具体仍实现需要依赖CORBAJavaBeanCOM等手段。

3.1.2    产品开发

目前,各主要中间件公司(如IBMMicrosoftSoftwareAGINOACapeClearRogue Wave Software)纷纷将对WebService的支持列入发展计划,并推出支持WebService的应用开发系统或推出原有应用服务器的SOAP扩展,典型的如Microsoft .NETionaXMLBusRogueWaveXorbaCapeClearCapeConnect。它们的基本特点有:
1.  依赖于特定的WEB服务器或应用服务器提供服务器端的SOAP绑定
2.  支持两种模式的WebService开发:
n         自顶向下:首先给出WSDL描述,然后将其映射为服务端skeleton
n         自底向上:将已有的CORBA对象、EJBJavaClass包装为WebService,实现SOAPIIOPRMI)的桥接及IDL(或 java interface)到WSDL的自动转换
3.  服务的具体实现依赖于原有的服务器技术
4.  支持静态和动态方式构造SOAP请求
5.  私有的编程API
6.  集成各种辅助工具,如WSDL生成工具、XML消息查看器、通用测试客户端等

3.1.3    研究内容

对于WebService的研究工作主要包括WebService协议栈本身的研究、WebService与现有服务器技术结合标准化两方面,如:
n             基于XML的安全机制,如Security Assertions Markup Language (SAML)[IEEE-8]XML Key Management System (XKMS)[5]XML Access Control Markup Language(XACML)[IEEE-6]SOAPDIG[IEEE-7]W3C)等
n         基于UDDI的服务发布规范和服务检索
n         基于WebService的服务销售和计费模式
n         CORBASOAP协议的集成,如OMG的简单CORBA对象访问协议草案(SCOAP Submission[IEEE-9]
 
 

3.2     基于XML的数据交换

 
 

3.3     支持QoS的中间件

随着网络通信QoS 在理论上、标准上的逐渐完善和实践中的逐步推广实施,推动了操作系统层QoS 和中间件层QoS 的研究。在最新的CORBA 2.5规范[IEEE-14]中对QoS进行了详细的定义,涉及了如下的一些内容:实时CORBA、容错CORBACORBA Messaging minumCORBA等。

3.3.1    研究内容

QoS研究的趋势是提供一个QoS集成框架,在这个框架中能够集成多维QoS,包括实时性、可靠性、性能、安全和容错等。与中间件中的QoS相关的问题大体上包括:QoS定义机制、QoS映射机制、QoS控制机制、QoS管理机制、QoS监控机制、QoS协商机制。提供QoS的途径之一是利用OCI接口,通过私有的协议在中间件中集成QoS(例如通过IP Multicast实现容错服务)。中间件向应用提供的定义QoS的方法有:通过IDL定义语言、通过扩展后的IDL定义语言、通过专门的QoS定义语言、通过策略设置等
提高应用系统的自适应性是目前中间件中QoS研究的另一个目标。应用系统需要根据运行环境的动态变化而适应性的作出变化,所以需要中间件提供相应的机制使应用能够感知环境的变化同时采取不同的对策。反射式中间件是一个解决方案。
 

3.3.2    研究实例:

    QoS-A
英国Lancaster 大学计算机系的QoS-A是一个QoS体系结构,它提供了一个框架来指定和实现施运行于基于ATM的高性能网络之上的多媒体应用的性能属性。QoS-A提供“系统范围的QoS”,包括端系统、通信系统和网络。QoS-A体系结构由协议平面、QoS维持平面和流管理平面三个平面(plane)组成,它能够翻译QoS要求,预留由网络和操作系统提供的资源,并能透明的进行QoS适应(不需要应用干预),当QoS发生变化时可以通知应用程序。但是,QoS-A并不适合于开放的环境,由于与底层的系统紧密集成在一起,QoS-A无法与不同的资源预留协议交互。此外,它的应用领域被限制到多媒体系统,它的QoS机制不能被应用编程人员扩展。
  
   Q-RAM
Carnegie Mellon 大学的Q-RAM研究系统中具有多个应用,每个应用都有其多方面的QoS 需求并相互竞争多种资源的情况下,如何同时满足这些应用的QoS 需求,如何分配多种资源,使得整体效果最优。Q-RAM 的研究重点在资源的最优化分配,它第一次提出了多维QoS 和多维资源的概念,但是比较偏重于理论和数学模型。
 
    QUO
目前在CORBA 平台上进行QoS 研究的主要代表是BBN QUOWashington 大学的ACE+TAO,以及OMG 的一些支持QoS 的规范。
QUO的设计思想如下:客户QoS有一定期望,针对不同的QoS期望客户可能有不同的行为,系统在某一时刻的状态决定了系统在当前时刻可以提供的QoS客户可以根据当前的系统QoS状态,适应性地采取不同的行为。
QUO 设计了一个质量描述语言QDL,由合同描述语言CDL 、结构描述语言SDL 和资源描述语言RDL 组成。为了描述客户和某个对象间的QoS 合同,包括客户期望的QoS 和对象能提供的QoS ,监测和控制QoS 的系统对象,以及监测到QoS 改变时采取的行动,QUO提供了CDL。为了描述QUO 应用程序的结构和指定适应性行为,QUO提供了SDL。为了描述可以获得的系统资源及其状态,QUO提供了RDL。为了监控系统目前的状态,QUO在内核中增加了系统条件对象。
    
ACE+TAO
Washington 大学在QoS 方面的研究体现在TAO 中的调度服务和ACE 中的AQoSATAO调度服务为应用开发者提供了接口来指定对象操作的执行周期、最坏情况执行时间、重要程度、紧急程度等QoS 参数,根据系统中所有操作的QoS 进行调度分析,并映射到ORB 中的分发优先级。AQoSA 是在ACE 中提供了统一的QoS API 来为上层屏蔽底层的不同的QoS 协议和接口。这些QoS API可以通过TAO向应用提供,也可与高层的中间件服务集成。
 
Trinity学院的Quartz
爱尔兰都柏林Trinity 学院的Quartz是为了实现CORBA A/V Streaming 服务而设计和实现的一个QoS 框架结构,使得CORBA 应用可以传输实时媒体。QoS定义是通过CORBA A/V Streaming 服务的接口来指定的。Quartz是一个在开放系统中定义和实施QoSQoS体系结构,它基于可替换的组件,具有灵活性和可扩展性、支持QoS适应
                  
Twente大学的QoS集成方法
Twente大学的QoS集成方法的思想是利用特殊的协议来支持QoS,同时维护互操作性。它们成功地利用OCI接口使用特殊的协议扩展了ORB,实现了IP 组播,从而实现了容错QoS。为了实现IP 组播,它们修改了对象引用(IOR,IOR中包含了组的IP地址。这样就通过组抽象实现了副本透明性(Replication Transparancy)。
 

3.4     反射式中间件

现在中间件技术已运用于各个领域,如安全、事务处理、嵌入、实时等,但传统的中间件内部结构的不可见的、提供的服务是固定的、所使用的协议和采取的管理策略也是预先设定的。这使得中间件本身成为一个“死”的、不可进化的实体,它不能跟据平台、环境的变化或技术的发展动态的调整自已的功能和性能。例如,QoS框架需要中间件具有环境感知能力,即能够跟据网络连接状况的变化动态进行QoS的重配置,实现QoS的自适应管理。下一代的中间件应是:针对特定应用域是可配置的、可动态重配置和可进化的[IEEE-4]。反射式体系结构即是在这种背景下提出的。

3.4.1    技术概述

“反射”的思想最初来源于程序语言及操作系统。一个反射系统是指该系统提供描述自身行为、修改自身状态的能力。Pattie Maes1987年首次提出这一概念时,用causally connected self representation (CCSR)[10]描述“反射”的含义。这一方法的关键是提供元接口来支持对底层虚拟机的状态检查和修改[IEEE-14]。元接口提供获取中间件平台内部操作和结构的操作,并能在运行时刻修改它们。如何设计元接口是反射式中间件研究的中心内容,接口应足够通用,从而允许未来对平台的不可预见的修改,另一方面,又必须保证接口的暴露不致于破坏系统的完整性。
将反射机制运用于中间件,将使得中间件对环境具有更好的适应性,尤其是当中间件位于动态变化的环境(如群组通信、实时系统、嵌入式环境、移动计算环境)中时。以移动环境下的多媒体应用为例,当移动主机位通过高带宽的线缆接入时,网络的延迟很小;而当移动主机处于移动过程中,使用GSM或其它无线接入方式时,网络延迟和误码率则较大。反射式中间件能检测网络连接质量,并能根据条件变化自动的更替底层的发送机制。例如,当主机使用无线接入时,中间件可采用压缩比更高的模块来发送视频流。中间件可以检查模块间的依赖关系,实现模块的动态、自动替换,从而实现中间件系统的自动适应和演化。

3.4.2    研究现状

目前,反射式中间件的思想已在许多中间件及分布应用的设计与实现中有所体现,例如:
1.  Open ORB[IEEE-13]  OpenORB体系结构基于组件和反射两种技术来提高系统的可配置和可重配置能力。一个OpenORB的实例就是一个可在运行时配置和重配置的组件。提供反射机制的核心概述是元空间(metaspace),它由组件的运行环境支持。元空间是递归的(如下图所示),每一个应用组件提供提供元接口来访问底层运行环境的元空间,这个元空间又由组件构成,它些元级组件同样具有元接口来访问它们的运行环境。OpenORB的支持两层反射:结构反射和行为反射。结构反射处理特定组件的内容和结构;行为反射处理系统底层行为。
2.  the University of Illinois[IEEE-12][IEEE-15] 正在尝试使用反射思想为TAO引用动态重配置能力(dynamicTao),他们使用配置器来维护组件之间的依赖关系,可以动态地增加或解除一个组件。
3.  Trinity Colleage Dublin[IEEE-11][IEEE-15] 利用反射语言lguana来开发更开放和扩展性更好的中间件平台,可以使用反射语言提供的设施来访问或修改平台。他们还尝试在minimal CORBA中引入反射机制。
4.  Ecole des Mine de Nantes[IEEE-12]OpenCORBA 依赖于反射语言NeoClasstalk的动态ORB
5.  APM的中间件FlexiNet[IEEE-12] 允许程序员剪裁底层的通信机制 
6.  此外 TAOQuO[IEEE-15]等中间件中也采纳了反射机制
 

3.5     消息中间件

RPCROI机制对于C/S应用是适合的,它提供的是一种同步的请求/应答的交互模式。仅管CORBA中也提供了oneway消息、异步消息调用、消息路由等机制,但CORBA中的异步实现的并不是真正的异步,只是将等待应答的任务交给了另一个线程中的对象而已。这种程度的异步和消息管理不能满足某些应用的需求,尤其是那些分布于大量异构平台、要求异步和时间无关性的应用。这种情况下,消息中间件(MOM)和基于事件的中间件是更好的选择。

3.5.1    技术概述

MOM利用高效可靠的消息传递机制进行平台无关的数据交流,通过提供消息传递和消息排队模型,在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。基于消息的机制更多地适用于事件驱动的应用,当一个事件(如请求,或警示)发生时,消息中间件发送消息通知服务方应该进行何种操作。消息中间件可分为两类:广播方式和发布/订阅方式。目前流行的MOM中间件产品有IBMMQSeriesBEAMessageQ等。
消息中间件技术适用于松散的、异步交互的大规模分布系统,它的优点是:
n         通迅的双方具有时间无关性。通讯程序通过消息队列进行间接通迅,因为它们不必同时运行。
n         对应用程序的结构没有约束,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,多种通讯方式的构造不公增加应用程序的复杂性。
n         程序与网络复杂性相隔离,应用程序只需操作消息队列而维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等由MOM透明地完成。
 

3.6     移动中间件

移动计算的发展,使移动中间件成为中间件领域一个新兴的研究方向。今年IDC中间件市场分析报告集中关注移动中间件的发展,在一程度上说明了移动中间件的商业价值和研究价值。
移动中间件支持自动定位、跟踪移动用户,支持移动实体间的通信和协调,并提供异构系统间适当的安全机制。构建移动中间件的一个方案[IEEE-17]是基于现有的mobile agent平台,如IBMalget,为移动用户提供一个统一的虚拟环境及公共服务。
现在所知的研究项目及商业产品有:
n         欧洲的OnTheMove[IEEE-16]计划:至力于设计实现一个移动应用支撑环境 (MASE),它提供了一组移动API来访问MASE,从而隐藏底层网络的多样性、 Dartmouth Agent TCL
n         IBMBlueDrekar:一个基于蓝牙无线装置连接规则的Linux中间件
n         NetTech SystemExpressQ[IEEE-18] :支持企业数据的无线交换
 
 

4         发展趋势

中间件作为与应用联系最的紧密的基础软件,应用需求的发展在中间件上有最迅速、直接的映射。如何更好地解决分布应用面临的实际问题应成为中间件发展的最终目标。由于应用需求是多样的,所以中间件的发展方向也必然是多样的,没有一个通用的模式能囊括未来中间件的所有特征。但下述几个方向是可以考虑的:
1.  向企业应用和Internet应用,发展基于构件的信息集成的中间件
路线是“走XML集成之路”,研究的内容包括:
n         不同平台互操作
n         基于XML的信息资源整合
n         基于XML的数据管理
n         服务器的管理调度讲述
n         工作流程的模型定义、控制管理
2.  面向特定QoS要求,发展支持服务质量管理的中间件
研究内容包括:
n         面向特定领域的中间件,如实时中间件、容错中间件
n         基于CORBA的通用QoS框架
n         基于JavaQoS技术
3.  面向环境变化和技术进步,发展具有动态特性中间件
研究内容包括:
n         动态的链接管理技术
n         具有反射结构的自适应的中间件
n         不同设备、不同平台之间的自动发现
4.  面向移动设备,发展嵌入式中间件和移动中间件
此外,对于我国来说,是否能开发出易用的中间件产品也关系到本土中间件是否能与国外产品竞争。做中间难,但用好中间件更难,关键是将恰当的技术用在恰当的位置。
 
 
 
 
 
1.  www.  Jim Johnson aren Boucher Michael Hicks
2.  中国软件业十五专项规划思路 http://www.ChinaByte.com
3.  The QOS Provisioning Service (QPS), G. Fábián, A.T. van Halteren ,ECOOP 2001
4.  Middleware Challenges Ahead  Kurt Geibs  IEEE Computer June 2001
5.  XML Key Management System : www.
6.  xml.
7.  www.
8.  Security Assertions Markup Language: xml.
9.  Simple CORBA Object Access Protocal Submission  OMG orbs/00-09-03
10.               J. McAffer, "Metalevel Architecture Support for Distributed Objects," Proc. Reflection 96, Dept of Information Science, Tokyo University, 1996, pp 39–62.
11.               J. Dowling and V. Cahill, "Building a Dynamically Reconfigurable minimumCORBA Platform with Components, Connectors, and Language-Level Support," Proc. Workshop on Reflective Middleware (RM 2000), ACM Press, New York, Apr. 2000.
12.              The Design and Implementation of Open ORB 2  IEEE distributed system online vol.2 No.6 2001    Gordon S. Blair, Geoff Coulson, Anders Andersen, Lynne Blair, Michael Clarke, Fabio Costa, Hector Duran-Limon, Tom Fitzpatrick, Lee Johnston, Rui Moreira, Nikos Parlavantzas, and Katia Saikoski
13.              Adaptive and Reflective Middleware for QoS-Enabled CCM Applications        Nanbor Wang, Douglas C. Schmidt, Michael Kircher, Kirthika Parameswaran, www./dsonline
14.              Next Generation Middleware: Requirements, Architecture, and Prototypes  Frank Eliassen, Anders Andersen
15.              IEEE distributed system magazine : www./dsonline
16.              Middleware for a New Generation of Mobile Networks: The ACTS  nTheMove Project Hans-Georg Baumgarten Lothar Borrmann Torsten Köhler Stephen Pink Gerard Lacoste , OnTheMove home page: http://www./~onthemove
17.              Mobile Agent Middleware for Mobilecomputing  Paolo Bellavista, Cesare Stefanelli IEEE Computer March,2001
18.              NetTech System homepage : www.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多